Ir para conteúdo

Arquivado

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

ze_mauricio

PHP+MySQL Livro de Visitas

Recommended Posts

Boa noite, amigos! Solicito uma ajudinha outra vez. Trata-se de livro de visitas. A entrada eh atraves de formulario. Nesta etapa o arquivo processar.php até grava no banco mas emite a seguinte resposta na pagina:

 

"Warning: mysql_close(): supplied argument is not a valid MySQL-Link resource in /home/noticias/public_html/processar.php on line 41

Obrigado por assinar nosso livro de visitas."

 

Arquivo PROCESSAR.PHP ---------------------------------------------

 

<div id="principal">

 

<? require("conexao.inc"); //pega arquivo para conexão com configurações ?>

<body bgcolor="<?= $CFGfundopg ?>" text="<?= $CFGcorfontepg ?>" link="<?= $CFGlink ?>" vlink="<?= $CFGvlink ?>" alink="<?= $CFGalink ?>">

<?php

 

$nome = $_REQUEST['nome']; //pega o campo nome do formulário

$email = $_REQUEST['email']; //pega o campo email do formulário

$comentario = $_REQUEST['msg']; //pega o campo msg do formulário

$data = date("d/m/y - H:m:s"); //pega a data e hora atuais

 

-if (($nome != '') && ($email != '')) { //se o nome e o email não estiverem vazios

 

$SQLassina = "INSERT INTO mensagens (nome, email, comentario, data) VALUES ('$nome', '$email', '$comentario', '$data')"; //sql para inserir nova assinatura

mysql_query($SQLassina) or die ("Não foi possível assinar no guestbook!"); //executa a inserção

 

mysql_close($DB); //fecha a conexão ao database

echo "<center><font face=".$CFGfonte.">Obrigado por assinar nosso livro de visitas.</font></center>"; //mensagem de sucesso da inserção

}

else {

echo "<center><font face=".$CFGfonte.">Ops, insira seu nome e um e-mail!</font></center>"; //mensagem de erro por causa do nome e email inválidos

}

?>

<p <style type="text/css">

<!--

a:link {text-decoration: none; color: #FF0000}

a:visited {text-decoration: none; color: #004E98}

a:hover {text-decoration: underline; background: #ffffff; color: #FF0000}

a:active {text-decoration: none}

-->

</style>

<p align="center"><a href="ler_livro.php">Clique aqui para ler as mensagens no livro de visitas</a>

</div>

----------------------------------------------

 

Quando se clica no link para ver mensagens, o arquivo ler_livro.php mostra sempre o seguinte: "Não foi possível listar os ítens."

 

LER_LIVRO.PHP

 

<div id="principal">

<?

require("conexao.inc");

?>

<body bgcolor="<?= $CFGfundopg ?>" text="<?= $CFGcorfontepg ?>" link="<?= $CFGlink ?>" vlink="<?= $CFGvlink ?>" alink="<?= $CFGalink ?>">

<h2>LIVRO DE VISITAS</h2>

<?

@$comeca = $_REQUEST['pagina']; //pega a variável pagina sem mostrar erro se ela estiver vazia

if ($comeca == '') { // se comeca não tiver conteúdo (vazio)

$comeca = 0; //define comeca como 0 (zero)

$paginaatual = "1"; //define página atual como 1 (um)

}

elseif ($comeca == '1') { // se comeca estiver como 1 (um)

$comeca = 0; // define comeca como 0 (zero)

$paginaatual = "1"; //define página atual como 1 (um)

}

else { // caso não contenha nenhum dos dois valores acima

$paginaatual = $comeca; //define página atual com valor de comeca

$comeca = (($comeca - 1)*$DBexibido); //define comeca com valor dela - 1 (um) vezes o numero de registros a exibir

 

/*

exemplo do comando acima, comeca com 3 = (3-1)*5 = 10

assim a sql comecara a pegar os registros a partir do décimo registro

*/

}

 

$SQLler = "SELECT * from mensagens ORDER BY id DESC LIMIT ".$comeca.", ".$DBexibido; //comando SQL

/*

tradução do comando SQL:

seleciona todos campos na tabela mensagens

organizando em ordem decrescente de id

tendo um inicio no valor de $comeca

exibindo o numero defino de $DBexibido

*/

$executa = mysql_query($SQLler) or die("Não foi possível listar os ítens. <br><br><a href='index.php'>VOLTAR</a>"); //executa o comando SQL

 

while ($Linha_Reg = mysql_fetch_array($executa)){ //loop para pegar os registros e mostrá-los na página

$nome = stripslashes(htmlspecialchars($Linha_Reg["nome"])); //pega campo nome, tirando barras e transformando caracteres especiais em tags html

$email = stripslashes(htmlspecialchars($Linha_Reg["email"])); //pega campo email, tirando barras e transformando caracteres especiais em tags html

$data = htmlspecialchars($Linha_Reg["data"]); //pega campo data

$msg = nl2br(htmlspecialchars($Linha_Reg["comentario"])); //pega campo comentario, transformando caracteres especiais em tags html e traduzindo o enter

?>

<table width="470" border="1" align="center" cellpadding="3" cellspacing="1">

<tr>

<td width="158"><div align="right"><strong><font color="<?= $CFGcorcampo ?>" size="2" face="<?= $CFGfonte ?>">Nome:</font></strong></div></td>

<td width="354"><font color="<?= $CFGcorcampo ?>" size="2" face="<?= $CFGfonte ?>"><a href="mailto:<?= $email ?>"><?= $nome ?></a></font></td>

</tr>

<tr>

<td><div align="right"><strong><font color="<?= $CFGcorcampo ?>" size="2" face="<?= $CFGfonte ?>">Data:</font></strong></div></td>

<td><font color="<?= $CFGcorcampo ?>" size="2" face="<?= $CFGfonte ?>"><?= $data ?></font></td>

</tr>

<tr>

<td valign="top"><div align="right"><strong><font color="<?= $CFGcorcampo ?>" size="2" face="<?= $CFGfonte ?>">Comentário:</font></strong></div></td>

<td><font color="<?= $CFGcorcampo ?>" size="2" face="<?= $CFGfonte ?>"><?= $msg ?></font></td>

</tr>

</table>

<hr width="450" noshade>

<?php

}

---------------------------------------------------------------

 

Nao consegui descobrir onde errei, se alguem puder ajudar com uma dica, agradeço;

Compartilhar este post


Link para o post
Compartilhar em outros sites

sim o 'processar.php' nao esta mais retornando a linha de erro, so nao consigo ainda exibir os resultados em 'ler_livro.php', alterei a linha de mysql_close() tambem no 'ler_livro.php', grato pela ajuda amigo

Compartilhar este post


Link para o post
Compartilhar em outros sites

De onde vem esse request amigo ?

 

@$comeca = $_REQUEST['pagina'];
?

 

isso pode ser simplificado:

 

$SQLler = "SELECT * from mensagens ORDER BY id DESC LIMIT ".$comeca.", ".$DBexibido; //comando SQL
$executa = mysql_query($SQLler) or die("Não foi possível listar os ítens. <br><br><a href='index.php'>VOLTAR</a>"); 
while ($Linha_Reg = mysql_fetch_array($executa)){
por:

 

$SQLler = mysql_query("SELECT * FROM mensagens ORDER BY id DESC LIMIT '$comeca', '$DBexibido'")or die("Não foi possível listar os ítens. <br><br><a href='index.php'>VOLTAR</a>"); 
while ($Linha_Reg = mysql_fetch_array($SQLler)){
em fim, verifique corretamente seus códigos... não é preciso isso na hora de exibir os dados:

stripslashes - htmlspecialchars
stripslashes - htmlspecialchars
htmlspecialchars
isso é preciso na hora de inserir os dados no BANCO e não na hora de trase-los. não aparece nada e erro algum ? procure retirar os " @ " arrobas que para esconder os erros.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, infelizmente continua a mostra apenas a mensagem "Nao foi possivel listar os itens", como disse nao tenho muita experiencia, trata-se dce um script que peguei p fazer,

o codigo esta assim agora:

obrigado pela ajuda..

 

LER_LIVRO.PHP

 

 

<div id="principal">

<?

require("conexao.inc");

?>

<body bgcolor="<?= $CFGfundopg ?>" text="<?= $CFGcorfontepg ?>" link="<?= $CFGlink ?>" vlink="<?= $CFGvlink ?>" alink="<?= $CFGalink ?>">

<h2>LIVRO DE VISITAS</h2>

<?

$comeca = $_REQUEST['pagina']; //pega a variável pagina sem mostrar erro se ela estiver vazia

if ($comeca == '') { // se comeca não tiver conteúdo (vazio)

$comeca = 0; //define comeca como 0 (zero)

$paginaatual = "1"; //define página atual como 1 (um)

}

elseif ($comeca == '1') { // se comeca estiver como 1 (um)

$comeca = 0; // define comeca como 0 (zero)

$paginaatual = "1"; //define página atual como 1 (um)

}

else { // caso não contenha nenhum dos dois valores acima

$paginaatual = $comeca; //define página atual com valor de comeca

$comeca = (($comeca - 1)*$DBexibido); //define comeca com valor dela - 1 (um) vezes o numero de registros a exibir

 

/*

exemplo do comando acima, comeca com 3 = (3-1)*5 = 10

assim a sql comecara a pegar os registros a partir do décimo registro

*/

}

 

$SQLler = mysql_query ("SELECT * FROM mensagens ORDER BY id DESC LIMIT '.$comeca.', '.$DBexibido;'") or die ("Nao foi possivel listar os itens. <br><br>

<a href='index.php'>VOLTAR</a>");

 

/*

tradução do comando SQL:

seleciona todos campos na tabela mensagens

organizando em ordem decrescente de id

tendo um inicio no valor de $comeca

exibindo o numero defino de $DBexibido

*/

$executa = mysql_query($SQLler) or die("Não foi possível listar os ítens. <br><br><a href='index.php'>VOLTAR</a>"); //executa o comando SQL

 

while ($linha_Reg = mysql_fetch_array ($SQLler)){ //loop para pegar os registros e mostrá-los na página

 

?>

<table width="470" border="1" align="center" cellpadding="3" cellspacing="1">

<tr>

<td width="158"><div align="right"><strong><font color="<?= $CFGcorcampo ?>" size="2" face="<?= $CFGfonte ?>">Nome:</font></strong></div></td>

<td width="354"><font color="<?= $CFGcorcampo ?>" size="2" face="<?= $CFGfonte ?>"><a href="mailto:<?= $email ?>"><?= $nome ?></a></font></td>

</tr>

<tr>

<td><div align="right"><strong><font color="<?= $CFGcorcampo ?>" size="2" face="<?= $CFGfonte ?>">Data:</font></strong></div></td>

<td><font color="<?= $CFGcorcampo ?>" size="2" face="<?= $CFGfonte ?>"><?= $data ?></font></td>

</tr>

<tr>

<td valign="top"><div align="right"><strong><font color="<?= $CFGcorcampo ?>" size="2" face="<?= $CFGfonte ?>">Comentário:</font></strong></div></td>

<td><font color="<?= $CFGcorcampo ?>" size="2" face="<?= $CFGfonte ?>"><?= $msg ?></font></td>

</tr>

</table>

<hr width="450" noshade>

<?php

}

 

$SQLconta = "SELECT id from mensagens"; //SQL para contar os registros

$EXEconta = mysql_query($SQLconta) or die("Não foi possível construir o link"); //executa SQL

$conta = 0; //começa com contagem de 0 (zero)

 

while ($CONTAGEM = mysql_fetch_array($EXEconta)){ //loop para pegar registros e ir contando

$conta++; //somando um a $conta

}

 

$TOTALpaginas = ($conta/$DBexibido); //divide a conta dos registros com numero a ser exibido para TOTAL de páginas

 

if (false == is_int($TOTALpaginas)) { //verifica se $TOTALpaginas não deu um número inteiro

$TOTALpaginas = (intval($TOTALpaginas) + 1); //tranforma $TOTALpaginas em inteiro, como o intval arredonda para baixo soma mais um

}

 

global $PHP_SELF; //define global $PHP_SELF , comando exigido pelo novo PHP4

echo "<center>";

 

if ($paginaatual <= 1) { //codigo para pagina anterior

echo "<font face=".$CFGfonte." size=2>Página Anterior     </font>"; }

else {

echo '<b><a href="'.$PHP_SELF.'?pagina='.($paginaatual - 1).'"><font size="2" face='.$CFGfonte.'>Página Anterior</font></a></b>     '; }

 

$j = 1;

while($j <= $TOTALpaginas) { //enquanto $j for menor ou igual a $TOTALpaginas, faz o loop

if ($j != $paginaatual) { //se $j for diferente dá página atual, faz o link

echo ' <b><a href="'.$PHP_SELF.'?pagina='.$j.'"><font face='.$CFGfonte.' size="2">'.$j.'</font></a></b> ';

}

else { //se for igual a página atual, não faz o link

echo ' <b><font face='.$CFGfonte.' size="2">'.$j.'</font></b> ';

}

$j++; //vai somando pro loop ter um fim

}

 

if ($paginaatual >= $TOTALpaginas) { //código para próxima página

echo "<font face=".$CFGfonte." size=2>     Próxima Página</font>"; }

else {

echo '     <b><a href="'.$PHP_SELF.'?pagina='.($paginaatual + 1).'"><font size="2" face='.$CFGfonte.'>Próxima Página</font></a></b> '; }

 

echo "</center>";

 

mysql_close(); //fecha conexão com banco de dados

?>

</div>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dórian, O SQL da tabela eh este, talvez eu esteja trabalhando num script php muito avançado p mim, se tivesse como simplificar tudo isso, de qualquer forma grato pela atenção, amigo,

 

CREATE TABLE `mensagens` (

`id` int(2) NOT NULL auto_increment,

`nome` varchar(50) NOT NULL default '',

`email` varchar(50) NOT NULL default 'sem email',

`comentario` text NOT NULL,

`data` varchar(20) NOT NULL default '',

PRIMARY KEY (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='tabela que contem os registros' AUTO_INCREMENT=15 ;

 

 

abraço

ze mauricio

Compartilhar este post


Link para o post
Compartilhar em outros sites

*
tradução do comando SQL:
seleciona todos campos na tabela mensagens
organizando em ordem decrescente de id
tendo um inicio no valor de $comeca
exibindo o numero defino de $DBexibido
*/
$executa = mysql_query($SQLler) or die("Não foi possível listar os ítens. <br><br><a href='index.php'>VOLTAR</a>"); //executa o comando SQL
sessa parte, comenta ou apaga essa ultima linha...

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

ainda nao deu... ficou assim:

 

$SQLler = mysql_query ("SELECT * FROM mensagens ORDER BY id DESC LIMIT '.$comeca.', '.$DBexibido;'") or die ("Nao foi possivel listar os itens");

 

while ($linha_Reg = mysql_fetch_array ($SQLler)){

//loop para pegar e mostrar

 

continua mostrando "Nao foi possivel listar..."

 

continuo aqui na luta p fazer funcionar,

te agradeço ,

abraco

Compartilhar este post


Link para o post
Compartilhar em outros sites

$SQLler = mysql_query ("SELECT * FROM mensagens ORDER BY id DESC LIMIT ".$comeca.", ".$DBexibido.";") or die ("Nao foi possivel listar os itens");

while ($linha_Reg = mysql_fetch_array ($SQLler)){
tenta assim

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

ainda nao amigo... mas vou procurar um script mais adequado ao meu nivel 'php-maker' iniciante, porque nao estou ainda compreendendo este script, tem comandos ali que nao faço a menor ideia....

agradeço sua ajuda,

abracos

Compartilhar este post


Link para o post
Compartilhar em outros sites

entao tenta colocar manualmente msm:

$SQLler = mysql_query ("SELECT * FROM mensagens ORDER BY id DESC LIMIT 10;") or die ("Nao foi possivel listar os itens");

while ($linha_Reg = mysql_fetch_array ($SQLler)){

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.