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

karva

[PHP]Guestbook - Outro

13 mensagens neste tópico

Ja vi muitos guestbooks, por isso decidi fazer um meu.

Aqui vai:

<?
$connection=mysql_connect("localhost", "user", "pass") or die ("Oops, nao foi possivel ligar a base de dados...");
mysql_select_db("db",$connection);

$name = $_POST["txt_name"];
$len = strlen($name);
// apenas escrever para a base de dados, se há um nome
if ($len > 0)
{
	$email = $_POST["txt_email"];
	$com = $_POST["txt_com"];
	$date = time();
	$ip = getenv("REMOTE_ADDR");

	$query = "INSERT INTO livro (autoID, nome, email, com, data_auto, ip) VALUES (NULL, '$name', '$email', '$com', '$date', '$ip')";
	mysql_query($query,$connection) or die (mysql_error());
}
?>

<html>
<head>
<title>Livro de Visitas</title>
</head>
<body>
<center>
<form action="<? echo $_SERVER['PHP_SELF']; ?>" method="post">
<font face="Arial, Helvetica, sans-serif" size="1">
Nome: <input type="text" name="txt_name"> 
Email: <input type="text" name="txt_email"><br><br>
Comentário:<br>
<textarea style="width: 75%" rows="10" name="txt_com"></textarea><br>
<input type="submit" value="Enviar">
</font>	
</form>
<br>
<br>
<table bgcolor="#AAAAAA" border="0" width="75%" cellspacing="1" cellpadding="2">
<?
$connection=mysql_connect("localhost", "user", "pass") or die ("Oops, nao foi possivel ligar a base de dados...");//alterar dados da ligacao
mysql_select_db("db",$connection);
$query = "SELECT * FROM livro ORDER BY data_auto";
$result = mysql_query($query, $connection);

for ($i = 0; $i < mysql_num_rows($result); $i++)
{
	$name = mysql_result($result, $i, "nome");
	$email = mysql_result($result, $i, "email");
	$email_len = strlen($email);
	$com = mysql_result($result, $i, "com");
	$show_com = nl2br($com);
	$date_auto = mysql_result($result, $i, "data_auto");
	$show_date = date ("H:i:s m/d/Y", $date_auto);

	if ($i % 2)
	{
		$bg_color="#EEEEEE";
	}
	else
	{
		$bg_color="#E0E0E0";
	}		

	echo '
	<tr>
	<td width="50%" bgcolor="'.$bg_color.'">
		<font face="arial" size="2">';
		if ($email_len >0)
	{
		echo '<b>Nome:</b> <a href="mailto:'.$email.'">'.$name.'</a>';
	}

	else 
	{
				echo '<b>Nome:</b> '.$name;
	}
	echo '
	<br>
	<b>Comentário:</b> '.$show_com.'
	</font>
	</td>
	<td width="1%" valign="top" nowrap bgcolor="'.$bg_color.'">
	<font face="arial" size="2">
	<b>Data: </b> '.$show_date.'
	</font>
	</td>
	</tr>
';
}
?>
</table>
</center>
</body>
</html>

Codigo sql

CREATE TABLE livro (
  autoID int(10) unsigned NOT NULL auto_increment,
  nome varchar(64) collate latin1_general_ci NOT NULL,
  email varchar(64) collate latin1_general_ci NOT NULL,
  com text collate latin1_general_ci NOT NULL,
  data_auto int(10) unsigned NOT NULL,
  ip text collate latin1_general_ci NOT NULL,
  PRIMARY KEY  (autoID)
);

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não é necessario estares a fazer mais que uma ligação à base de dados ;)

em vez de

$name = $_POST["txt_name"];
$len = strlen($name);
// apenas escrever para a base de dados, se há um nome
if ($len > 0)
{

podes usar:

// apenas escrever para a base de dados, se há um nome
if (!empty(trim($_POST['txt_name'])))
{

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

so mudava outra coisita....

no campo da data chapava-lhe com um timestamp por questoes de simplicidade

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

yup me too, utilizo sempre timestamp para as datas nos meus projectos, so na data de nascimento é que nao utilizo porque o timestamp começa a partir de 1 d janeiro de 1971 :S lol

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

pa, so nao uso a timestamp, pk e mais facil de guardar na base de dados, pk assim fika so um numero

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Desculpa usar o teu tópico para meter o meu mas não gosto de ver fóruns cheios de tópicos com assuntos repetidos.

Este é um Guestbook que fiz com base num ficheiro .txt que fica mais levezinho. Indica nome, data automática da mensagem (em inglês  :D) e mail bem como a mensagem em si.

Tudo numa página (mais o ficheiro que pode ser editado livremente apenas através do .txt)

Resultado aqui.

<html>
<head>
<title>Livro de Visitas</title>
</head>
<body>
<!--Livro de Visitas tendo por base um ficheiro .txt
Versao 1.5
Adiante da Versao 1.4-> Formatacao de texto diferente para a parte de quem colocou a mensagem.
Por: Joao Romao a.k.a. Romanovs-->
<?php
if ($nome || $email) {
$ficheiro=fopen("livro.txt","a"); /*Abre o ficheiro .txt*/
$data = date("j \d\e F \d\e Y, G:i"); /*Data em inglês    "dia" de "mes" de "ano", "horas(24)":"Minutos" (Formato do Horário e de Inverno)*/
fputs($ficheiro,"\n");
fputs($ficheiro,"$nome|$email|$texto|$data"); /*Mete os dados no ficheiro.txt separados por uma linha vertical "|"*/
fclose($ficheiro);    /*Fecha o ficheiro .txt*/
print ("Mensagem adicionada com sucesso.");  /*Mensagem de sucesso*/
print ("<a href=\"livro.php\"><p>Voltar</a>");
} else {
?>
<h2>Livro de Visitas</h2>
<br>Por favor preenche todos os dados pedidos
<form method="POST" action="<?php $PATH_INFO ?>">
<table>
<tr><td><p>Nome: </td><td><input type="text" name="nome" size="20"></p></td></tr>
<tr><td><p>E-mail: </td><td><input type="text" name="email" size="20"></p></td></tr>
<tr><td valign="top">Mensagem: </td><td><textarea rows="6" name="texto" cols="32"><textarea></td></tr>
<tr><td><p><input type="submit" value="Enviar" name="adicionar"> </p></td></tr>
</table></form>
<?php
}
?>
<!--A partir daqui serve para ver os registos existentes-->
<?php
if (file_exists("livro.txt")) {       /*verifica se o ficheiro .txt existe*/
$ficheiro= fopen("livro.txt", "r");       /*abre o ficheiro .txt*/
       print "<table border=1>";
       print "<tr> <td width=\"100%\"><p align=\"center\">
             <b>Mensagens Existentes</b></td></tr>";
      while(!feof($ficheiro)) {
      $linha= fgets($ficheiro, 1024);
      $array= explode ("|", $linha); /*coloca os dados que estão divididos pela linha vertical "|" na tabela*/
       $nome= $array[0];
       $email= $array[1];
       $texto= $array[2];
       $data= $array[3];
       print "<tr> <td width=\100%\"><p align='left' style=\"font-size:12px;\">Colocado por <a href=\"mailto:$email?subject=O meu site\">$nome</a> em $data</font></td></tr>";  /*Quem colocou com link para enviar mail e a data em que o texto foi submetido*/
       print "<td width=\"100%\"><p align=\"left\">$texto</td></tr>"; }  /*A mensagem propriamente dita*/
       print "</table>";
       fclose($ficheiro);
} else {
       print "Não é possível ver as mensagens existentes."; /*mensagem de erro*/
       }
       ?>
       <!--Nota: Depois de apagarem o ficheiro .txt para limpar o livro apaguem a primeira linha que aparece automaticamente-->
</body>
</html>

O ficheiro .txt fica assim:

João Romão|juaorumao@hotmail.com|Teste feito às treze trinta e quatro|25 de March de 2007, 12:34

Por favor digam o que acham (meu primeiro ficheiro php :D;)

Eu depois vou actualizando os melhoramentos

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

@Romanovs

Alterei o teu script para satisfazer as minhas necessidades e para melhorar... hope you don't mind ;)

Fica aqui um exemplo de como utilizar o PDB para armazenar dados..

Demo:

http://www.kingless.net/guestbook/index.php

Download:

http://www.kingless.net/download.php?filename=guestbook.tar

Source Code:

http://www.kingless.net/download.php?filename=guestbook.php;source

<html>
<head>
<title>Livro de Visitas</title>
</head>
<body>
<?php

//inclui o pdb
include_once( 'pdb.php' );

//Iniciliza o PDB
$db = new pdb_init( 'kingless', 'password', 'guestbook' );

//Verifica se a database "guestbook" já existe
if(!$db->db_exists( 'guestbook' )) {

//Cria uma base de dados com o nome guestbook 
$db->create_db( 'guestbook' );

//Cria uma tabela com o nome livro e com 4 colunas (nome, email, texto, data );
$db->create_table( 'livro', 'nome', 'email', 'msg', 'data' );
}

if(isset( $_POST['enviar'] ) AND !empty( $_POST['msg'] ) AND !empty( $_POST['nome'] )) {


$nome = $_POST['nome'];
$email = empty( $_POST['email'] ) ? '' : $_POST['email'];
$data = date("j \d\e F \d\e Y, G:i");
$msg = nl2br( $_POST['msg'] );

//Insere os dados na tabela livro
$query = array( 'nome' => $nome, 'email' => $email, 'data' => $data, 'msg' => $msg );

if($db->insert( 'livro', $query )) {
echo 'Mensagem adicionada com sucesso'; 
} else {
echo 'Não foi possivel enviar a mensagem';
}

?>
<a href="index.php"><p>Voltar</a>
<?
return;
}
?>

<h2>Livro de Visitas</h2>
<form method="post" action="<?php echo basename( __FILE__ );?>">
<table>
<tr><td><p>Nome: </td><td><input type="text" name="nome" size="20"></p></td></tr>
<tr><td><p>E-mail: </td><td><input type="text" name="email" size="20"></p></td></tr>
<tr><td valign="top">Mensagem: </td><td><textarea rows="6" name="msg" cols="32"></textarea></td></tr>
<tr><td align="right" colspan="2"><p><input type="submit" value="enviar" name="enviar"> </p></td></tr>
</table></form>
<?php

//Seleciona os dados que estão na tabela
if($row = $db->select( 'nome,data,msg,email', 'livro' )) {

echo '<table border="1">';
echo '<tr> <td width="100%"><p align="center"><b>Mensagens no Livro</b></td></tr>';

// $db->values tem o numero de valores retornados pelo $db->select   (print_r( $row ))
for($x = 0; $x < $db->values; $x++) {
	$nome = $row['nome'][$x];
	$data = $row['data'][$x];
	$msg = $row['msg'][$x];
	$email = empty( $row['email'][$x] ) ? '' : $row['email'][$x];


	echo '<tr> <td width="100%"><p align="left">Enviado por <a href="mailto:'. $email .'">'. $nome .'</a> em '. $data .'</font></td></tr>';
	echo '<td width="100%"><p align="left">'. $msg .'</td></tr>';

}

echo '</table>';
}

?>
</body>
</html>

PDB - PHP DATABASE

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Um dia destes hei-de me lembrar de estudar melhor as possibilidades de bases de dados. Por enquanto voume ficar pelos .txt e aproveitar ao máximo ;)

Já agora como altero o tamanho das letras num comando php?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Um dia destes hei-de me lembrar de estudar melhor as possibilidades de bases de dados. Por enquanto voume ficar pelos .txt e aproveitar ao máximo ;)

O exemplo que dei acima é de um gestor que eu desenvolvi que utiliza ficheiros .txt para armazenar os dados... é mais fácil utilizar este gestor do que MySQL etc...

Já agora como altero o tamanho das letras num comando php?

Não dá...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

nao dá??? entao e aqui nos foruns o rank, numero de mensagens e isso aparece mais pequeno que no resto

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

nao dá??? entao e aqui nos foruns o rank, numero de mensagens e isso aparece mais pequeno que no resto

Isso é feito com HTML...

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