Jump to content


Photo

$nome E $mensagem Não Aparecem No Exibir.php


  • Faça o login para participar
3 replies to this topic

#1 E-vens

E-vens

    Novato no fórum

  • Usuários
  • 2 posts
  • Sexo:Não informado

Posted 17/06/2007, 14:00

OK! Eu sou iniciante no PHP, peguei um SCRIPT pronto e tô estudando ele. Agora tô tentando refazê-lo, mas tô com um problema. (Na verdade tive 800 problemas, mas resolvi 799 delets).

Primeiro, aos dados:

MURAL.PHP

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head>	<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">	<meta name="author" content="Tran Nhat Thanh">	<title>MURAL DE RECADOS</title></head><body><form action="inserindo.php" method="post" name="mural" id="Mural"><table width="450" border="1" cellspacing="0" cellpadding="3"><tr><td width="111"><div align="right">Nome:</div></td><td width="339"><input name="nome" type="text" id="nome" size="30"></td></tr><tr><td valign="top"><div align="right">Mensagem:</div></td><td><textarea name="mensagem" cols="30" rows="10" id="mensagem"></textarea></td></tr><tr><td height="29" colspan="2" valign="top"><div align="center"><input type="submit" name="submit" value="Inserir no banco de dados"></div></td></tr></table></form></body></html>

CONECTAR.PHP


INSERINDO.PHP

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head>	<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">	<meta name="author" content="Tran Nhat Thanh">	<title>Untitled 5</title></head><body><?php// Ativa esse arquivo primeiro, pra depois começar o restorequire("conectar.php");// Pegando a data$data = date('Y-m-d');// Pegando a hora$hora = date("H:i:s");// Inserindo valores na tabela tb_mural$sqlinserir = mysql_query("INSERT INTO tb_mural (id_mensagem, nome, mensagem, data, hora) VALUES (NULL, '$nome', '$mensagem', '$data', '$hora')");//Realiza uma açao no mysql$sqlinserir or die (mysql_error());// Se foi inserido com sucesso...echo "Na data $data e na hora $hora<br>$nome disse:<br>$mensagem";?></body></html>

EXIBIR.PHP

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head>	<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">	<meta name="author" content="Tran Nhat Thanh">	<title>Untitled 1</title></head><body><?phprequire("conectar.php");$sql = "SELECT * FROM tb_mural";$limite = mysql_query("$sql");while ($sql = mysql_fetch_array($limite)) {	$id_mensagem = $sql["id_mensagem"];	$nome = $sql["nome"];	$mensagem = $sql["mensagem"];	$data = $sql["data"];	$hora = $sql["hora"];		echo "Mensagem do id $id_mensagem<br>$nome<br>$mensagem<br>Na data $data e na hora $hora<br><br>";}?></body></html>


O problema é:
O NOME E MENSAGEM não aparecem no exibir.php
Fica apenas:

Mensagem do id 1


Na data 2017-06-20 e na hora 12:42:23

Mensagem do id 2


Na data 2017-06-20 e na hora 12:42:32

Mensagem do id 3


Na data 2017-06-20 e na hora 12:47:56


Onde deviam aparecer o nome e a mensagem, fica em branco.

Aqui está minha tabela configurada:
Posted Image

E minha tabela com os dados preenchidos:

Posted Image

PHP 5, MySQL 5, Apache 1.3

Aguardo respostas!

Abraços, E-vens :)

#2 Paulo André

Paulo André

    Why so serious?

  • Ex-Admins
  • 5114 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte - MG
  • Interesses:O.Q.F.J.?

Posted 17/06/2007, 14:23

Não exibe porque não tem na tabela não existe valores para estes campos. Em nenhum dos registro, segundo a figura que você posto.

Agora, não está inserindo porque provavelmente não está achando a origem de $nome e $mensagem porque estas variáveis não foram inicializadas. É certo que deveria estar puxando do formulário, mas para isto, a diretiva register_globals do seu php.ini deve estar on.

Mas como isso não é recomendável usar, faça assim no arquivo inserindo.php:
<?php
	$sqlinserir = mysql_query("INSERT INTO tb_mural (id_mensagem, nome, mensagem, data, hora)
							   VALUES (NULL, '".$_POST['nome']."', '".$_POST['mensagem']."', '$data', '$hora')");
?>

Flws...
(y)Até mais
Paulo André G Rodrigues,
ex-administrador Fórum WMO.


www.CanalDev.com.br

#3 E-vens

E-vens

    Novato no fórum

  • Usuários
  • 2 posts
  • Sexo:Não informado

Posted 17/06/2007, 14:49

Sim, ouvi dizer que não é recomendável deixar o register_globals = on. Aproveitando o tópico, poderia me dizer o por quê?

Edit:
Agora estou recebendo o seguinte erro no inserindo.php:
Column count doesn't match value count at row 1


Consegui arrumar!

Obrigado!!

Edição feita por: E-vens, 17/06/2007, 16:32.


#4 victorhb

victorhb

    24 Horas

  • Usuários
  • 489 posts
  • Sexo:Masculino
  • Localidade:Brasília-DF

Posted 17/06/2007, 18:21

Não é recomendável pois o nome de qualquer variável que não tenha sido inicializada pode ser mudada senão tomar precauções. Exemplo tirado do php.net.

<?php
// define $authorized = true somente se o usuário for autenticado
if (authenticated_user()) {
	$authorized = true;
}
// Porque nós não inicializamos $authorized como false, ela pode ser
// definida através de register_globals, como usando GET auth.php?authorized=1
// Dessa maneira, qualquer um pode ser visto como autenticado!
if ($authorized) {
	include "/highly/sensitive/data.php";
}
?>

Com register globals você pode passar parâmetros chave/valor para a página e automaticamente ao enviar os dados será criada a variável com o valor, tanto faz por $_POST ou $_GET. No caso ali usando auth.php?authorized=1, o PHP iria criar a variável authorized com valor 1, e iria incluir os dados sigilosos ali no fim, independente do retorno da função authenticated_user.

Pra usar register globals=on você tem que inicializar as variáveis antes de usá-las, por exemplo se eu colocar no começo do script, $authorized=FALSE; , sempre que o script for inicializado a variável será setada como FALSE e só mudará para TRUE, se passar na filtragem da função authenticated_user().




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq