Databáze kontaktů v PHP 2.

    0

    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