iReklama  |  PC Svět  |  vyhledávací centrála  |  Diskuzní fórum  |  WWW katalog  |  Guestbook  |  MailForm  |  kontakt: pcsvet@pcsvet.cz - čte si nás 44 čtenářů
 
PC Svět
Hlavní stránka
ASP
Aktuality
Assembler
C,C++
Cracking
Delphi
Diskuze
Grafika
Hardware
Hry a zábava
HTML
Internet
JavaScript
Komunikace
Literatura
Linux
Microsoft Office
Turbo Pascal
Perl
PHP
Software
Tiskové zprávy
Visual Basic
Windows
WWW katalog

Knihovna zdr. kódů

Nabídka skriptů aj.

Homepage autora
Služby
Guestbook
  kniha návštěv pro
  každého
MailForm
  zasílání výsledků
  formulářů na e-mail
Programy
DOS Commander
WinMan
Windows Tools
Informace
O PC Světě
Přehled rubrik
Reklama
Výsledky anket
Přehled novinek


ISSN 1213-6042

šéfredaktor
Petr Šťastný
admin@pcsvet.cz

zástupce šéfredaktora
Pavel Rauš
raus@pcsvet.cz

Stránka je optimalizo-
vána pro prohlížeč
Internet Explorer 5.0
při rozlišení 800x600

 © Petr Šťastný 2002
   All rights reserved

PC Svět
ikonka PC Světa



Linux - zdarma a legálně



TOPlist

Vytisknout   Poslat   Komentáře (4)   Přidat komentář

Adresář v PHP a MySQL (1.)

Na jednoduchém příkladu si ukážeme základní práce s mySQL databází. V článku určeném spíše začátečníkům probereme výběr, zápis, opravu a hledání v databázi.

Když se řekne adresář, představí si většina z nás papírový blok popsaný adresami a telefony známých, kolegů nebo přátel. Dnes se ale adresáře rychle přesouvají do mobilních telefonů, tak proč si jeden nevytvořit také na internetu?

Nejdříve si musíme uvědomit, co vlastně do adresáře chceme zapsat. Jméno, telefon a adresa jsou základní požadavky. Mimo mobilního telefonu si uložíme také číslo domů a na pracoviště. Protože si vytvoříme adresář na internetu, využijeme jeho nejrozšířenější služby, emailu, a uložíme si ho také. Pak budeme moci posílat uloženým lidem email přímo z adresáře. Další kontaktní údaj může být číslo ICQ.

Jako zajímavost si budeme schopni uložit také datum narození každého přítele, abychom nikdy nezapomněli na jeho narozeniny. Proto také doplníme funkci, která bude ukazovat všechny přátele, kteří mají v aktuálním měsíci narozeniny.

Již hotový adresář si můžete prohlédnout na adrese http://trinity.wz.cz/adresar3.

Seznam funkcí

Teď víme, co si můžeme o přátelích do adresáře uložit. Jaké funkce bude ale adresář mít?

  • přidávání, upravování a mazání záznamů
  • vypsání počtu zápisů v adresáři
  • vyhledávání podle křestního jména, příjmení, adresy nebo emailu
  • vypsání přátel kteří mají v měsíci narozeniny

Další kladnou vlastností adresáře je kompletní validita XHTML 1.1 a CSS2 ověřená na veřejném validátoru W3C. Z toho důvodu nejsou v kódu žádné formátovací tagy (align, width), ale vše je pomocí CSS. Komu není práce s CSS jasná, nemusí se bát, vše je jednoduše vysvětleno.

Databázová tabulka

Naše aplikace celá stojí na mySQL. Tuto tabulku musíme vložit do databáze.

CREATE TABLE adresar (
   id int(9) unsigned NOT NULL auto_increment,
   firstname varchar(50) NOT NULL,
   lastname varchar(50) NOT NULL,
   adresa varchar(255) NOT NULL,
   home varchar(20) NOT NULL,
   mobile varchar(20) NOT NULL,
   work varchar(20) NOT NULL,
   email varchar(50) NOT NULL,
   icq varchar(20) NOT NULL,
   day tinyint(2) NOT NULL,
   month varchar(10) NOT NULL,
   year varchar(4) NOT NULL,
   PRIMARY KEY (id)
);

Z anglických názvu si můžeme odvodit, k čemu jednotlivé sloupce patří. Pro nastavení údajů o databázi použijeme jeden soubor, ve kterém jsou uloženy všechny přístupové údaje. Tento soubor pak příkazem include(); vložíme do všech stránek. Soubor include/config.php.

<?php
$dbname = "";    //jméno databáze
$dbserver = "localhost";   //databázový server (adresa)
$dbuser = "";   //jméno uživatele
$dbpass = "password";   //heslo
$table = "adresar";   //název tabulky
?>

Další soubor obstarává spojení s databází. Spojení bychom mohli uskutečnit na každé stránce jednotlivě, ale v externím souboru vloženém do každé stránky je to výhodnější. Tyto vkládané soubory máme uloženy ve složce include. Zdrojový kód souboru include/dbconnect.php.

<?php
include("include/config.php");

$db = mysql_connect("$dbserver", "$dbuser", "$dbpass");
mysql_select_db("$dbname",$db);
?>

Jestliže jsme mluvili o výhodách vkládání externích souborů, musím připomenout, že ve složce include jsou ještě dva soubory header.php a footer.php, které obstarávají grafický vzhled. Pro editování vzhledu stačí jen upravit tyto dva soubory, které jsou jen v XHTML.

Samotný adresář

Složka include je tady naplněna a můžeme se podívat na soubory, které už přímo uvidíme na obrazovce monitoru. Na prvním souboru index.php si ukážeme, jak zjistit kolik lidí máte zapsáno v databázi.

<?php
include ("include/header.php");
include ("include/dbconnect.php");

$sql="SELECT * FROM $table";
$result = mysql_query($sql);
$resultsnumber = mysql_num_rows($result);

echo "Celkem je v adresáři $resultsnumber lidí.";

include ("include/footer.php");
?>

Jaký byl postup při sestavení stránky? Nejprve jsme vložili hlavičku, pak soubor který obstarává spojení s databází. Následný postup je jednoduchý. Vybereme z databáze data a pak jen spočítáme, na kolik řádcích jsou. Výsledek uložíme do proměnné a zobrazíme v textu.

Podobně jednoduché budou i následující stránky. Ze začátku pro nás bude asi nejdůležitější vkládání záznamů do databáze. Data vložíme jednoduše přes formulář. Protože jeden příklad je víc než tisíc slov následuje ukázka. Rozbor souboru insert.php.

<?php
include ("include/header.php");
?>

<h1>Přidání údajů</h1>

Po vložení hlavičky následuje kontrola jestli byl formulář odeslán. Pokud byl již odeslán, vloží údaje do databáze a ukáže oznámení o správném vložení. V případě že ne, zobrazí formulář.

<?php
include("include/dbconnect.php");
if($submit)
{
$sql = "INSERT INTO $table  VALUES
('$firstname','$lastname','$adresa','$home','$mobile','$work','$email','$icq',
'$day','$month','$year')"; $result = mysql_query($sql); echo "<br/><br/>Informace byly vloženy do databáze.\n"; } else { ?>

Protože zobrazujeme dlouhý formulář, použití příkazu echo by bylo těžkopádné. Proto jsme PHP odstavili a formulář si vytvoříme jen v XHTML. Hned u prvního tagu jsme museli kvůli validitě XHTML použít CSS. Tento zápis je ekvivalentem atributu width.

<form method="post" action="insert.php">

<table style="width: 100%" cellspacing="0" cellpadding="0">
<tr>
<td>
Křestní jméno: </td>
<td>
<input type="Text" name="firstname" size="35"/>
</td>
</tr>
<tr>
<td>Příjmení: </td>
<td>
<input type="Text" name="lastname" size="35"/>
</td>
</tr>
<tr>
<td>Adresa: </td>
<td>
<textarea name="adresa" rows="5" cols="35"></textarea>
</td>
</tr>
<tr>
<td><b>Telefon</b></td>
<td> </td>
</tr>
<tr>
<td>Domů: </td>
<td>
<input type="Text" name="home"/>
</td>
</tr>
<tr>
<td>Mobil: </td>
<td>
<input type="Text" name="mobile"/>
</td>
</tr>
<tr>
<td>Práce:</td>
<td>
<input type="Text" name="work"/>
</td>
</tr>
<tr>
<td><b>Kontakt</b></td>
<td> </td>
</tr>
<tr>
<td>Email: </td>
<td>
<input type="Text" name="email" size="35"/>
</td>
</tr>
<tr>
<td>ICQ: </td>
<td>
<input type="Text" name="icq" size="35"/>
</td>
</tr>
<tr>
<td><b>Ostatní</b></td>
<td> </td>
</tr>
<tr>
<td>Datum narození: </td>
<td>
<select name="day">
<option value="1" selected="selected">1</option>

Abychom nemuseli zdlouhavě psát téměř stejný kód, použijeme cyklus for který to udělá místo nás.

<?php
for ($counter=2; $counter<32; $counter++)
{
  echo "<option value=\"$counter\">$counter</option>";
}
?>
</select>
<select name="month">
<option value="Leden" selected="selected">Leden</option>
<option value="Únor">Únor</option>
<option value="Březen">Březen</option>
<option value="Duben">Duben</option>
<option value="Květen">Květen</option>
<option value="Červen">Červen</option>
<option value="Červenec">Červenec</option>
<option value="Srpen">Srpen</option>
<option value="Září">Září</option>
<option value="Říjen">Říjen</option>
<option value="Listopad">Listopad</option>
<option value="Prosinec">Prosinec</option>
</select>
<input type="text" name="year" size="4" maxlength="4"/>
</td>
</tr>
</table>
<input type="Submit" name="submit" value="Vložit">
</form>
<?php
}

include ("include/footer.php");
?>

Až si vložíme do adresáře všechny, které potřebujeme, jistě je budeme chtít mít zobrazeny ne jednom místě. A to si právě teď ukážeme.

Seznam záznamů

Seznam osob bude v jednoduché tabulce. Abychom adresáři trochu přidali na vzhledu pomůžeme si jednoduchým scriptem. Sudé a liché řádky budou mít jinou barvu. Vedle jména člověka bude také odkaz na prohlédnutí detailů, opravu údajů a smazání. Soubor seznam.php.

<?php
include ("include/header.php");
include("include/dbconnect.php");

$result = mysql_query("SELECT * FROM $table ORDER BY lastname",$db);
echo "<table cellpadding=\"2\" cellspacing=\"1\">";

$alternate = "1";
while ($row = mysql_fetch_array($result)) {
$id = $row["id"];
$firstname = $row["firstname"];
$lastname = $row["lastname"];

if ($alternate == "2") {
$color = "#ffffff";
$alternate = "1";
}
else {
$color = "#efefef";
$alternate = "2";
}
echo "<tr style=\"background-color: $color\"><td>$lastname, $firstname</td>
<td><a href=\"view.php?id=$id\">Detaily</a></td>
<td><a href=\"edit.php?id=$id\">Upravit</a></td>
<td><a href=\"delete.php?id=$id\">Odstranit</a></td>
</tr>";
}
echo "</table>";

include ("include/footer.php");
?>

Samotný výběr z tabulky jistě nemusím objasňovat, ale blíže se podíváme na různě obarvené řádky tabulky. V proměnné alternate máme uloženou hodnotu 1. Jestliže má hodnotu 1 použije určenou barvu a změní hodnotu na 2. Jestliže je hodnota 2 požije druhou barvu a změní hodnotu na 1. A tak stále dokola.

S ukázkou zdrojového kódu končí i článek. Příště si ukážeme, jak upravit údaje a způsob jak je smazat. Stranou nezůstane ani vyhledávání. Pak už bude adresář plně funkční.

Autor: Jan Ježek, player@click.cz, informace a seznam článků


Komentáře k článku
Upozorneni, mysql_php, 9.9.2002 20:44:18
Dočkej času..., Jan Ježek, 9.9.2002 20:51:46
Insert, Pavel Šimon, 10.9.2002 9:31:18
Re: Insert, Jan Ježek, 10.9.2002 17:29:18

Přidat komentář


Poslední články ze stejné rubriky
Všechny (databázové) mouchy jednou ranou - ODBC - základy
Fulltextové vyhledávání v MySQL
phpMyAdmin - zdařilý administrátor MySql serveru
Databáze v PHP (3.)
Databáze v PHP (2.)

Diskuze - PHP - celkem 868 příspěvků (zobrazeno max. 15) - zobrazit celou diskuzi
Podkategorie
Databáze [90]
Název Autor Datum
"Oseknutí" desetinného čísla na 1 des. m... Honza 09.09.2002
• Re: Oseknutí čísla Petr Šťastný 09.09.2002
FATAL EROR:Call to ..... MySQL Linux RP... Roman 09.09.2002
• php-mysql Stefan 10.09.2002
Porovnání IP adresy uživatele netrunner 08.09.2002
• Re: Porovnání IP adresy uživatele Petr Šťastný 08.09.2002
• část kódu netrunner 08.09.2002
• Re: Porovnání IP adresy uživatele Petr Šťastný 08.09.2002
• TRIM netrunner 08.09.2002
Je to možné Chuck 05.09.2002
• Re: Je to možné Petr Šťastný 05.09.2002
• re: upřesnění Chuck 10.09.2002
mime mail => jak rozdělit mail na jednot... Libor Sloupenský 05.09.2002
   žádná odpověď    
automatické odhlášení narvik 04.09.2002
• Re: automatické odhlášení Petr Šťastný 05.09.2002
Provozovatel:
PES.cz
Poslední články
Freeware ke stažení zdarma (1.)
IW FTP Client – povedený český FTP klient
Otřesová vlna v 3D MAXU
Generování obrázků v PHP (2.)
Mozilla 1.1 vs Internet Explorer 6.0
Hodnocení článku
nejlepší <----> nejhorší
    
Zatím nehodnoceno
Informace o článku
Datum 9.9.2002
Čtenářů 260
Autor Jan Ježek
Rubrika PHP - databáze
Nový redaktor
  Chcete psát články
  pro PC Svět či se
  stát redaktorem?

Články honorovány!

  Informace zde
EInfo
  Chcete být informováni
  o každém novém článku
  na PC Světě?

Zadejte svůj e-mail:

MSN.ATLAS.CZ
Hladat.sk

hlavní stránka  |  vyhledávací centrála  |  Diskuze  |  WWW katalog  |  Guestbook  |  MailForm  |  kontakt: pcsvet@pcsvet.cz

Se svými dotazy či problémy se obracejte na diskuzní fórum, věci týkající se PC Světa směřujte na e-mail pcsvet@pcsvet.cz

Šíření obsahu tohoto serveru nebo jeho části je bez souhlasu redakce zakázáno.
(c) PC Svět 2002 - Všechna práva vyhrazena.