Jump to content

Recommended Posts

Posted

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)
);

Proud LEIC-A@IST student!

Posted

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'])))
{
Posted

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

  • 8 months later...
Posted

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  😄 ) 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 😄😉

Eu depois vou actualizando os melhoramentos

Posted

@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

Posted

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?

Posted

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á...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.