Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Bonne

[Resolvido] Erro muito simples

Recommended Posts

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

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

Nossa, esqueci do

else
	{
		mysql_close($conn);
		header('Location: ../index.php?user='.$_POST[razao_social]."&updated=yes");
	}
Hahahaha

Eu 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.