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, който ползваме за база данни.


Иван & Петров & ivan@abv.bg & 02334455 & 0888765435 & София
Петър $ Минев & petar@abv.bg & 032445566 & 0887654321 & Пловдив
Милен & Станков & milen@mail.bg & 052765483 & 0888465768 & Варна


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

Ето и скрипта, който ще показва всичките записи :
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






/ Трябва да сте регистриран за да напишете коментар /