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.

Žádný příspěvek v diskuzi

Odpovědět