Консультация № 175893
07.01.2010, 14:57
33.95 руб.
0 3 2
Здравствуйте..
Нужна ваша помощь, нужно создать PHP страницу, работающюю с файлам:
Создать файл – телефонный справочник с возможностью добавления записи.

Обсуждение

Неизвестный
07.01.2010, 15:23
общий
это ответ
Здравствуйте, Брель В.А.
вот скрипт с возможностью добавления _и редактирования_ записей; если редактирование не нужно - уберите <INPUT TYPE="TEXT" NAME="$matches[0]" VALUE="".urldecode($matches[1]).""> , заменив его на ".urldecode($matches[1])."

Код:

<?

// читаем
$fname = "base.txt";
$fd = fopen ($fname,"r");
$bufer = fread($fd, filesize($fname));
fclose ($fd);

$lines = explode ("\n",$bufer);
echo "<FORM METHOD="GET"><TABLE BORDER=0>";
foreach ($lines as $line) {
unset ($matches);
$matches = explode (" у ", $line); // разбор строки записи, формат строки - {телефон} у {человек}
if (isset($matches)) {
echo "<TR><TD>$matches[0] </TD> <TD><INPUT TYPE="TEXT" NAME="$matches[0]" VALUE="".urldecode($matches[1]).""></TD></TR>";
};
};
echo "<TR>
<TD><INPUT TYPE="TEXT" NAME="newnum"></TD>
<TD>у <INPUT TYPE="TEXT" NAME="newowner"></TD>
</TR>";
echo "</TABLE><INPUT TYPE="SUBMIT" VALUE=" Edit "></FORM>";

// здесь разбор и сохранение изменений (редактирования)

$bufer = $_SERVER['QUERY_STRING'];
if (!empty($bufer)) {
$bufer = str_replace ("newnum=", "", $bufer);
$bufer = str_replace ("&newowner", "", $bufer);
$bufer = str_replace ("=", " у ", $bufer);
$bufer = str_replace ("&", "\n", $bufer);
$bufer = preg_replace ("|^ у \n$|", "", $bufer);
$fd = fopen ($fname,"w");
fwrite ($fd, $bufer);
fclose ($fd);
unset ($_SERVER['QUERY_STRING']);
};

die;
?>
Неизвестный
07.01.2010, 15:24
общий
Это простейший вариант с текстовым файлом, как Вы просили; реально правильнее было бы использовать базы данных, хотя бы DBF
Неизвестный
07.01.2010, 16:05
общий
это ответ
Здравствуйте, Брель В.А.
Предлагаю Вашему вниманию самый неоптимальный код для решения этой задачки

Приложение:
<form action="<?=$_SERVER['SCRIPT_NAME']?>" method="post">
Enter phone to add:
<p><input type="text" name="record_edit">
</p>
<input type="submit" value="Add phone...">
</form>
<?php echo "<body bgcolor=#000040 text=#aaaaaa><font size=5>"; error_reporting(E_ALL); // включаем режим показа ошибок

if (@$_REQUEST['record_edit']){ // юзер что-то вбил в поле ввода и надавил на кнопку?
if (file_exists("phones.txt")){ // есть у нас файло с телефонами?
$PHONES = fopen("phones.txt", "a+"); // ага, есть, открываем на чтение-запись (указатель файла - в самый конец)
fprintf($PHONES, $_REQUEST['record_edit']."\n"); // дописали номерок
display_phones($PHONES); // отобразили это убожество на экране (в виде таблички :))
} else { // опаньки! нету такого файлика...
$PHONES = fopen("phones.txt", "w+"); // создаем новый
fprintf($PHONES, $_REQUEST['record_edit']."\n"); // вбиваем туда введенные юзером данные
display_phones($PHONES); // ...и отображаем этот кошмар на экране
}
} else { // из формы еще ниче не пришло. т.е. страничка загружается первый и последний раз
if (file_exists("phones.txt")){ // имеется мегабаза номарков?
$PHONES = fopen("phones.txt", "a+"); // открываем файло с номерами
display_phones($PHONES); // и показываем их юзеру
} else { // блин, ну ваще! и из формы ниче нет, и файла нет. видать скрипт впервые запускают...
echo "There are no records yet! Make record :)";
}
}

function display_phones($PHONES){ // ну здесь все понятно, если что непонятно --- стучитесь в асю 491-410-555, спросить Тему :)
echo "<table>\n";
rewind($PHONES);
while (!feof($PHONES)){
$line = fgets($PHONES);
echo "<tr><td>$line</td></tr>";
}
echo "</table>";
}
echo "</font></body>";?>
Форма ответа