• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

DMBoss

Guestbook em php

31 mensagens neste tópico

será que alguém me poderia ajudar a criar um livro de visitas em php?

ficava muita agradecido

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

É das coisas mais simples que há.

Ando há algum tempo para fazer um tutorial ou um screencast sobre isso... por motivos diversos ainda não o fiz.

Se ler em inglês não for um obstáculo, encontras bastantes no google.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

já consegui descobrir o problema

só que ainda n sei como o resolver

já criei a base de dados só que n consigo criar as tabelas

alguém me pode dizer como faço isso?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Usas um programa de administração de bases de dados e clicas onde diz "criar tabela nova" ou qualquer coisa parecida.

Tens é que ter permissões para isso

Estás a correr isso onde? No teu computador? Num servidor remoto? Não tens acesso a uma coisa tipo phpmyadmin?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

eu consigo aceder ao phpmyadmin só que depois na consigo criar as tabelas porque nunca trabalhei com DB's

as tabelas que o joninho utilizou foram estas

Requesitos:
Saltar Logo para o DEFAULT nos cases, porque é o primeiro passo que a página faz, por isso é mais facil de esplicar assim
MySql:
Tabela Guestbook
Campos:
  id tipo inteiro limite 255 (por exemplo)
  de tipo varchar limite 50 (aqui vai ser o remetente da mensagem a ser postada)
  mensagem tipo text (aqui vai ser armazenada a mensagem)
  date tipo varchar limite 50

e como o código que eu estou a utilizar e do dele

terão de ser estas as tabelas que tenho de criar

só n sei como as criar

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

No phpMyAdmin clicas em criar tabela e escolhes as definições como estão no quote que fizeste, não tem nada de complicado.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Imagem

ta aqui um screen do phpmyadmin

se alguém me poder ajudar a criar estas tabelas

Requesitos:
Saltar Logo para o DEFAULT nos cases, porque é o primeiro passo que a página faz, por isso é mais facil de esplicar assim
MySql:
Tabela Guestbook
Campos:
  id tipo inteiro limite 255 (por exemplo)
  de tipo varchar limite 50 (aqui vai ser o remetente da mensagem a ser postada)
  mensagem tipo text (aqui vai ser armazenada a mensagem)
  date tipo varchar limite 50

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Metes no nome Guestbook, e 4 no número de fields. Depois aparece um popup e metes essas configs.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

 CREATE TABLE `a8373046_gja`.`Guestbook` (
`id` INT( 225 ) NOT NULL ,
`de` VARCHAR( 50 ) NOT NULL ,
`mensagem` TEXT NOT NULL ,
`date` VARCHAR( 50 ) NOT NULL
) ENGINE = MYISAM 

supostamente a tabela ja esta criada

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

alguem me pode dar uma dica e que o problema ainda se mantem

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Que erro é que ele te dá?

Se só soubermos que dá erro e mais nada não podemos ajudar muito ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sim, eu experimentei, mas sem sabermos o código de inserir os comentários, não podemos ajudar.

Isso deve ter a haver com o código SQL, mostra o que tens para fazer as querys e verifica se os nomes das tabelas correspondem.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

o código e este

fui o joninho, que o postou

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

<title>Mensagens - GuestBook</title>

<style type="text/css">
<!--
body {
        background-color: #156564;
        background-image: url(lol9.jpg);
}
.style2 {
        color: #0099FF;
        font-size: 18px;
        font-family: Verdana, Arial, Helvetica, sans-serif;
}
.style1{
        color:#000000;
        font-size:18px;
        font-family:Geneva, Arial, Helvetica, sans-serif
}
-->
</style><body>

</head>
<table width="499" border="1" bordercolor="#CC3300" cellpadding="0" cellspacing="0" align="center">
  <!--DWLayoutTable-->

  <tr>
    <td width="495" height="185" valign="top" bgcolor="#CCCCCC">
       
       
        <?php
/* Ligacao a base de dados, substituir:
SERVER: pelo vosso servidor
USER: pelo vosso user da base de dados
PASS: pela vossa password da base de dados
BASE_DE_DADOS: pela vossa Base de dados */

$dbh=mysql_connect ("SERVER", "USER", "PASS") or die ('Não é possivel aceder à base de dados porque: ' . mysql_error());
mysql_select_db ("BASE_DE_DADOS");

?>

<?php
// aqui a variavel $var vai receber um valor introduzido no endereço por exemplo index.php?action=lol a variavel $var vai ficar com o conteudo "lol", que é para depois usar os cases em vês de 2 páginas, como é cases e a variavel var logo no principio tem o conteudo "" e nao tenho nenhuma case para esse conteudo irá ser redireccionado para o default.

$var=$_GET["action"];
//abrir os cases
switch($var){
//case Enviar
case "enviar":

//bem vindo ao case enviar XD lol aqui é onde vai receber o conteudo do formulario para enviar para a base de dados...
//a variavel date vai ficar com a data de hoje, e esta a função.
$date = date("j/n/Y");
//a variavel nome vai receber o conteudo do formulario onde voce inseriu o nome..
$nome = $_POST["nome"];
//a variavel mensagem vai receber o conteudo do formulario onde voce interiu a mensagem, o nl2br é para fazer paragrafos ao longo do texto, respectivamente pelos paragrafos k meter..
$mensagem = nl2br($_POST["mensagem"]);
//query para inserir o conteudo das variaveis na base de dados
$query= "INSERT INTO `Guestbook` (`de` , `mensagem`, `date` ) VALUES ('$nome', '$mensagem',''$date')";
//se a query for bem sucedida entao apresenta o texto: "mensagem enviada" e uma hiperligação para voltar ao index.php
if(mysql_query($query)){
echo "mensagem enviada!!!<br>";
echo '<a href=index.php>Voltar</a>';
//senao apresenta o texto: "mensagem nao foi enviada ocorreu um erro..." e uma hiperligacao para voltar ao index.php
}else{
echo "mensagem nao foi enviada ocorreu um erro...<br>";
echo '<a href=index.php>Voltar</a>';
}

//fexar o case ESTA ACABADO O SCRIPT DO GUESTBOOK 
break;

//entao, o primeiro passo que a pagina faz é entrar aqui. e fazer o que o script manda...

default:

//aqui fazemos uma query para  bd, que vai seleccionar o conteudo da tabela Guestbook
$query="SELECT * FROM `Guestbook` WHERE 1";
//fazemos a query para dentro da variavel $nome, que vai ficar uma array. os nomes das variaveis podem ser alterados por si, desde que use direito e mude em todo lado..
$nome=mysql_query($query);
/* agora fazemos um ciclo para imprimir no ecrã tudo o que tiver a array $nome tiver, nao sei bem explicar o ciclo XD mas sei que é para isso.
ou seja imprime o que tiver na tabela, menos o id, se quiser tb pode imprimir o id, basta meter um echo $titulo[1], dependendo da posição desse campo...*/
                        while($titulo = mysql_fetch_row($nome)){
                                                                //imprime o remetente da mensagem...   
                        echo '<br><span class="style2">De: </span>'.'<span class="style1">'.$titulo[1].'</span>';
                                                                //imprime a data do local..
                        echo '<br><span class="style2">Data: </span>'.'<span class="style1">'.$titulo[4]."</span><br>";
                                                               //e por fim imprime a mensagem
                        echo '<br><span class="style2">Mensagem: </span><br>'.'<span class="style1">'.$titulo[2].'</span><br>';
                       //separador das mensagens... fica mais bonito, assim pode separar umas das outras..                      echo "==================================================================================";
// fexar o ciclo
}


//aqui fica o formulario para inserir na base de dados

?>
//action e para onde o form vai mandar os dados, neste caso vai mandar para a nossa case enviar, porque vai meter o conteudo enviar na variavel e entao vai entrar na case "enviar" precebido? 
<form action="index.php?action=enviar" method="post">
Nome:
  <br />//aqui e a insercao do nome
    <input type="text" name="nome"/>
  <br />
    Mensagem:  
<br />
// agora a da mensagem
    <textarea name="mensagem" cols = "70" rows="8"></textarea><br />
//estes sao os botoes submit para submeter o formulario e o reset para limpar tudo
        <input type="submit" value="Enviar"/>
        <input type="reset" value="Limpar tudo"/>  
//fexar o formulario
</form>
<?
//e fexar o case default, agora faz de conta que uma pessoa mete texto no formulario, entao o script vai saltar para o case "enviar". dirija-se agora ao case"enviar"
break;
}
?></td>
  </tr>
</table>
</body>
</html>
<?php
//fexa a ligacao a base de dados
mysql_close($dbh);

?>

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tenta isto.

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

<title>Mensagens - GuestBook</title>

<style type="text/css">
<!--
body {
        background-color: #156564;
        background-image: url(lol9.jpg);
}
.style2 {
        color: #0099FF;
        font-size: 18px;
        font-family: Verdana, Arial, Helvetica, sans-serif;
}
.style1{
        color:#000000;
        font-size:18px;
        font-family:Geneva, Arial, Helvetica, sans-serif
}
-->
</style><body>

</head>
<table width="499" border="1" bordercolor="#CC3300" cellpadding="0" cellspacing="0" align="center">
  <!--DWLayoutTable-->

  <tr>
    <td width="495" height="185" valign="top" bgcolor="#CCCCCC">
       
       
        <?php
/* Ligacao a base de dados, substituir:
SERVER: pelo vosso servidor
USER: pelo vosso user da base de dados
PASS: pela vossa password da base de dados
BASE_DE_DADOS: pela vossa Base de dados */

$dbh=mysql_connect ("SERVER", "USER", "PASS") or die ('Não é possivel aceder à base de dados porque: ' . mysql_error());
mysql_select_db ("BASE_DE_DADOS");

?>

<?php
// aqui a variavel $var vai receber um valor introduzido no endereço por exemplo index.php?action=lol a variavel $var vai ficar com o conteudo "lol", que é para depois usar os cases em vês de 2 páginas, como é cases e a variavel var logo no principio tem o conteudo "" e nao tenho nenhuma case para esse conteudo irá ser redireccionado para o default.

$var=$_GET["action"];
//abrir os cases
switch($var){
//case Enviar
case "enviar":

//bem vindo ao case enviar XD lol aqui é onde vai receber o conteudo do formulario para enviar para a base de dados...
//a variavel date vai ficar com a data de hoje, e esta a função.
$date = date("j/n/Y");
//a variavel nome vai receber o conteudo do formulario onde voce inseriu o nome..
$nome = $_POST["nome"];
//a variavel mensagem vai receber o conteudo do formulario onde voce interiu a mensagem, o nl2br é para fazer paragrafos ao longo do texto, respectivamente pelos paragrafos k meter..
$mensagem = nl2br($_POST["mensagem"]);
//query para inserir o conteudo das variaveis na base de dados
$query= "INSERT INTO `Guestbook` (`de` , `mensagem`, `date` ) VALUES (\''$nome'\', \''$mensagem'.\, \''.$date.'\')";
//se a query for bem sucedida entao apresenta o texto: "mensagem enviada" e uma hiperligação para voltar ao index.php
if(mysql_query($query)){
echo "mensagem enviada!!!<br>";
echo '<a href=index.php>Voltar</a>';
//senao apresenta o texto: "mensagem nao foi enviada ocorreu um erro..." e uma hiperligacao para voltar ao index.php
}else{
echo "mensagem nao foi enviada ocorreu um erro...<br>";
echo '<a href=index.php>Voltar</a>';
}

//fexar o case ESTA ACABADO O SCRIPT DO GUESTBOOK 
break;

//entao, o primeiro passo que a pagina faz é entrar aqui. e fazer o que o script manda...

default:

//aqui fazemos uma query para  bd, que vai seleccionar o conteudo da tabela Guestbook
$query="SELECT * FROM `Guestbook` WHERE 1";
//fazemos a query para dentro da variavel $nome, que vai ficar uma array. os nomes das variaveis podem ser alterados por si, desde que use direito e mude em todo lado..
$nome=mysql_query($query);
/* agora fazemos um ciclo para imprimir no ecrã tudo o que tiver a array $nome tiver, nao sei bem explicar o ciclo XD mas sei que é para isso.
ou seja imprime o que tiver na tabela, menos o id, se quiser tb pode imprimir o id, basta meter um echo $titulo[1], dependendo da posição desse campo...*/
                        while($titulo = mysql_fetch_row($nome)){
                                                                //imprime o remetente da mensagem...   
                        echo '<br><span class="style2">De: </span>'.'<span class="style1">'.$titulo[1].'</span>';
                                                                //imprime a data do local..
                        echo '<br><span class="style2">Data: </span>'.'<span class="style1">'.$titulo[4]."</span><br>";
                                                               //e por fim imprime a mensagem
                        echo '<br><span class="style2">Mensagem: </span><br>'.'<span class="style1">'.$titulo[2].'</span><br>';
                       //separador das mensagens... fica mais bonito, assim pode separar umas das outras..                      echo "==================================================================================";
// fexar o ciclo
}


//aqui fica o formulario para inserir na base de dados

?>
//action e para onde o form vai mandar os dados, neste caso vai mandar para a nossa case enviar, porque vai meter o conteudo enviar na variavel e entao vai entrar na case "enviar" precebido? 
<form action="index.php?action=enviar" method="post">
Nome:
  <br />//aqui e a insercao do nome
    <input type="text" name="nome"/>
  <br />
    Mensagem: 
<br />
// agora a da mensagem
    <textarea name="mensagem" cols = "70" rows="8"></textarea><br />
//estes sao os botoes submit para submeter o formulario e o reset para limpar tudo
        <input type="submit" value="Enviar"/>
        <input type="reset" value="Limpar tudo"/> 
//fexar o formulario
</form>
<?
//e fexar o case default, agora faz de conta que uma pessoa mete texto no formulario, entao o script vai saltar para o case "enviar". dirija-se agora ao case"enviar"
break;
}
?></td>
  </tr>
</table>
</body>
</html>
<?php
//fexa a ligacao a base de dados
mysql_close($dbh);

?>

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tenta a sugestão do scorch, e se não der, faz assim:

Nesta parte

}else{
echo "mensagem nao foi enviada ocorreu um erro...<br>";
echo '<a href=index.php>Voltar</a>';
}

altera para:

}else{
echo "mensagem nao foi enviada ocorreu um erro:".mysql_error()."<br>";
echo '<a href=index.php>Voltar</a>';
}

e vamos ficar a saber se é erro da base de dados, que quase certo que é.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

como tinhas dito softclean o erro e na DB

Mensagem não enviada, ocorreu um erroYou have an error in your SQL syntax; 
check the manual that corresponds to your MySQL server version for the right syntax to use near '7/3/2009')' at line 1

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

É erro no formato da data. No teu script, a variável data em vez de

$date = date("j/n/Y");

tem de ter um valor date, que deverá ser algo como:

$date = date("Y-m-d H:i:s");

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

não posso testar agora porke o sistema esta em manutenção

assim que poder dou o feedback

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Coloca aqui o script que usaste para criar a base de dados, o CREATE TABLE Guestbook ...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

No campo da BD, no da data, tem uma propriedade que em vez de ser Varchar é DATETIME, escolhe esse para a data.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora