Здравствуйте. Помогите с одной проблемой. Я сделал гостевую, но она не работает. Судя по всему данные не заносятся в базу. Вот фрагменты кода: PHP: !-- блок отображения сообщений--> <?php $server="database"; $pass="ZgESNqVX "; $user="tuitkar8"; $DB="tuitkar8"; mysql_connect($server,$user,$pass) or die ("Нет соединения с MySQL сервером!"); mysql_query ("CREATE DATABASE IF NOT EXISTS ".$DB) or die ("Не могу создать базу данных gb."); mysql_select_db($DB); mysql_query ("CREATE TABLE IF NOT EXISTS a ( id int(10) unsigned NOT NULL auto_increment, dt datetime DEFAULT '0000-00-00 00:00:00' NOT NULL, name varchar(100) NOT NULL, theme varchar(100), email varchar(100), message text NOT NULL, PRIMARY KEY (id))") or die ("Не могу создать таблицу gb2."); $c=0; $r=mysql_query ("SELECT * FROM a ORDER BY dt DESC"); // выбор всех записей из БД, отсортированных так, что самая последняя отправленная запись будет всегда первой. while ($row=mysql_fetch_array($r)) // для каждой записи организуем вывод. { if ($c%2) $col="bgcolor='#f9f9f9'"; // цвет для четных записей else $col="bgcolor='#f0f0f0'"; // цвет для нечетных записей ?> <table border="0" cellspacing="3" cellpadding="0" width="90%" <? echo $col; ?> > <tr> <td width="150" ><b>Имя:</b></td> <td><?php echo $row['name']; ?></td> </tr> <tr> <td width="150" ><b>E-mail:</b></td> <td><?php echo $row['email']; ?></td> </tr> <tr> <td width="150" ><b>Тема:</b></td> <td><?php echo $row['theme']; ?></td> </tr> <tr> <td width="150" style="color: #000000;">Дата:</td> <td><?php echo $row['dt']; ?></td> </tr> <tr> <td colspan="2" style="color: #000000;">---------------------------------------------------------------</td> </tr> <tr> <td colspan="2"> <?php echo $row['message']; ?> <br><hr> </td> </tr> </table> <?php $c++; } if ($c==0) // если ни одной записи не встретилось echo "Гостевая книга пуста!<br>"; PHP: <form name="myForm" action="add.php" method="post" onSubmit="return splash();"> <input type="hidden" name="action" value="add"> <tr> <td width="20%"> Имя: </td> <td> <input name="name" size="40" style="width: 300px;"> </td> </tr> <tr> <td width="20%"> E-mail: </td> <td> <input name="email" size="40" style="width: 300px;"> </td> </tr> <tr> <td width="20%"> Тема: </td> <td> <input name="theme" size="40" style="width: 300px;"> </td> </tr> <tr height="165"> <td valign="top"> Сообщение: </td> <td width="80%"> <textarea name="message" cols="40" rows="8" wrap=hard style="width: 300px;"></textarea> </td> </tr> <tr> <td> </td> <td><p align="left"><input type="submit" value="Отправить сообщение"> </p> </td> </tr> </form> add.php: PHP: <? $server="database"; $pass="ZgESNqVX "; $user="tuitkar8"; $DB="tuitkar8"; mysql_connect($server,$user,$pass) or die ("Нет соединения с MySQL сервером!"); mysql_select_db($DB); mysql_query("Insert into tuitkar8(dt,name, email, theme, message) VALUES (now(),'$name', $email,'$theme','$message')"); mysql_close(); При открытии гостевой выводится форма и надпись, что гостевая пуста. При добавлении записи ничего не происходит. При попытке просмотреть уникальные значения столбцов таблицы на сервере в зависимомти от выбранного столбца выдаётся ошибка: Очень нужна помощь, подскажите где я ошибся. PHP: PHP:
iliavlad, поясните пож. в каком месте нужно заменить это слово? Как вы могли заметить в коде такого нет. А эта ошибка выводится программой РНРMyAdmin.
Поправка. Я исправил одну ошибку - в add.php в запрсе PHP: mysql_query("Insert into tuitkar8(dt,name, email, theme, message) заменил tuitkar8 на a. Теперь при добавлении новой записи в гостевой появляется новый пост, однако он не содержит введённых значений. Попросту выводится пустое сообщение, без имени, темы и самого сообщения. Посмотрел на серваке через PHPMyAdmin - в таблицу не заносится ничего кроме даты. Возможно проблема в этом: прочитал в одной книжке, что количество значений в скобках PHP mysql_query("Insert into a(dt,name, email, theme, message) VALUES (now(),'$name', '$email','$theme','$message')"); должно соответствовать количеству столбцов в таблице. Вместе с ключевым id у меня в таблице 6 столбцов, в запросе выше - 5. Возможно ошибка в этом? Каким образом включить id в этот список?
где код скамуниздил? читай про register_globals Sql Injection XSS Про каптчи почитай короче читай тут http://phpfaq.ru и купи норм книжку
Mr.M.I.T., скомуниздил - это грубо сказано. Я учусь по исходникам, ковыряю, разбираю, что к чему. Читать длинные мануалы - дико скучно и малоэффективно. Например данную гостевуху я склеил из двух-трёх других + засунл всё в таблицу собственного "изобретения")) Спасибо за ссылку, обязательно последую твоим советам. Но всё же не мог бы ты подсказать, где ошибка?
amen ой, да ошибок много =) код видно - устаревший Гостевых на форуме действительно много, от самых простых и до MVC
kostyl, Mr.M.I.T., эта гостевуха - мой первый опыт использования РНР и над тем результатом, которого я добился на данный момент я корпел не один день - три)). Осталось совсем чуть чуть. Главное, чтоб она худо-бедно заработала, а доводить до ума я её потом буду. Поэтому, если не особо трудно, всё же укажите на ошибки, а я постараюсь их исправить.)) ВСЁ. Я ЕЁ СДЕЛАЛ Оказывается надо было просто убрать знак $ вот отсюда: mysql_query("Insert into a(dt,name, theme, email, message) VALUES (now(),'$name','$theme', '$email','$message')"); Я не указывал таких переменных. Теперь всё работает. Mr.M.I.T., а ты говорил много)))
если первый - очень молодец =) ошибки, потом сам разберёшься начни с гугления про register_globals на phpfaq кстати, хорошо про это написано
Значит гостевую я сделал, теперь очередь за новостной лентой. Почитал тут главу из книги Колисниченко "Самоучитель РНР5" и мои мысли пришли в тупик. Вот значит я собрался делать нов. ленту. Что из себя будет представлять админка к ней? Это будет обычная страница, с полями для ввода данных, которую я сам должен написать? Если да то как я буду на неё попадать? Ясное дело, что ссылка "Администрирование" на главной странице неуместна. И ещё, мне говорили, что нужно будет сделать одну админку для управления всем сайтом, а Колисниченко говорит, что такая админка предоставляется самим хостингом. Вобщем я запутался. Если лучше делать админку (для управления сайтом) самому, то не лучше ли в неё включить управление лентой новостей, гостевой книгой и т.п.? И опять же каким образом получать к ней доступ?
те много книжек нужно читать и много говнокода писать но может... http://www.php.ru/forum/viewtopic.php?t=19830&start=0
Mr.M.I.T., это точно. Но пока в книжке что-нибудь найдёшь (если найдёшь) уйдёт много времени. Я решаю задачи по мере их поступления и пока результаты меня удовлетворяют. Те знания, которые я получил создавая гостевую книгу намного весомее чем те, которые я добыл из книг. Спасибо за ссылку, тред изучу. Я сейчас поэксперементировал с одним исходником новостной ленты. На неё и сообщения и ссылка добавить новость находилась на одной странице. Я вынес эту ссылку на другую - add.php и получил такой результат - на индексе размещаются новости, а чтобы добавить новую, нужно в адресной строке вместо индекса вписать add. На эдде нужно ввести имя и пароль и можно добавлять новость. Вопрос - можно ли такую систему использовать для крупного сайта?