Zpět na seznam článků     Číst komentáře (9)     Verze pro tisk

Guestbook v PHP a Mysql

Autor: D@Mike   
18.4.2004

Pokud si chcete na svoje stránky naprogramovat guestbook v PHP pomocí MySQL, tak tohle je článek přesně pro vás...


Dnes si ukážeme jak vytvořit v PHP guestbook za pomocí databáze MySql.
Pokud čtete tento článek měli byste umět alespoň základy práce s MySql.

Začneme vytvořením tabulky ve Vaší MySQL databázi. Tabulka se bude jmenovat "guestbook" a bude obsahovat následujicí pole.

NÁZEV - TYP - EXTRA //komentáře

ID - INT(11) - auto_increment - PRIMARY //id číslo příspěvku
JMENO - VARCHAR(255) //jméno nebo přezdnívka přidávajicího
EMAIL - VARCHAR(255) //email přidávajicího
WEBADRESA - VARCHAR(255) //adresa webu přidávajicího
TEXT - TEXT //text vzkazu
DATUM - VARCHAR(255) //datum přidání vzkazu


Soubor s SQL příkazem najdete dole ke stažení spole se všemi ostatními skripty.

Po vytvoření tabulky naprogramujeme hlavní stránku guestbooku. Ta bude obsahovat formulář, script na zobrazovnání příspěvků
a bude se jmenovat "index.php".
Začneme formulářem.

-------------------------------------------
<form action=pridej.php>
<div align=center>
<table><tr><td>Jméno</td><td><input type=text name=jmeno></td></tr>
<tr><td>Email</td><td><input type=text name=email></td></tr>
<tr><td>Webadresa</td><td><input type=text name=webadresa></td></tr>
<tr><td colspan=2>Text zprávy:</td></tr>
<tr><td colspan=2><textarea name=text cols=30 rows=5></textarea></td></tr>
<tr><td colspan=2><input type=submit value="Přidat vzkaz"></td></tr>
</table>
</div>
</form>

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

Velmi důležité jsou názvy polí formuláře, protože pod těmito jmény budou uloženy hodnoty polí ve skriptu pridej.php .
Nyní si ukážeme první PHP skript a to na zobrazování příspěvků.

-------------------------------------------
<?
$conn = MySQL_Connect("localhost","uživatel","heslo"); // připojení k serveru
MySQL_Select_db("databaze"); // výběr databáze

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

V předchozích dvou řádcích dosaďte údaje za "localhost" - adresa mysql (host), "uživatel" - uživatel databáze, "heslo" - heslo
do databáze, "databáze" - název databáze ve které je umístěna naše tabulka guestbook. Timto se náš skript připojí na hostitele
a vybere příslušnou databázi.

-------------------------------------------
$sql = MySQL_Query('SELECT * FROM guestbook');
$pocetprispevku=mysql_num_rows($sql);
$pomocnecislo=1;

for ($x=$pocetprispevku/10; $x >0;$x=$x-1):

$pomocnecislo=$pomocnecislo-1;

echo"<a href=index.php?od=$pomocnecislo>";

$pomocnecislo++;

echo"$pomocnecislo - ";

$pomocnecislo=$pomocnecislo+9;

echo"$pomocnecislo</a> ";

$pomocnecislo++;

$pocetprispevku=$pocetprispevku-10;
endfor;

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

Tato část skriptu zajistí možnost listovnání guestbookem po 10 příspěvcích.
Dále je nutné zadané příspěvky zobrazit.

-------------------------------------------
if($od==""):
$ods=0;
else:
$ods=$od;
endif;

$sql = MySQL_Query("SELECT * FROM guestbook ORDER BY ID DESC LIMIT $ods,10");
While($pole = mysql_fetch_array($sql)):

$id = $pole['id'];
$jmeno = $pole['jmeno'];
$email = $pole['email'];
$webadresa = $pole['webadresa'];
$text = $pole['text'];
$datum = $pole['datum'];

echo "
<hr><p style='margin-top: 0; margin-bottom: 0' align='center'>$jmeno<br><a href=mailto:$email>$email</a><br>
";

if(!$webadresa==""):
echo"<a href=$webadresa target=_blank>$webadresa</a><br>";
endif;

echo"$datum<br>$text</p>";
endwhile;
mySQL_Close($conn);
?>

-------------------------------------------
A tímto je index.php hotový. Ještě malé vysvětlení.
První podmínka zadává do proměnné "ods" hodnotu promměné "od", která je posílána v ceste (index.php?od=0) při výběru zobrazení příspěvků.
Tato promměná "od" nejde použít do SQL příkazu (nevím proč) a proto je přenesená do proměnné "ods".
Dále už jde jen o vypsání dat z tabulky pomocí cyklu.
Ještě něco k SQL dotazu. Pokud nechápete co znamená to "ORDER BY ID DESC LIMIT $ods,10", tak ORDER BY ID DESC znamená, že
dotaz seřadí vybraná data z tabulky podle položky id od nějvětšího po nejmenší. Pokud byste to chtěli na opak, stačí smazat DESC.
LIMIT $ods,10 znamená, že dotaz vybere pouze 10 záznamů z tabulky, začínajicí záznamem, který je v tabulce na místě, které
vyjadřuje proměnná "ods".
Teď je třeba vytvořit "pridej.php", abychom mohly přidávat příspěvky.
-------------------------------------------
<?
if($jmeno=="" OR $email=="" OR $text==""):
echo"Nebylo vyplněno pole Jmeno,Email nebo Text!<br><a href=index.php>Zpět</a>";
else:

$conn = MySQL_Connect("localhost","uživatel","heslo"); // připojení k serveru
MySQL_Select_db("databáze"); // výběr databáze

$datum=date("Y-m-d");

$sql = "INSERT INTO guestbook VALUES ('','$jmeno','$email','$webadresa','$text','$datum')";
$result = mysql_query($sql);

mySQL_Close($conn);

header ("Location: index.php");
endif;
?>

-------------------------------------------
A na závěr něco k tomuto skriptu. První podmínka zjistí jestli byly vyplněny všechny potřebné pole formuláře. Pokud ano
příspěvek se přidá do tabulky stránka se přesměruje zpět na index.php.

Pokud se vám to neche přepisovat můžete si už hotovej guestbook stáhnout ZDE.
A to je pro dnešek vše.


Líbil se Vám článek?
Budeme potěšeni, pokud vás zaujme také reklamní nabídka

Social Bookmarking

     





Hodnocení/Hlasovalo: 2.57/35

1  2  3  4  5    
(známkování jako ve škole)