Есть гостевая книга... полностью на файлах.... как сделать админку??? что бы возле каждого сообщения была кнопочка удалить/редактировать... желательно сам скрипт дать )) или ОЧЕНЬ близко к ответу
Загрузить-то я могу... а как сделать что бы каждая строка была элементом массива?? ( О.... через массив )) (вопрос выше)
PHP: <?php $read_file = @file('./mod/guestbook/guest_base.txt'); $temp = count($read_file)-1; for ($i = $temp; $i>=0; $i--) { $content .= ' <table border="1" width="100%" cellspacing="1" style="border-collapse: collapse" bordercolor="#000000"> <tr> <td align="center"><b><font size="4">'.$element[0].'</font></b></td> <td align="center"><b><font size="4">'.$element[1].'</font></b></td> </tr> <tr> <td colspan="2" align="justify">'.$element[2].'</td> </tr> </table> <hr>'; } ?> Пример текстового файла.. Name~Mail~Message $element[] - это Name - 1, mail - 2, Message - 3 А как сделать вывод кнопки УДАЛИТЬ??? и что бы эта строка удалилась??? Я не понямаю ((
Вот сама геста, если что... PHP: <?php $title = 'Гостевая книга'; $command = $_GET['cmd']; htmlentities($command); if ($cmd == 'admin') { $content = ' <form method="POST" action="index.php?style={style}&page=guestbook&cmd=admin"> <table border="0" cellspacing="0" cellpadding="0"> <tr> <td>Логин:</td> <td><input type="text" name="admin_login" size="20"></td> </tr> <tr> <td><span lang="ru">Пароль:</span></td> <td><input type="password" name="admin_passwd" size="20"></td> </tr> <tr> <td colspan="2"> <input type="submit" value="Войти в админку" name="submit"></td> </tr> </table> </form>'; $open=fopen("./mod/guestbook/guest_base.txt","w"); @flock($open,2); $arr=count($open); for($i=0;$i<count($file);$i++) { if ($i != $_GET['id']) { fwrite($open, $file[$i]); } else { fwrite($open,implode("\r\n",array_map("trim",$arr))); fwrite($open, "\r\n");} } @flock($open,3); fclose($open); } else { if ($guest_submit_replay != "1") { $content .= ' <script language="JavaScript"> function makevisible(id) { id.style.position = \'\'; id.style.visibility = \'\'; } function makeinvisible(id) { id.style.position = \'absolute\'; id.style.visibility = \'hidden\'; } function change(id,id_img) { if (id.style.position == \'absolute\') { makevisible(id,id_img); } else { makeinvisible(id,id_img); } } if (self.screen) { width = screen.width height = screen.height } else if (self.java) { var jkit = java.awt.Toolkit.getDefaultToolkit(); var scrsize = jkit.getScreenSize(); width = scrsize.width; height = scrsize.height; }else{ width = height = \'100%\' } </script> <p align="center"><a onclick=javascript:change(guest); href="javascript:void(0)">Добавить запись</a> <DIV id="guest" style="VISIBILITY: hidden; POSITION: absolute"> <form action="index.php?style={style}&page={page}" method="POST"> <div align="center"><table border="0" width="50%"> <tr> <td align="right" width="30%">Имя:*</td> <td width="50%"><input type="text" size="20" name="guest_user_name"></td> </tr> <tr> <td align="right" width="30%">E-Mail:</td> <td width="50%"><input type="text" size="20" name="guest_user_mail"></td> </tr> <tr> <td align="right" width="30%">Сообщение:*</td> <td width="50%"><textarea name="guest_user_text" rows="2" cols="20"></textarea></td> </tr> <tr> <td align="right" width="30%"><input type="submit" name="guest_submit" value="Отправить"></td> <td width="50%"> <input type="reset" name="guest_reset" value="Сбросить"> <input type="hidden" name="guest_bot" value=""> <input type="hidden" name="guest_submit_replay" value="1"> </td> </tr> </table> Поля отмеченые * обязательны для заполнения </div> </form> </div> <hr>'; $read_file = @file('./mod/guestbook/guest_base.txt'); $temp = count($read_file)-1; for ($i = $temp; $i>=0; $i--) { $element = explode('~',$read_file[$i]); $element[2] = str_replace (':)','<img src="./mod/guestbook/img/01.gif">', $element[2]); $element[2] = str_replace (':-)','<img src="./mod/guestbook/img/01.gif">', $element[2]); $element[2] = str_replace (':(','<img src="./mod/guestbook/img/02.gif">', $element[2]); $element[2] = str_replace (':-(','<img src="./mod/guestbook/img/02.gif">', $element[2]); $element[2] = str_replace (';)','<img src="./mod/guestbook/img/03.gif">', $element[2]); $element[2] = str_replace (';-)','<img src="./mod/guestbook/img/03.gif">', $element[2]); $content .= ' <table border="1" width="100%" cellspacing="1" style="border-collapse: collapse" bordercolor="#000000"> <tr> <td align="center"><b><font size="4">'.$element[0].'</font></b></td> <td align="center"><b><font size="4">'.$element[1].'</font></b></td> </tr> <tr> <td colspan="2" align="justify">'.$element[2].'</td> </tr> </table><hr>'; } } else { if ($guest_bot != '') { $content = '<p aling="center">Ботам сюда низззззя!!!!!'; } else { if (($guest_user_name == '') or ($guest_user_text == '')) { $content .= '<p align="center">Одно из полей не заполнено.<br> <a href="JavaScript:history.back()">Вернитесь назад и заполните все поля.</a>'; } else { $_POST['guest_user_name'] = str_replace('~','',htmlentities(trim($_POST['guest_user_name']))); $_POST['guest_user_mail'] = str_replace('~','',htmlentities(trim($_POST['guest_user_mail']))); $_POST['guest_user_text'] = str_replace('~','',htmlentities(trim($_POST['guest_user_text']))); $t1=chr(10); $t2=chr(13); $_POST['guest_user_text'] = str_replace($t1,'<br>',$_POST['guest_user_text']); $_POST['guest_user_text'] = str_replace($t2,'<br>',$_POST['guest_user_text']); if (file_exists('./mod/guestbook/guest_base.txt')) { $output = "\n\r"; } $comment = fopen('./mod/guestbook/guest_base.txt','a'); $output .= $_POST['guest_user_name']."~".$_POST['guest_user_mail']."~".$_POST['guest_user_text']; fputs($comment,$output); fclose($comment); $content = 'Сообщение добавлено.<meta http-equiv="refresh" content="3; url=index.php?style={style}&page={page}"><br>Если Ваш браузер не поддерживает переадресацию, намите <a href="index.php?style={style}&page={page}">здесь</a>'; } } } } ?>
Если каждое сообщение в своей строке, при нажатии на кнопку удалить, передавать скрипту в параметрах номер строки. Этот скрипт должен загружать весь файл, читать его строки в массив, удалять из массива соответствующий элемент (строку), заново записывать файл построчно. Тотже алгоритм для редактирования, только вместо удаления, он должен заменять запись. Я так понимаю, ты сам реализовывать не собираешся это, так что своруй из любой гостевой этот функционал.
PHP: <?php $stroka = 3; //Номер строки на удаление. Передавать этот параметр через ссылку гетом. $file = file("gb.txt"); //Читаем построчно unset($file[$stroka]); //Обнуляем нужную строку file_put_contents("gb.txt", ""); //Стираем всё содержимое файла foreach($file as $value) //Воссоздаём файл, но без нужной строки { @$str .= $value; } file_put_contents("gb.txt", $str); //Записываем ?>
+Sten+ Так не получится. Твой код не удалит нужную строку. Ниже код - проще и меньше Код: PHP: <?php $stroka = 3; $file = file("gb.txt"); unset($file[$stroka-1]); file_put_contents("gb.txt", $file); ?>
host Не знал, что file_put_contents массив как строку записать может. Спасибо, буду знать) А подсчёт строк начинается тоже с 0, у меня всё верно.
+Sten+ До обработки: Код (Text): Для этой функции вы можете использовать URL в качестве имени файла. Eсли была включена опция "fopen wrappers". Смотрите более подробную информацию об определении имени файла в описании функции fopen(). A также список поддерживаемых протоколов URL в List of Supported Protocols/Wrappers После обработки: Код (Text): Для этой функции вы можете использовать URL в качестве имени файла. Eсли была включена опция "fopen wrappers". Смотрите более подробную информацию об определении имени файла в описании функции fopen(). Как видишь не ту строку удалил код твой. Должна была стереться строка Код (Text): Смотрите более подробную информацию об определении имени файла в описании функции fopen(). а не Код (Text): A также список поддерживаемых протоколов URL в List of Supported Protocols/Wrappers + Так что вот так.
host Перестань думать как человек, когда программируеш . Люди начинают счёт с 1, а компьютер с 0. Что-бы то ни было: апельсины, кролики, или строки файла. В данном топике мы обсуждаем гостевую книгу немо, в ней идёт перебор массива строк: , где $i - номер каждой строки, и начинается счет с 0. Далее идет выод сообщения. В каждой интерации выводится новое сообщение. Он хочет вставить ссылку типа Код (Text): <a href="delete.php?stroka=$i">удалить</a> в каждую интерацию. Для твоего кода ему придется вставить: Код (Text): <a href="delete.php?stroka=".($i+1).""> .
ЛЮДИ!!! Кау удалить - это не проблема )) Мне надо возле сообщения крестик "удалить" с номером строки )))
host ок , файл gb.txt: Код (Text): asdf - [b]0 строка[/b] sdfsd - 1 строка fsdfsd - 2 строка fsdfs - 3 строка dfsd - 4строка fsdfsdf - 5 строка sdfsdf - 6 строка Правильно??!)
Код (Text): asd~asdg~dfh -1 asd~asdg~dfh -2 asd~asdg~dfh -3 asd~asdg~dfh -4 asd~asdg~dfh -5 asd~asdg~dfh -6 Воть тяк
Nemo PHP: $content .= ' <table border="1" width="100%" cellspacing="1" style="border-collapse: collapse" bordercolor="#000000"> <tr> <td align="center"><b><font size="4">'.$element[0].'</font></b></td> <td align="center"><b><font size="4">'.$element[1].'</font></b></td> </tr> <tr> <td colspan="2" align="justify">'.$element[2].'<br /><a href="delete.php?stroka='.$i.'">удалить</a></td> </tr> </table><hr>'; А в фойл delete.php код выше, но $stroka = $_GET['stroka'];