Bonne 0 Denunciar post Postado Julho 1, 2010 Estou com um problema em meu script, assim que mando ele dar o update, a página updatedb.php fica em branco e não retorna nenhum erro (ele está gravando os dados perfeitamente). Tenho o formulário de cadastro de clientes que está assim: Formulário <?php while($row = mysql_fetch_array($result, MYSQL_ASSOC)) { $user_id = $row['id']; $razao_social = $row['razao_social']; $ramo_de_atividade = $row['ramo_de_atividade']; $endereco = $row['endereco']; $tel = $row['tel']; $CNPJ = $row['CNPJ']; $municipio = $row['municipio']; $site = $row['site']; $cargo = $row['cargo']; $email_cargo = $row['email_cargo']; $secretaria = $row['secretaria']; $notes = $row['notes']; } if (isset($_GET['updated'])) { echo "<p class=\"good\">Informações Atualizadas com Sucesso!</p>"; } ?> <form action="updatedb.php" method="post"> <label>razao_social</label> <input disabled="true" name="razao_social" type="text" value="<?php echo $razao_social; ?>" class="medium" /> <span class="subtext">Razão Social não pode ser alterado por motivos de segurança</span> <label>ramo_de_atividade</label> <input name="ramo_de_atividade" type="text" value="<?php echo $ramo_de_atividade; ?>" class="medium" /> <label>endereco</label> <input name="endereco" type="text" value="<?php echo $endereco; ?>" class="medium" /> <label>tel</label> <input name="tel" type="text" value="<?php echo $tel; ?>" class="medium" /> <label>CNPJ</label> <input name="CNPJ" type="text" value="<?php echo $CNPJ; ?>" class="medium" /> <label>municipio</label> <input name="municipio" type="text" value="<?php echo $municipio; ?>" class="medium" /> <label>site</label> <input name="site" type="text" value="<?php echo $site; ?>" class="medium" /> <span class="subtext">* Formato do site deve ser http://www.google.com.br (exemplo)</span> <label>cargo</label> <input name="cargo" type="text" value="<?php echo $cargo; ?>" class="medium" /> <label>email_cargo</label> <input name="email_cargo" type="text" value="<?php echo $email_cargo; ?>" class="medium" /> <label>secretaria</label> <input name="secretaria" type="text" value="<?php echo $secretaria; ?>" class="medium" /> <label>Obs.</label> <textarea name="notes" cols="30%" rows="10" class="submit block"><?php echo $notes; ?></textarea> <input name="submit" type="submit" value="Salvar" class="submit" /> <input name="submit" type="submit" value="Remover" class="submit" /> </form> O Script de update <?php //Acessando o Banco de Dados include('../../config.php'); //Fazendo a Conexao $conn = mysql_connect ($dbhost, $dbuser, $dbpass) or die ("Não consigo me comunicar com o banco de dados porque: " . mysql_error()); mysql_select_db ($dbname) or die ("Problemas ao tentar acessar banco de dados '$dbname', erro: " . mysql_error()); if($_POST['submit'] == "Salvar") { $sql = "UPDATE clientes SET razao_social = '$_POST[razao_social]', ramo_de_atividade = '$_POST[ramo_de_atividade]', endereco = '$_POST[endereco]', tel = '$_POST[tel]', CNPJ = '$_POST[CNPJ]', municipio = '$_POST[municipio]', site = '$_POST[site]', cargo = '$_POST[cargo]', email_cargo = '$_POST[email_cargo]', secretaria = '$_POST[secretaria]', notes = '$_POST[notes]' WHERE razao_social = '$_POST[razao_social]'"; if (!mysql_query($sql,$conn)) { die('Erro: ' . mysql_error()); } } elseif($_POST['submit'] == "Remover") { $deleteSQL = "DELETE FROM clientes WHERE razao_social = '$_POST[razao_social]'"; if (!mysql_query($deleteSQL,$conn)) { die('Erro: ' . mysql_error()); } mysql_close($conn); header('Location: ../index.php?updated=yes'); } ?> Ele me retorna uma página em branco, não estou conseguindo visualizar o erro... Será que alguém pode me dar uma força, é coisa muito simples que as vezes não percebemos. Muito obrigado Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Julho 1, 2010 você não mandou o script fazer mais nada... ai fica em branco mesmo.. olha lá: if($_POST['submit'] == "Salvar") { $sql = "UPDATE clientes SET razao_social = '$_POST[razao_social]', ramo_de_atividade = '$_POST[ramo_de_atividade]', endereco = '$_POST[endereco]', tel = '$_POST[tel]', CNPJ = '$_POST[CNPJ]', municipio = '$_POST[municipio]', site = '$_POST[site]', cargo = '$_POST[cargo]', email_cargo = '$_POST[email_cargo]', secretaria = '$_POST[secretaria]', notes = '$_POST[notes]' WHERE razao_social = '$_POST[razao_social]'"; if (!mysql_query($sql,$conn)) { die('Erro: ' . mysql_error()); } }beleza. ele faz o updade.. se tiver erro mostra, se não.. não faz nada... coloque oque deveria acontecer uai.. Compartilhar este post Link para o post Compartilhar em outros sites
Bonne 0 Denunciar post Postado Julho 1, 2010 Nossa, esqueci do else { mysql_close($conn); header('Location: ../index.php?user='.$_POST[razao_social]."&updated=yes"); }HahahahaEu falei que tem algumas coisas que deixamos passar e são coisas bobas! Brigadao!!!! Droga, agora vi que ele não está fazendo o update, ele retorna o "OK" mas não esta gravando os dados nem excluindo... Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Julho 1, 2010 troque: if (!mysql_query($sql,$conn)) por: $query = mysql_query( $sql )or die( mysql_error() ); if (!$query ) e habilite as mensagens de erro: http://forum.imasters.com.br/index.php?/topic/375800-orientacoes-para-uma-boa-participacao/ se ainda tiver dificuldades, poste exatamente o erro que aparecer Compartilhar este post Link para o post Compartilhar em outros sites
Bonne 0 Denunciar post Postado Julho 1, 2010 Boa William, cara, habilitei os erros conforme você me pediu, mas acontece que ele retorna a mensagem de "Sucesso", volta para página de edição mas nao atualiza os dados, fora que ele não imprime nenhum erro na tela. :S Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Julho 1, 2010 cara, meio que 'impossível' ele não ter te mostrado nenhum erro, depois de você ter colocado o mysql_error() e o ini_set dos erros.. como ficou teu script ? o updatedb.php ? o único erro que vejo desse tipo, é se o teu WHERE não estiver casando com nenhuma linha.. ai ele vai executar uma operação de UPDATE que não vai atingir linha nenhuma, e não vai dar erro em nada. Confira isso. Compartilhar este post Link para o post Compartilhar em outros sites
Bonne 0 Denunciar post Postado Julho 1, 2010 Também achei isso "sobrenatural", mas vamos lá. updatedb.php <?php //Acessando o Banco de Dados include('../../config.php'); //Fazendo a Conexao $conn = mysql_connect ($dbhost, $dbuser, $dbpass) or die ("Não consigo me comunicar com o banco de dados porque: " . mysql_error()); mysql_select_db ($dbname) or die ("Problemas ao tentar acessar banco de dados '$dbname', erro: " . mysql_error()); if($_POST['submit'] == "Salvar") { $sql = "UPDATE clientes SET razao_social = '$_POST[razao_social]', ramo_de_atividade = '$_POST[ramo_de_atividade]', endereco = '$_POST[endereco]', tel = '$_POST[tel]', CNPJ = '$_POST[CNPJ]', municipio = '$_POST[municipio]', site = '$_POST[site]', cargo = '$_POST[cargo]', email_cargo = '$_POST[email_cargo]', secretaria = '$_POST[secretaria]', notes = '$_POST[notes]' WHERE razao_social = '$_POST[razao_social]'"; //if (!mysql_query($sql,$conn)) $query = mysql_query( $sql )or die( mysql_error() ); if (!$query ) { die('Erro: ' . mysql_error()); } else { mysql_close($conn); header('Location: ../index.php?user='.$_POST[razao_social]."&updated=yes"); } } elseif($_POST['submit'] == "Remover") { $deleteSQL = "DELETE FROM clientes WHERE razao_social = '$_POST[razao_social]'"; if (!mysql_query($deleteSQL,$conn)) { die('Erro: ' . mysql_error()); } mysql_close($conn); header('Location: ../index.php?updated=yes'); } ?> Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Julho 1, 2010 troca: <?php //Acessando o Banco de Dados include('../../config.php'); por: <?php ini_set('display_errors', true); error_reporting(E_ALL); //Acessando o Banco de Dados include('../../config.php'); e a tua string, sql, deixa ela assim: $sql = "UPDATE `clientes` SET `ramo_de_atividade` = '{$_POST['ramo_de_atividade']}', `endereco` = '{$_POST['endereco']}', `tel` = '{$_POST['tel']}', `CNPJ` = '{$_POST['CNPJ']}', `municipio` = '{$_POST['municipio']}', `site` = '{$_POST['site']}', `cargo` = '{$_POST['cargo']}', `email_cargo` = '{$_POST['email_cargo']}', `secretaria` = '{$_POST['secretaria']}', `notes` = '{$_POST['notes']}' WHERE `razao_social` = '{$_POST['razao_social']}'"; o único erro que vejo desse tipo, é se o teu WHERE não estiver casando com nenhuma linha.. ai ele vai executar uma operação de UPDATE que não vai atingir linha nenhuma, e não vai dar erro em nada. Confira isso. Compartilhar este post Link para o post Compartilhar em outros sites
Bonne 0 Denunciar post Postado Julho 1, 2010 Cara, fiz tudinho do jeito que você mostrou acima, mas ele continua não imprimindo erros e também não salva os dados. Impossível isso! Quando é para adicionar um cliente, ele adiciona normalmente. percebo que na url, ele deveria trazer o valor "index.php?user=razao_social&update=yes" mas ele esta retornando assim "index.php?user=&updated=yes" PS: Problema tbm não está no config. pois utilizo o mesmo tanto para inserir quando para o update Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Julho 1, 2010 seguinte: <?php ini_set('display_errors', true); error_reporting(E_ALL); //Acessando o Banco de Dados include('../../config.php'); var_dump( $_POST ); se não retornar nada.. ai confira se o teu browser está 'No Modo Online' (Arquivo > Modo Offline deve estar desmarcado) Compartilhar este post Link para o post Compartilhar em outros sites
Bonne 0 Denunciar post Postado Julho 1, 2010 Meu browser está em modo Online sim William, o retorno do Dump: array(11) { ["ramo_de_atividade"]=> string(18) "Teste de atividade" ["endereco"]=> string(18) "Teste de endereço" ["tel"]=> string(12) "11-5063 0000" ["CNPJ"]=> string(11) "47898477995" ["municipio"]=> string(10) "São Paulo" ["site"]=> string(17) "www.google.com.br" ["cargo"]=> string(14) "teste de cargo" ["email_cargo"]=> string(20) "google@google.com.br" ["secretaria"]=> string(5) "Maria" ["notes"]=> string(19) "teste de obsevacoes" ["acao"]=> string(6) "Salvar" } Compartilhar este post Link para o post Compartilhar em outros sites
Evandro Oliveira 331 Denunciar post Postado Julho 1, 2010 Perfeito, só ta faltando a razão social, que não vi na lista aí! Compartilhar este post Link para o post Compartilhar em outros sites
Bonne 0 Denunciar post Postado Julho 1, 2010 Perfeito, só ta faltando a razão social, que não vi na lista aí! Boa Evandro, a razao social esta setada com modo disabled="true" por necessidades internas da empresa, onde só eu posso alterar com autorizacao do gerente. Compartilhar este post Link para o post Compartilhar em outros sites
Evandro Oliveira 331 Denunciar post Postado Julho 1, 2010 O correto na marcação é disabled="disabled" <input type="text" name="razao-social" disabled="disabled"> Só vale como true/false em Javascript. Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Julho 1, 2010 bacana.. disabled faz com que o campo não seja enviado !! se você não quer que editem, use: readOnly !!! <input type="text" name="razao-social" readonly="readonly" /> e outra, notou o problema de charset ali ? nos acentos ? então, foi como suspeitei.. 'o erro de não aparecer erros', é que por não estar encontrando nada no WHERE do UPDATE, rodava uma consulta que afetava 0 linhas, e validava como true o retorno do mysql_query(), pois a consulta não falhou, ela apenas atualizou 0 linhas :lol: Compartilhar este post Link para o post Compartilhar em outros sites
Evandro Oliveira 331 Denunciar post Postado Julho 1, 2010 disabled faz com que o campo não seja enviado !! Firefox? Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Julho 1, 2010 disabled faz com que o campo não seja enviado !! Firefox? hum.. até 'onde sei', esse é o comportamento correto desse atributo html.In this example, the INPUT element is disabled. Therefore, it cannot receive user input nor will its value be submitted with the form. :lol: ^_^ se não, não existira diferença entre disabled e readonly, concorda ? http://www.htmlcodetutorial.com/forms/_INPUT_DISABLED.html DISABLED does the same thing but takes it further: the user cannot use the field in any way, not to highlight the text for copying, not to select the checkbox, not to submit the form. In fact, a disabled field is not even sent if the form is submitted. ;) Compartilhar este post Link para o post Compartilhar em outros sites
Evandro Oliveira 331 Denunciar post Postado Julho 1, 2010 Então já vamos partir pra direção correta da coisa. Se o problema for segurança de dados, o ideal é utilizar COOKIE e até mesmo SESSION. Qualquer piá-de-prédio aplica um javascriptzinho na barra de endereços, insere um XSS no seu sistema e sai falando que é hacker. O Opera facilita ainda mais, acesso direto ao source com LiveEdition, seus atributos vão para o espaço. Hoje em dia isso serve mais para fins estéticos e semânticos do que segurança propriamente dito. Se não pode ser editado em circunstância nenhuma, exiba como texto puro mesmo e salve a razão social em SESSION. Compartilhar este post Link para o post Compartilhar em outros sites
Bonne 0 Denunciar post Postado Julho 1, 2010 Sempre usei o campo disabled e nunca me trouxe problemas, eu nem sabia da existência deste campo "readOly", valeu pela dica William! Então o problema é com o "charset"? Mas eu achei o campo "READONLY" problemático, para um usuário "leigo" isto seria um campo que ele nao consegue editar ( se eu nao colocar uma observacao ), ja no disabled, ele vê que nao pode selecionar o texto e que o acesso é restrito. Então já vamos partir pra direção correta da coisa. Se o problema for segurança de dados, o ideal é utilizar COOKIE e até mesmo SESSION. Qualquer piá-de-prédio aplica um javascriptzinho na barra de endereços, insere um XSS no seu sistema e sai falando que é hacker. O Opera facilita ainda mais, acesso direto ao source com LiveEdition, seus atributos vão para o espaço. Hoje em dia isso serve mais para fins estéticos e semânticos do que segurança propriamente dito. Se não pode ser editado em circunstância nenhuma, exiba como texto puro mesmo e salve a razão social em SESSION. Concordo contigo Evandro, mas o sistema vai rodar só internamente, a segurança que eu falei não precisa ser aplica a está dimensão. Seria algo tipo "vamos ver se eles prestam atenção no que fazem" (disse meu gerente), mas achei legal seu levantamento cara!Obrigado pela dica e sorry pelo flood. Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Julho 1, 2010 provavel que sim.. verifique em que formato os arquivos estão salvos, e se bate com a meta tag enviada, e com os headers que possivelmente o servidor tem por default. Compartilhar este post Link para o post Compartilhar em outros sites