Databáze kontaktů v PHP 1.

14. června 2001

Vítejte v prvním díle několikadílného seriálu, na jehož konci vznikne jednoduchá webová aplikace v PHP pro ukládání kontaktů. Během tohoto seriálu si rozšíříte základy PHP a JavaScriptu.

Jako základ pro dnešní a následující článeky jsem si vzal reálně nasazenou aplikaci, ze které jsem odebral pár funkcí a změnil design. Ale myslím si, že pro vás nebude problém s případnou úpravou. Jedná se o jednoduché www rozhraní pro ukládání kontaktů na osoby a firmy. Aplikace je určena pro sdílení firemních kontaktů přes web a umožňuje jejich ukládání, prohledávání a mazání.

DB Návrh

Návrh databáze musí pochopitelně respektovat data, která poté chceme zobrazit. Pro tento článek jsem vybral jenom to nejnutnější.

U firem to bude:

  • Název
  • Ulice
  • Město
  • PSČ
  • Telefon
  • Fax

A u osob:

  • Jméno
  • Telefon
  • Email
  • Komentář

SQL skript pro vytvoření tabulek

CREATE TABLE TKontakty_Firmy (
 Firma_ID int(11) NOT NULL auto_increment,
 Nazev varchar(50),
 Ulice varchar(50),
 Mesto varchar(50),
 PSC varchar(10),
 Telefon varchar(50),
 Fax varchar(50),
 PRIMARY KEY (Firma_ID),
 KEY iNazev (Nazev),
 KEY iMesto (Mesto)
);
CREATE TABLE TKontakty_Lide (
 Kontakt_ID int(11) NOT NULL auto_increment,
 Firma_ID int(11), — Odkaz do tabulky firem
 Jmeno varchar(20),
 Prijmeni varchar(20),
 Telefon varchar(50),
 email varchar(50),
 Komentar varchar(100),
 PRIMARY KEY (Kontakt_ID),
 KEY iFirma_ID (Firma_ID),
 KEY iPrijmeni (Prijmeni)
);

Indexy jsou vytvořeny pro položky podle kterých se bude vyhledávat a pro vazby – KEY iFirma_ID (Firma_ID)

Formulář pro vložení firmy

Aby naše aplikace mohla nějaká data zobrazit, musíme do ní nejdříve nějaká vložit. Začneme s formulářem pro vkládání firem, jelikož firma je „nadřazena“ zaměstnancům. Formulář bude sloužit jak pro vytvoření nového záznamu, tak pro úpravu již existujícího záznamu. Bylo by totiž poněkud neefektivní vytvářet formuláře dva. Pro tento účel vynikne stránka edit_company.php.

// nezapomeňte změnit údaje pro přístup do DB
$Conn = mysql_connect(„localhost“,“dbuser“,“userdb“);
mysql_select_db(„db_interval“,$Conn);
//Pristupy do DB

/*Pokud je nastavena hodnota Firma_ID, tj.nepřidáváme, ale editujeme, vybere se příslušný záznam z DB */
$Firma_Info=Array();
if ( (isset($Firma_ID)) && (!empty($Firma_ID)) ){
 $SQLText=“SELECT * FROM TKontakty_Firmy WHERE Firma_ID=$Firma_ID“;
 $RS=mysql_query($SQLText,$Conn);
 if (mysql_num_rows($RS)<=0){
  mysql_close($Conn);
  die („Záznam neexistuje“);
 }
 $Firma_Info=mysql_fetch_array($RS);
}
else
 $Firma_ID=0;
mysql_close($Conn);

Na začátku skriptu si otevřeme spojení na DB a zkontrolujeme, zda proměnná $Firma_ID je nastavena. Pokud není, víme, že se jedná o založení nové položky a přiřadíme proměnné hodnotu 0. Pokud je nastavena, jedná se o úpravu záznamu, který si vybereme SQL dotazem. Jeho výsledek si uložíme do pole $Firma_Info. A pak, protože se chováme slušně, uzavřeme spojení na DB. Pokud $Firma_ID obsahuje neplatnou hodnotu, nebo odkaz na neexistující záznam, skript pak uzavře spojení na DB a ukončí svůj běh.

Data máme uložena v poli nebo máme nachystáno pole prázdné. Nyní je na řadě vytvoření formuláře pro jejich zadávání či úpravu. Formulář je jednoduchý, pouze jeho odesílání je řešeno pomocí JavaScriptu. Vůbec – všechny kontroly formulářů budou prováděny pomocí JavaScriptu. Celý zdrojový kód formuláře zde nebudu uvádět kvůli jeho délce.

echo „<FORM ACTION=\“save_company.php\“ METHOD=\“post\“ NAME=myform>\n“;
echo „<TR>\n“;
echo „<TD>Název:</TD>\n“;
echo „<TD><INPUT TYPE=text NAME=\“Nazev\“ value=\““.$Firma_Info[„Nazev“].“\“></TD>\n“;
echo „</tr>\n“;
echo „<tr>\n“;
…….
echo „<TD colspan=\“2\“ align=\“right\“>\n“;
echo „<input type=hidden name=Firma_ID value=$Firma_ID>\n“;
echo „<input type=button class=button value=Ok onClick=\“SendForm()\“>\n“;
echo „<input type=reset class=button value=\“Původní\“>\n“;
echo „</td>\n“;
echo „</tr>\n“;
echo „</FORM>\n“;
…..
echo „<script type=\“text/javascript\“ language=\“JavaScript\“>\n“;
echo „<!–\n“;
echo „function SendForm(){\n“;
echo “ var df = document.myform;\n“;
echo “ if (df.Nazev.value.length==0){\n“;
echo “ alert(\“Není vyplněn název firmy!\“);\n“;
echo “ df.Nazev.focus();\n“;
echo “ return;\n“;
echo “ }\n“;
echo “ df.submit();\n“;
echo „}\n“;
echo „// –>\n“;
echo „</script>\n“;

Pro odeslání formuláře slouží funkce SendForm(). Ta zkontroluje jediný povinný údaj pro firmu -Název. Pokud není tento zadán, zobrazí chybové hlášení a po jeho odkliknutí přesune kurzor pomocí metody focus() na formulářové pole. Pokud kontrola proběhne OK, dojde k odeslání dat do save_company.php.

Zápis dat

Skript pro zápis dat je velmi prostý. Vytvoříme spojení na databázi a pak zkontrolujeme obsah proměnné $Firma_ID. Pokud je její hodnota rovna 0, jedná se o nový záznam, jinak se jedná o update. Podle toho se vytvoří SQL dotaz. Po jeho proběhnutí přesměrujeme uživatele zpět na stránku pro zadávání.

<? $Conn = mysql_connect(„localhost“,“dbuser“,“userdb“);
mysql_select_db(„db_interval“,$Conn);
//Pristupy do DB
if ($Firma_ID==0)
 $SQLText=“INSERT INTO TKontakty_Firmy (Nazev,Ulice,Mesto,PSC,Telefon,Fax) VALUES (‚$Nazev‘,’$Ulice‘,’$Mesto‘,’$PSC‘,’$Telefon‘,’$Fax‘)“;
else{
 $SQLText=“UPDATE TKontakty_Firmy SET „;
 $SQLText.=“Nazev=’$Nazev‘,“;
 $SQLText.=“Ulice=’$Ulice‘,“;
 $SQLText.=“Mesto=’$Mesto‘,“;
 $SQLText.=“PSC=’$PSC‘,“;
 $SQLText.=“Telefon=’$Telefon‘,“;
 $SQLText.=“Fax=’$Fax‘ „;
 $SQLText.=“ WHERE Firma_ID=$Firma_ID“;
}
mysql_query($SQLText);
mysql_close($Conn);
echo „<html><head><meta HTTP-EQUIV=\“Refresh\“ CONTENT=\“0; URL=edit_company.php\“></html>“;
?>

Tím máme vytvořenou první část naší aplikace. V příštím díle si uděláme stránky pro zadávání osob. Zde si můžete stáhnout dnešní zdrojové soubory.

Starší komentáře ke článku

Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.

Mohlo by vás také zajímat

Nejnovější

1 komentář

  1. dejvic

    Zář 22, 2010 v 22:51

    mam dotaz pouzil jsem vsechny tyto skriptiky a snazil se to rozhybat, vse se zobrazi zjevne dobre ale pri vlozeni firmy me to vlozi pouze ID ale ostatni data jsou prazdna, at koukam jak koukam tak nic nevykoukam.

    Odpovědět

Napsat komentář: dejvic Zrušit odpověď na komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *