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


