V předchozím díle o tvorbě aplikace pro uchovávání kontaktů přes PHP jsme si navrhli databázi a připravili skript pro zadávání nových firem. Dnes tuto aplikaci rozšíříme o formulář pro zadávání osob a pochopitelně také o skript, který bude sloužit pro uložení těchto dat.
Stejně jako stránka pro úpravu/zadání firmy, bude script pro úpravu/zadání osoby napsán jedním formulářem. Ten jako vstupní parametr dostane ID osoby (Kontakt_ID), kterou budeme upravovat.
$Conn = mysql_connect(„localhost“,“dbuser“,“userdb“); mysql_select_db(„db_interval“,$Conn); //Pristupy do DB $Firma_ID=0; $Jmeno=““; $Prijmeni=““; $Telefon=““; $email=““; $Komentar=““; if (isset($Kontakt_ID)){ $SQLText=“SELECT * FROM TKontakty_Lide WHERE Kontakt_ID=$Kontakt_ID“; $RS=mysql_query($SQLText,$Conn); if (mysql_num_rows($RS)<=0){ mysql_close($Conn); die(„Hledaná osoba neexistuje“); } else{ $row=mysql_fetch_array($RS); $Firma_ID=$row[„Firma_ID“]; $Jmeno=$row[„Jmeno“]; $Prijmeni=$row[„Prijmeni“]; $Telefon=$row[„Telefon“]; $email=$row[„email“]; $Komentar=$row[„Komentar“]; } mysql_free_result($RS); } else $Kontakt_ID=0; |
|
Na začátku skriptu se napojíme na databázi a zinicializujeme proměnné. Pak si sejmeme případné ID osoby. Pokud je nastaveno, vybereme položky pro svázané s tímto ID. Pokud je zadáno neexistující ID osoby, skript se ukončí. Potom si vybereme seznam firem.
$Firmy=Array(); $SQLText=“SELECT Nazev,Firma_ID FROM TKontakty_Firmy ORDER BY Nazev“; $RS=mysql_query($SQLText,$Conn); while($row = mysql_fetch_array($RS)) $Firmy[]=$row; mysql_close($Conn); |
|
Tento kód je tak jednoduchý, že snad ani nepotřebuje komentář. Za zmínku snad stojí jenom to, že se při kopírování dat u pole $Firmy nevyskytuje index. To proto, že PHP automaticky zvyšuje index pole, tudíž se o to nemusíme starat.
<form name=myform action=“save_person.php?Kontakt_ID=<?echo $Kontakt_ID;?>“ method=POST> <tr><td CLASS=SectionTitle colspan=2>Přidání/úprava kontaktu</td></tr> <tr> <td valign=“top“>Příjmení</td> <td><input type=“text“ name=“Prijmeni“ size=“20″ value=“<? echo $Prijmeni;?>“></td> </tr> <tr> <td valign=“top“>Jméno</td> <td><input type=“text“ name=“Jmeno“ size=“20″ value=“<? echo $Jmeno;?>“></td> </tr> <tr> <td valign=“top“>Firma</td> <td><select size=“1″ name=“Firma_ID“> <option value=“0″>– Seznam firem –</option> <? for ($i=0;$i<count($Firmy);$i++){ echo „<option value=“.$Firmy[$i][„Firma_ID“]; if ($Firmy[$i][„Firma_ID“]==$Firma_ID) echo “ SELECTED“; echo „>“.$Firmy[$i][„Nazev“].“</option>\n“; } ?> </select></td> </tr> <tr> <td valign=“top“>Telefon</td> <td><input type=“text“ name=“Telefon“ size=“20″ value=“<? echo $Telefon;?>“></td> </tr> <tr> <td valign=“top“>email</td> <td><input type=“text“ name=“email“ size=“20″ value=“<? echo $email;?>“></td> </tr> <tr> <td valign=“top“>Komentář</td> <td><textarea rows=“5″ name=“Komentar“ cols=“40″><? echo $Komentar;?></textarea></td> </tr> <tr> <td colspan=2 align=right><input type=button onClick=“SendForm()“ value=OK CLASS=Button><input type=reset CLASS=Button></td> </tr> </form> |
|
Při vytváření formuláře se na chvíli zastavíme u výpisu firem. Pokud totiž budeme upravovat již stávající záznam, musíme přednastavit firmu, do které je člověk zařazen. Proto při vypisování kontrolujeme Firma_ID a pokud ho nalezneme v poli Firmy, tak jej označíme pomocí parametru selected.
Vlastní formulář odešleme po jeho kontrole pomocí JavaScriptu. Kontrola v našem příkladě je velmi jednoduchá. Pouze zkontrolujeme, zda je vyplněno příjmení a jestli email platný. Pro kontrolu emailu jsem si vypůjčil funkci redakčního kolegy, popsanou v tomto článku na Interval.cz. Pokud dojde k chybě, skript zobrazí zprávu a přesune kurzor na špatně vyplněnou položku.
<script type=“text/javascript“ language=“JavaScript1.2″> <!– /*http://www.interval.cz/r-article.asp?id=295 — Kontrola emailu*/ function SendForm(){ var mailstr = /^[^.]+(\.[^.]+)*@([^.]+[.])+[a-z]{2,3}$/; var df = document.myform; if (df.Prijmeni.value.length==0){ alert(„Není vyplněné příjmení!“); df.Prijmeni.focus(); return; } if (df.email.value.length!=0) if (df.email.value.search(mailstr) != 0){ alert(„Chybně vyplněný email!“); df.email.focus(); return; } df.submit(); } // –> </script> |
|
Skript pro uložení obsahu formuláře je opět jednoduchý. Podle toho, zdali je zadán parametr Kontakt_ID se buď provede INSERT nebo UPDATE v databázi. Po ukončení práce s databází provede skript přesměrování zpět na stránku s formulářem.
<? $Conn = mysql_connect(„localhost“,“dbuser“,“userdb“); mysql_select_db(„db_interval“,$Conn); //Pristupy do DB if ($Firma_ID==0) $SQLText=“INSERT INTO TKontakty_Lide (Firma_ID, Jmeno, Prijmeni, Telefon, email, Komentar) VALUES ($Firma_ID, ‚$Jmeno‘, ‚$Prijmeni‘, ‚$Telefon‘, ‚$email‘, ‚$Komentar‘)“; else{ $SQLText=“UPDATE TKontakty_Lide SET „; $SQLText.=“Firma_ID=$Firma_ID, „; $SQLText.=“Jmeno=’$Jmeno‘, „; $SQLText.=“Prijmeni=’$Prijmeni‘, „; $SQLText.=“Telefon=’$Telefon‘, „; $SQLText.=“email=’$email‘, „; $SQLText.=“Komentar=’$Komentar‘ „; $SQLText.=“WHERE Kontakt_ID=$Kontakt_ID“; } mysql_query($SQLText); mysql_close($Conn); echo „<html><head><meta HTTP-EQUIV=\“Refresh\“ CONTENT=\“0; URL=edit_person.php\“></html>“; ?> |
|
A to je pro dnešek vše přátelé. Stejně jako v minulém článku, si i dnes můžete stáhnout zdrojové soubory dnes popisovaného skriptu.