go
komunikace  internet  prog.  web-prog.  hardware  software  bezpečnost  magazín  disk.fórum
   

Návštěvní kniha se smajlíky

počet názorů: 29   poslední: 22.10.2004 19:14:56   číst názory   přidat názor   vytisknout

Nechcete už mít na svých stránkách návštěvní knihu od serverů, kteří poskytují tyto služby(návštěvní knihy, CHATy, ankety atd.), ale chete mít nějakou svou, ale nevíte jak na ni? Tak potom přímo pro Vás je tento článek.


V tomto článku bych Vám chtěl předvést návštěvní knihu nebo také nazývaný gbook. Bude tam použito jak JavaScript tak PHP a MySQL.
Navštěvní kniha bude obsahovat vše, co by návštěvní kniha obsahovat měla. Bude obsahovat smajlíky, ale také třeba zvýraznění textu atd. No a myslím si, že bychom se mohli nyní pustit už do práce.


Za prvé bychom si měli vytvořit tabulku do MySQL databáze:


CREATE TABLE `kniha` (
`id` int(11) NOT NULL auto_increment,
`jmeno` varchar(150) NOT NULL default '',
`datum` varchar(150) NOT NULL default '',
`prispevek` text NOT NULL,
`mejl` varchar(150) default NULL,
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;


Takže. Toto byla struktura tabulky. Nebudeme ji ničím zatim plnit, to si potom vyzkoušíme přes formulář. Ale řekneme si, co jaký sloupec znamená:

Název sloupce Popis
id Identifikační číslo každého příspěvku. Číslo je jediné.
jmeno Jméno či přezdívka autora příspěvku.
datum Datum, kdy byl příspěvek vložen.
prispevek Text příspěvku.
mejl E-mail autora příspěvku.


Tak, teď jsme si vysvětlili také, co jaký slopec znamená v databázi a můžeme se vrhnout na skript.


Po vytvoření tabulky v databázi si vytvoříme soubor kniha.php.

Nyní, když máme vytvořen soubor kniha.php tak do něj začneme zapisovat. A co bude jako první? První zápis bude JavaScript na smajlíky.


<SCRIPT language=JavaScript>
<!--
function add_smile(t){ 
this.addmessage.text.value+= '' + t + ''; 
}
-->
</SCRIPT>



A trošku tak stručně, co to znamená. Je to vložení určitého znaku(určitých znaků) do formuláře addmessge a do pole s názvem text. Pokud někdo stále nechápe, tak doporučuji přečíst si nějaký článek o JavaScriptu.

Tak, máme první znaky v souboru kniha.php. A teď budeme vkládat formulář. A ten bude vypadat nějak takto:


<?php
echo "
<table width=\"90%\" border=\"0\">
<tr>
<td>
<FORM name=\"addmessage\" action=\"kniha.php?poz=0\" method=\"POST\"> 
<INPUT type=\"hidden\" value=\"".Date("d.m.Y")."\" name=\"datum\"> 
<table>
<tr>
<td>
Vaše jméno: 
</td>
<td>
<INPUT type=\"text\" name=\"name\" maxlength=\"150\">
</td>
</tr>

<tr>
<td>
Váš e-mail: 
</td>
<td>
<INPUT type=\"text\" value=\"@\" name=\"mejl\" maxlength=\"150\">
</td>
</tr>

<tr>
<td>
Váš příspěvek: 
</td>
<td>
<TEXTAREA name=\"text\" cols=\"30\" rows=\"4\"></TEXTAREA>
</td>
</tr>

<tr>
<td align=\"center\" colspan=\"2\">
<INPUT type=\"submit\" value=\"Odeslat příspěvek\" name=\"SUBMIT\">
</td>
</tr>
</table>
</FORM>
</td>



Takže, tady jsme měli takovou, když to řeknu 1. část formuláře. Určitě jste si všimli, že není ukončeno uvozovkami a středníkem. Je to tím, že pokračování formuláře je až nyní a vysvětlení bude po 2. části formuláře:


<td valign=\"top\">
*b* <b>tučný text</b> */b*<br>
*i* <i>text kurzivou</i> */i*<br>
*u* <u>podtržený text</u> */u*<br>
*br* ==> odřádkování<br>
*center* ==> začátek centrování<br>
*/center* ==> konec centrování<br><br>
<br>
<a href=\"javascript:add_smile(' :-) ')\">
<img src=\"smajlici/6.gif\" border=\"0\">
</a>
<a href=\"javascript:add_smile(' ;-) ')\">
<img src=\"smajlici/4.gif\" border=\"0\">
</a>
<a href=\"javascript:add_smile(' :-D ')\">
<img src=\"smajlici/1.gif\" border=\"0\">
</a>
<a href=\"javascript:add_smile(' :-p ')\">
<img src=\"smajlici/2.gif\" border=\"0\">
</a>
<a href=\"javascript:add_smile(' :-/ ')\">
<img src=\"smajlici/8.gif\" border=\"0\">
</a>
<a href=\"javascript:add_smile(' :-| ')\">
<img src=\"smajlici/7.gif\" border=\"0\">
</a>
<a href=\"javascript:add_smile(' :-( ')\">
<img src=\"smajlici/10.gif\" border=\"0\">
</a>
</td>
</tr>
</table>
</center> ";



Takže, v 1. části formuláře jsme měli jsme měli samotný formulář. Možná že jste se tam pozastavili na ACTIONu. Je tam adresa kniha.php?poz=0. Je to na stránkování, o kterém si povíme později. V druhé části je jak napsat zvýrazněný nebo podtržený text a vložení smajlíka. Já si myslím, že k popisu by to vcelku stačilo.
A můžeme jít dále. Nyní si ukážeme vložení příspěvku do databáze:


//vlozeni prispevku do databaze
if($SUBMIT !=""){ //kontrola, zda byl formular odeslan
IF($name != "" and $text != ""): //kontrola, zda byly vyplneny vsechny povine udaje
MySQL_query( "INSERT INTO kniha VALUES('','$name','$datum','$text','$mejl')"); //zapis do db
echo "<center><b>Váš příspěvek byl přidán!</b></center>"; //vypsani hlasky o uspesnem zapsano do db
else:
echo "<center><b>Nebyly vyplněny některé údaje.</b></center>"; //vypsani hlasky, pokud nebyly vyplneny vsechny udaje
endif;
}



Zde jsme si vypsali skriptík, který zkontroluje, zda byl odeslán formulář, pokud ano, tak zkontrolujeme, zda byly vyplněny všechny poviné údaje. A pokud ano, tak zapíšeme do databáze. A pokud ne, tak jen vypíšeme hlášku.
A nyní, jak už jsem výše uvedl, bude tam také stránkování, aby se někomu stránka nenačítala nějak dlouho. Stránková bude po 15 příspěvcích. A vždy mezi formulář a 1. příspěvkem bude napsáno Strana: a počet stránek, do kterých jsou příspěvky rozděleny. Proto, musí být url adresa na knihu nějak takto: kniha.php?poz=0. Pokud tam nebude napsáno poz=0, tak skript vypíše chybu. A zde už je skript na stránkování:


//strankovani
$max = "15"; //pocet, kolik se ma na 1 strane zobrazit prispevku

$aaa=MySQL_Query("SELECT count(*) FROM kniha ORDER BY id DESC"); //zjisteni kolik je v tabulce kniha prispevku
$bbb=mysql_fetch_array($aaa); //vypsani cisla do promenne $aaa
$str=Ceil($bbb[0]/$max); //vydelime celkovy pocet prispevku poctem, kolik ma byt prispevku na strance

Echo "<br><center>Strana: ";
for($i=0;$i<$str;$i++){ //cyklus na vypsani stranek
if(($i*$max)==$poz)echo $i+1; else //pokud jsme na dane strane, nevypysime jej jako odkaz, ale jako text
echo " <A href='kniha.php?poz=".($i*$max)."'>".($i+1)."</A> "; //dalsi strany vypiseme jako odkaz
}

echo "<br><br>";



Takže, zde bylo stránkování. Navíc je tam uděláno to, že pokud se třeba nyní nacházíte na straně 27 a celkový počet stran je 54, tak všechny strany to vypíše jako odkaz, ale stranu 27 to vypíše jako obyčejný text.
No a teď už nám zbývá pouze výpis příspěvků. Ale ten si také rozkouskujeme. A za každým menším skriptem bude popis.


//vypis prispevku
$aa=MySQL_Query("SELECT * FROM kniha ORDER BY id DESC LIMIT $poz,$max"); //SQL dotaz do db
while($bb=mysql_fetch_array($aa)){ //zacatek cyklu pro vypsani prispevku



Pokud by nám MySQL dotaz nějak nefungoval, můžeme chybu(na kterém je třeba řádku) zobrazit pomocí fce mysql_error().
Takže bychom mohli jít dále. A co bude dále? Převod smajlíků, zvýrazněného textu na tágy a obrázky.


//prevod smajliku na obrazky
$nahradit_co = array("*b*","*/b*","*u*","*/u*","*i*","*/i*","*br*","*center*","*/center*,",":-(",":-p",":-D",";-)",":-)",":-|",":-/");

$nahradit_cim = array("<b>","</b>","<u>","</u>","<i>","</i>","<br>","<center>","</center>","<img src=\"smajlici/10.gif\" alt=\":-(\">","<img src=\"smajlici/2.gif\" alt=\":-p\">","<img src=\"smajlici/1.gif\" alt=\":-D\">","<img src=\"smajlici/4.gif\" alt=\";-)\">","<img src=\"smajlici/6.gif\" alt=\":-)\">","<img src=\"smajlici/7.gif\" alt=\":-|\">","<img src=\"smajlici/8.gif\" alt=\":-/\">");

$textem = str_replace($nahradit_co, $nahradit_cim, $bb["prispevek"]);



No, zde to zjišťuje, zda se v textu nachází nějaký ten smajlík nebo znak na zvýraznění textu či podtržení textu. Pokud si chcete stáhnout jenom obrázky(smajlíky), tak jsou ke stažení zde.
A teď si myslím, že bychom mohli jít na poslední část našeho vypisování příspěvků, a to je čisté vypsání příspěvku.


//vypis prispevku
IF($bb["mejl"] == "" or $bb["mejl"] == "@"){ //zjisteni, zda byl vyplnen e-mail

echo "</center>
<table width=\"90%\" align=\"center\">
<tr>
<td>
$textem<br><br>
</td>
</tr>

<tr>
<td>
Tento příspěvek nám zde dne ".$bb["datum"]." zanechal <b>".$bb["jmeno"]."</b>.
</td>
</tr>
</table><br>
";

}else{

echo "</center>
<table width=\"90%\" align=\"center\">
<tr>
<td>
$textem<br><br>
</td>
</tr>

<tr>
<td>
Tento příspěvek nám zde dne ".$bb["datum"]." zanechal <a href=\"mailto:".$bb["mejl"]."\"><u><b>".$bb["jmeno"]."</b></u></a>.
</td>
</tr>
</table><br>"; 

}

}
?>



Zde vlastně už jenom zjistíme, zda autor příspěvku vyplnil e-mail či ne a pokud vyplnil, tak jméno dáme jako odkaz a bude odkazovat na jeho e-mail. A pokud nevyplnil e-mail, tak vypíšeme jméno jen jako prostý text.

Já doufám, že se Vám článek líbil a že ho třeba použijete také na svou stránku a nebo se jen k něčemu novému přiučíte.

Celý skript si můžete stáhnout zde.



Autor: Michal Pospiech, informace o autorovi
Rubrika: Programování - PHP
Čtenářů: 459     Zobrazení: 644

Jak hodnotíte tento článek?

lepší <-->horší
Názory: počet: 29   poslední: 22.10.2004 19:14:56   číst názory   přidat názor   vytisknout


Nadpis Autor Datum
Bezpecnost Ypkis 21.10.2004 06:38:49
  Re: Bezpecnost Michal Pospiech 21.10.2004 06:47:25
    Re: Bezpecnost Ypkis 21.10.2004 06:53:07
      Re: Bezpecnost Michal Pospiech 21.10.2004 06:56:57
    Re: Bezpecnost Gabriel 21.10.2004 11:41:51
Pár připomínek Scatter 21.10.2004 09:20:06
  Re: Pár připomínek Gabriel 21.10.2004 11:45:01
    Re: Pár připomínek Michal Pospiech 21.10.2004 15:49:45
      Re: Pár připomínek VlK 21.10.2004 21:31:46
        Re: Pár připomínek Michal Pospiech 21.10.2004 21:37:44
A ještě něco Scatter 21.10.2004 09:22:52
  Re: A ještě něco Michal Pospiech 21.10.2004 15:48:13
btw Gabriel 21.10.2004 11:47:18
  Re: btw Michal Pospiech 21.10.2004 15:41:57
class "kod" Ypkis 21.10.2004 12:47:46
Bezpečnost TOM 21.10.2004 13:03:28
Nikdo není dokonalý Jasin 21.10.2004 14:32:03
  Re: Nikdo není dokonalý Michal Pospiech 21.10.2004 15:41:26
  Re: Nikdo není dokonalý Ypkis 21.10.2004 18:39:18
    Re: Nikdo není dokonalý Michal Pospiech 21.10.2004 18:45:25
  Re: Nikdo není dokonalý Laupe 21.10.2004 18:41:06
    Re: Nikdo není dokonalý Michal Pospiech 21.10.2004 18:44:29
Sloh......autorův nepřítel Marks 21.10.2004 22:14:40
  Re: Sloh......autorův nepřítel Marks 21.10.2004 22:16:22
    Re: Sloh......autorův nepřítel jokr 22.10.2004 00:10:38
  Re: Sloh......autorův nepřítel Michal Pospiech 22.10.2004 06:31:35
    Re: Sloh......autorův nepřítel Marks 22.10.2004 19:14:56
POMOC! Ludmila 22.10.2004 13:57:25
  Re: POMOC! Michal Pospiech 22.10.2004 14:36:18
Nový příspěvek
Věc:
Jméno:
E-mail:

- nepoužívejte HTML k formátování textu příspěvku
- nepoužívejte A HREF= pro odkazy, aktivní budou automaticky
- odřádkování provádějte klávesou ENTER, nikoliv tagem <br>
zasílat odpovědi na můj e-mail











(c) P.E.S. consulting, s.r.o. 2000-2004. Provozovatel nezodpovídá za obsah a původ článků a diskuzních příspěvků, odpovědnost nesou jednotliví redaktoři a autoři. Informace o PC Světě naleznete zde
Novinka: Bazar
Na PC Světě nově zprovozněn bazar techniky a příslušenství
www.pcsvet.cz/bazar/
ADSL připojení
ADSL připojení
Anketa
Novinky e-mailem
Zasílání denního nebo týdenního přehledu nových článků
Nový redaktor
Chcete se stát přispivatelem pro PC Svět? info a registrace zde



ATLAS.CZ
powered by PES RedSys 3.0





© 2000-2004 pcsvět.cz / pcsvet@pcsvet.cz / ISSN 1213-6042