Webmaster общности: Predpriemach.com | SearchEngines.bg

    PHP : Използване на прости файлове за база данни

    Ако копирате кодове, махнете коментарите за да избегнете случайни грешки!
    Ако искате да ползвате файл за база данни, то този урок е точно за вас.
    Нека да кажа предварително каква е идеята.
    Искам да записвам имената,eMail-a,телефоните и местоживеенето на определени хора в текстов файл.
    После искам да разглеждам тези записи и да мога да направя търсачка, която да търси по
    ключова дума.
    След като намери съответствие да ми показва резултата.
    Пример:
    Пиша в търсачката mail.bg и ми дава всички,които са с такъв eMail.
    Пиша 028443345 и ми дава чий е този телефон.
    Също искам да ми показва цялата база данни наведнъж.

    За целта:
    1.Ще създадем формуляр в който ще попълваме данните – той ще се казва form.html
    2.Този формуляр ще изпраща данните на скрипта – zapis.php, които пък от
    своя страна ще ги записва в файла db.inc
    3.Създаваме файл – view.php, който ще показва цялата база данни.
    4.Създаваме файл – search.php, който ще търси във файла и ще изкарва резултатите.
    5.Файловете ще са в една директория(папка).

    Ето как ще изглежда файла form.html, в който ще попълваме информацията.

    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
    
    </head>
    <body>
    <FORM action=zapis.php method=post >
    <b>
    Име :<br>
    <INPUT name=ime><br>
    Фамилия :<br>
    <INPUT name=fam><br>
    eMail:<br>
    <INPUT name=email><br>
    Телефон :<br>
    <INPUT name=tel><br>
    Мобилен :<br>
    <INPUT name=gsm><br>
    Адрес :<br>
    <INPUT name=adres><br>
    <INPUT TYPE=submit value=ЗАПИС>
    <br>
    <br>
    <a href=view.php>Всички записи</a><br>

    Чрез формуляр (както знаете)се изпращат данните.
    Всяко поле което попълвате си има име (за телефона – name=tel,за адреса – name=adres и тн.)
    Тези данни се изпращат по метода post на скрипта zapis.php

    Ето и кода на zapis.php

    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
    </head>
    <body>
    <?php
    //тези променливи приемат за стойност изпратеното от формуляра
    //$ime - приема за стойност името, $fam -фамилията и тн.
    $ime=$HTTP_POST_VARS['ime'];
    $fam=$HTTP_POST_VARS['fam'];
    $email=$HTTP_POST_VARS['email'];
    $tel=$HTTP_POST_VARS['tel'];
    $gsm=$HTTP_POST_VARS['gsm'];
    $adres=$HTTP_POST_VARS['adres'];
    
    //този редове са много важни - записват данните изпратени от формуляра
    //на един ред, в db.inc като ги разделя със знака &
    $zapis=$ime.'&'.$fam.'&'.$email.'&'.$tel.'&'.$gsm.'&'.$adres." \n" ;
    //функцията fopen ( "db.inc" ,"a") ще добави данните на нов ред в db.inc
    //ako db.inc не съществува, ще го създаде и ще запише данните на първия ред
    $fp = fopen ( "db.inc" ,"a");
    fwrite($fp, $zapis );
    fclose($fp);
    
    //Всеки път, когато вкарваме данни те ще се записват на отделен ред в файла db.inc
    
    echo 'Данните са добавени!<br>
    <a href="view.php">Всички записи</a>';
    
    ?>

    До тук добре.
    Но ще трябва да кажа, защо ще се записва всеки човек на различен ред и защо всички данни за
    него ще се разделят с &
    За целта ще приемем, че сме записали 3-ма човека – техните телефони,имена и тн.

    Ето как ще изглежда файла db.inc, който ползваме за база данни.

    Иван & Петров & ivanATabv.bg & 02334455 & 0888000000 & София
    Петър $ Минев & petarATabv.bg & 032445566 & 0887000000 & Пловдив
    Милен & Станков & milenATmail.bg & 052765483 & 0888000000 & Варна

    Както виждате, данните са подредени в някакъв ред, въпреки че това е прост текстов файл.
    Ясна е идеята – данните на различни хора са записани на различни редове, а
    самите данни са разделени с някакъв знак(в случая &).
    Дори без повече скриптове вие може да разберете кой телефон на кой принадлежи.

    Ето и скрипта, който ще показва всичките записи :
    view.php

    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
    </head>
    <body bgcolor=#eaeaea>
    <b>
    <FORM ACTION="search.php" METHOD=POST>
    <INPUT TYPE="text" NAME="search" value="" size="15" maxlength="15"><br>
    <INPUT TYPE=submit value=Search >
    </FORM>
    <?php
    //функцията file("db.inc") ще отвори файла и ще го раздели на редове
    //като всеки ред ще бъде елемент от масива $file
    $file= file("db.inc");
    //Функцията count($file) ще даде(върне) броя на елементите в масива $file,
    //а променливата $n ще е равна на броя на тези елементи
    $n=count($file);
    echo '<table border=1>
    <tr>
    <td>Име</td><td>Фамилия</td><td>ПОЩА</td><td>Телефон</td><td>Мобилен</td>
    <td>Адрес</td>
    </tr>
    ';
    //с цикъла for ще обходиме всички редова на файла.
    for ($i=0; $i<$n;$i++)
    {
    //Функцията explode разделя реда на части, като за разделител ползва знака &
    //всяка част от реда става елемент от масива $line .
    $line = explode ("&",$file[$i] );
    //елементите на масива се подреждат в таблица
    echo '
    <tr>
    <td>'.$line[0].'</td><td>'.$line[1].'</td><td>'.$line[2].'</td><td>'.$line[3].'</td>
    <td>'.$line[4].'</td><td>'.$line[5].'</td>
    </tr>';
    }
    ?>

    Сега идва ред и на търсачката:
    Ето кода на файла search.php

    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
    </head>
    <body bgcolor=#eaeaea>
    <b>
    <FORM ACTION="search.php" METHOD=POST>
    <INPUT TYPE="text" NAME="search" value="" size="15" maxlength="15"><br>
    <INPUT TYPE=submit value=Search >
    </FORM>
    <?php
    
    //$search - приема стойноста на търсената дума
    $search=$HTTP_POST_VARS['search'];
    //функцията str_replace(" ","",$search) маха всички бели полета около търсената дума
    //за да не се обърква търсачката :
    $search=str_replace(" ","",$search);
    if ($search=='')
    {exit;}
    $file= file("db.inc");
    $n=count($file);
    echo '<table border=1>
    <tr>
    <td>Име</td><td>Фамилия</td><td>ПОЩА</td><td>Телефон</td><td>Мобилен</td>
    <td>Адрес</td>
    </tr>
    ';
    //с for обхождаме редовете
    for ($i=0; $i<$n;$i++)
    {
    //От всеки ред, който ще се сравнява с търсената дума се махат
    //последователно белите полета, знака & и знака за нов ред
    $file1=$file[$i];
    $file1=str_replace(" ","",$file1);
    $file1=str_replace("&","",$file1);
    $file1=str_replace("\n","",$file1);
    //ако намери съответствие го показва в таблица
    if (eregi($search,$file1))
    {
    $line = explode ("&",$file[$i] );
    echo '
    <tr>
    <td>'.$line[0].'</td><td>'.$line[1].'</td><td>'.$line[2].'</td><td>'.$line[3].'</td>
    <td>'.$line[4].'</td><td>'.$line[5].'</td>
    </tr>';
    
    }
    }
    
    ?>
    </table>
    <br>
    <a href=view.php>Всички записи</a><br>
    
    </body>

    Урока е подготвен специално за http://web-tourist.net