Как написать гостевую книгу на PHP?
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
Как написать гостевую книгу на PHP? - 2009-10-28 16:16:38.286666
|
|
|
Darth Padla
Сообщений: 33
Оценки: 0
Присоединился: 2009-10-28 16:02:48.713333
|
Мне нужно написать гостевую книгу.вот как всё просто.Пока конкретных вопросов нет-просто не понимаю,как это должно работать.
|
|
|
RE: Помогите с PHP - 2009-10-28 18:45:14.670000
|
|
|
horiz
Сообщений: 892
Оценки: 0
Присоединился: 2008-11-03 18:33:09.006666
|
Если обязательно написать самому, то вот тебе в помощь книга: М.Кузнецов И.Симдянов "PHP Практика создания web-сайтов. 2-е издание". Там приведено готовое решение с обьяснениями. Будет на что ориентироваться.
|
|
|
RE: Помогите с PHP - 2009-10-29 09:26:00.726666
|
|
|
Darth Padla
Сообщений: 33
Оценки: 0
Присоединился: 2009-10-28 16:02:48.713333
|
Вот что я за ночь накодил: Файл первый,с формой- <form method="get" action="файл второй"> <textarea name="msg"….. <input type="text" name="name"…. кнопки очистить и отправить </form> Сохранялка,вынесена в другой файл,где вместо формы написано ваше сообщение добавлено. Я вынес сохранялку в другой файл,так как иначе можно было добавлять забитое в форму сообщение кнопкой обновить браузера,причем много раз подряд. <? if(!$_GET[msg]==""){ $base=fopen('Base.txt','a'); if(is_writable('Base.txt')==false){echo "а вот хуй";} $date = date("d.m.y - H:i:s"); $stroka=$_GET[name]." ^^".$_GET[msg]." ^^".$date." ^^\n "; fputs($base,$stroka); fclose($base); $_GET[msg]="";} else {echo "джаваскриптом сказано,что форма пуста";} ?> Но проблема никуда не делась-после отправки сообщения снова можно нажимать кнопку обновить,и отправлять его снова и снова. Вопросы: 1.как очистить $_GET[msg] и $_GET[name]? 2.как альтернатива 1-как заставить посетителя сразу уйти со страницы обработчика?Например,она несколько секунд стоит,а потом автоматически переходит обратно на страницу файла с формой.пытался сделать это с помощью <body onLoad=" и window.open('файл первый') window.close,но почему то ничего не вышло.подозреваю ссебя в криворукости. 3.Базой нужно как-то управлять,хотя бы чистить ее.Как мне это организовать,если отбросить чистку файла base.txt руками?
|
|
|
RE: Помогите с PHP - 2009-10-29 09:39:42.386666
|
|
|
Darth Padla
Сообщений: 33
Оценки: 0
Присоединился: 2009-10-28 16:02:48.713333
|
Спасибо,Spam,за готовый сайт)но мне интересно написать ее самому.
|
|
|
RE: Помогите с PHP - 2009-10-29 12:44:05.046666
|
|
|
horiz
Сообщений: 892
Оценки: 0
Присоединился: 2008-11-03 18:33:09.006666
|
Darth Padla ты хочешь написать гостевуху, сохраняющую данные в файл? Для начала можешь поразвлекаться, конечно, но это далеко не лучший вариант. Надо использовать базу. Внимательно просмотри код, что тебе скинул Sрam. Используй его как отправную точку. Если ничего не поймешь, то книгу в руки и читать, читать, читать…
|
|
|
RE: Помогите с PHP - 2009-10-30 12:52:50.056666
|
|
|
Darth Padla
Сообщений: 33
Оценки: 0
Присоединился: 2009-10-28 16:02:48.713333
|
$zapros="SELECT * FORM Guestbook"; $rezult=mysql_query($zapros,$link); $A=mysql_num_fields($rezult); Warning: mysql_num_fields(): supplied argument is not a valid MySQL result resource Я заемучился ошибку искать,помогите Первый вопрос остался вопросом. Кстати,ответ на мой второй вопрос,вдруг кому пригодится: Вставьте в head: <meta HTTP-EQUIV= "Refresh" CONTENT="время нахождения на странице в секундах,можно ставить 0; куда по истечению этого времени отправляться">
|
|
|
RE: Помогите с PHP - 2009-10-30 13:09:54.393333
|
|
|
horiz
Сообщений: 892
Оценки: 0
Присоединился: 2008-11-03 18:33:09.006666
|
Первое, что приходит в голову, это то, что таблица Guestbook не создана.
|
|
|
RE: Помогите с PHP - 2009-10-30 14:50:38.193333
|
|
|
Darth Padla
Сообщений: 33
Оценки: 0
Присоединился: 2009-10-28 16:02:48.713333
|
Создана и не пуста, название написано правильно. И еще три вопроса- чем .php отличается от .phtml? Что такое ассоциативный массив, и в чем его отличие от неассоциативного? Часто вижу в коде сайта, благородно залитого для меня доблестным Spamом, коему от меня еще одно большое спасибо, такую конструкцию- if(переменная){} или if(!переменная){}. это равносильно if(переменная!==0 или ""){} и if(переменная==0 или ""){} соответственно? Если нет, то какая логическая конструкция там используется по умолчанию? Ругается на: while ($line = mysql_fetch_array($result, MYSQL_BOTH) { … } Таким матом:Parse error: syntax error, unexpected '{' Причем фигурных скобок,кроме этих двух,ни в коде,ни в комментариях нет вообще,и когда там было вот так: while ($line = mysql_fetch_assoc($result)) { … } Всё работало.
|
|
|
RE: Помогите с PHP - 2009-10-30 15:05:21.393333
|
|
|
horiz
Сообщений: 892
Оценки: 0
Присоединился: 2008-11-03 18:33:09.006666
|
К регистру названия таблиц не чувствительна. Чтобы найти ошибку в работе с базой попробуй проделать все запросы скрипта из консоли. quote:
чем .php отличается от .phtml? Грубо говоря, ничем. Ты можешь так настроить сервер, что даже .jpg будет рассматриваться как скрипт. quote:
Что такое ассоциативный массив, и в чем его отличие от неассоциативного? Неассоциативный массив - массив храняший ряд значений, к которым можно обратиться по номеру. Ассоциативный массив - массив хранящий связки ключь=>значение. К любому значению можно обратиться по ключу. quote:
if(переменная){} или if(!переменная){}. это равносильно if(переменная!==0 или ""){} и if(переменная==0 или ""){} соответственно? Правильно, но не совсем. Более верно: if(переменная){} ————> if(переменная!=false){} if(!переменная){} ————> if(переменная==false){}
|
|
|
RE: Помогите с PHP - 2009-10-30 15:29:29.396666
|
|
|
Darth Padla
Сообщений: 33
Оценки: 0
Присоединился: 2009-10-28 16:02:48.713333
|
Нашел ошибку в SQL- запросе- в нем написано FORM вместо FROM. Это ведь баг называется? Значит,в неассоциативном массиве ключом является номер,так? Переменных много разных. Тип NULL всегда false Для численных false <=> 0 Для строковых <=> "" Для массивов - отсутсвие элементов(все элементы==false) Так? Также имеется тип данных object, в который я совсем не въехал. Является ли resourсe строковой переменной?
|
|
|
RE: Помогите с PHP - 2009-10-30 15:40:28.270000
|
|
|
horiz
Сообщений: 892
Оценки: 0
Присоединился: 2008-11-03 18:33:09.006666
|
quote:
while ($line = mysql_fetch_array($result, MYSQL_BOTH) { … } Ты забыл одну круглую скобку: while ($line = mysql_fetch_array($result, MYSQL_BOTH)){ … } quote:
Переменных много разных. Тип NULL всегда false Для численных false <=> 0 Для строковых <=> "" Для массивов - отсутсвие элементов(все элементы==false) Так? NULL - это значение обозначающее отсутствие значения, т.е. пустота. false - это значение логического типа, обозначающее ложь Если сравнивать значения баз учета типа то: NULL==false==0=="" Но если мы сраним с учетом типа то: NULL===false //вернет false false===0 //вернет false 0==="" //вернет false object - объект. Что это поймешь, когда дойдешь до объектно-ориентированного программировавния.
|
|
|
RE: Помогите с PHP - 2009-10-30 15:55:05.170000
|
|
|
Darth Padla
Сообщений: 33
Оценки: 0
Присоединился: 2009-10-28 16:02:48.713333
|
Спасибо. А что насчет массивов?Например,как работает условие у того самого while ($line = mysql_fetch_array($result, MYSQL_BOTH)){}?
|
|
|
RE: Помогите с PHP - 2009-10-30 16:10:56.990000
|
|
|
horiz
Сообщений: 892
Оценки: 0
Присоединился: 2008-11-03 18:33:09.006666
|
Функция mysql_fetch_array() принимает в качестве аргумента дескриптор результирующей таблицы, возвращает первую строку этой таблицы в виде массива и переводит указатель на следующую строку (значит, что при втором вызове функция вернет вторую строку). Когда достигнут конец таблицы возвращается не массив а просто логическое false.
|
|
|
RE: Помогите с PHP - 2009-10-30 16:14:30.796666
|
|
|
Darth Padla
Сообщений: 33
Оценки: 0
Присоединился: 2009-10-28 16:02:48.713333
|
Спасибо.вот здесь ты мне по крупному глаза раскрыл.
|
|
|
RE: Помогите с PHP - 2009-10-30 17:31:48.106666
|
|
|
Darth Padla
Сообщений: 33
Оценки: 0
Присоединился: 2009-10-28 16:02:48.713333
|
Как мне сделать так,чтобы в базе данных поля упорядочивались по одному из столбцов,содержащему номера? при добавлении поля я в этот столбец ничего не записываю,у него стоит параметр auto_increment
|
|
|
RE: Помогите с PHP - 2009-10-30 18:02:11.653333
|
|
|
Darth Padla
Сообщений: 33
Оценки: 0
Присоединился: 2009-10-28 16:02:48.713333
|
Перепутал поля и ряды. На: CREATE TABLE `files` ( `id_file` INT NOT NULL AUTO_INCREMENT , `FileUrl` TEXT NOT NULL , `NameFile` TEXT NOT NULL , `Comment` TEXT NOT NULL , `hide` INT NOT NULL ) Ругается: #1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key Попробовал прикрутить Primary key: CREATE TABLE `files` ( `id_file` UNSIGNED TINYINT NOT NULL AUTO_INCREMENT , `FileUrl` TEXT NOT NULL , `NameFile` TEXT NOT NULL , `Comment` TEXT NOT NULL , `hide` ENUM( 'hide', 'show' ) DEFAULT 'show' NOT NULL , PRIMARY KEY ( 'id_file' ) , ); Говорит: #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''id_file'), )' at line 7
|
|
|
RE: Помогите с PHP - 2009-10-30 18:34:19.680000
|
|
|
horiz
Сообщений: 892
Оценки: 0
Присоединился: 2008-11-03 18:33:09.006666
|
Если объявил столбец как AUTO_INCREMENT, надо, чтобы он был индексным. CREATE TABLE `files` (
`id_file` INT NOT NULL PRIMARY KEY AUTO_INCREMENT ,
`FileUrl` TEXT NOT NULL ,
`NameFile` TEXT NOT NULL ,
`Comment` TEXT NOT NULL ,
`hide` INT NOT NULL ) Упорядочить данные можно при выводе: SELECT * FROM files ORDER BY id_file;
|
|
|
RE: Помогите с PHP - 2009-10-30 18:38:38.150000
|
|
|
Darth Padla
Сообщений: 33
Оценки: 0
Присоединился: 2009-10-28 16:02:48.713333
|
Как удалять свои посты? А как упорядочить по убыванию?
|
|
|
RE: Помогите с PHP - 2009-10-30 19:05:21.950000
|
|
|
horiz
Сообщений: 892
Оценки: 0
Присоединился: 2008-11-03 18:33:09.006666
|
Удалять свои посты нельзя, можно просто стереть все содержание при редактировании. Сортировка по убыванию: SELECT * FROM files ORDER BY id_file DESC; quote:
Попробовал прикрутить Primary key: CREATE TABLE `files` ( `id_foto` TINYINT NOT NULL AUTO_INCREMENT , `FileUrl` TEXT NOT NULL , `NameFile` TEXT NOT NULL , `Comment` TEXT NOT NULL , `hide` ENUM( 'hide', 'show' ) DEFAULT 'show' NOT NULL , PRIMARY KEY ( 'id_foto' ) , ) Говорит: #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''id_foto'), )' at line 7 Делай так: CREATE TABLE `files` ( `id_foto` TINYINT NOT NULL AUTO_INCREMENT ,
`FileUrl` TEXT NOT NULL ,
`NameFile` TEXT NOT NULL ,
`Comment` TEXT NOT NULL ,
`hide` ENUM( 'hide', 'show' ) DEFAULT 'show' NOT NULL ,
PRIMARY KEY (id_foto)
) Лишняя запятая в конце была и при объявлении индекса не надо брать имя столбца в кавычки.
|
|
|
RE: Помогите с PHP - 2009-10-30 19:14:04.276666
|
|
|
Darth Padla
Сообщений: 33
Оценки: 0
Присоединился: 2009-10-28 16:02:48.713333
|
Перечитал тред, выковырял вопросы,оставшиеся вопросами: 1. Как очистить $_GET[msg] и $_GET[name]? 2. Как сделать так,чтоб при закрытии вкладки открывалось еще одно окно? Такая конструкция не работает,и ошибок не выдает: <body onUnLoad="window.open("index.html", "", "")">
|
|
|
RE: Помогите с PHP - 2009-10-30 20:13:18.993333
|
|
|
oRb
Сообщений: 4044
Оценки: 597
Присоединился: 2007-03-28 18:45:06.630000
|
1.$_GET[msg] = $_GET[name] = null;
unset($_GET[msg], $_GET[name]); 2. Если onunload не пашет, тогда скорее всего такой трюк в современных браузерах более не актуален.
|
|
|
RE: Помогите с PHP - 2009-10-31 22:44:02.870000
|
|
|
Darth Padla
Сообщений: 33
Оценки: 0
Присоединился: 2009-10-28 16:02:48.713333
|
Гостевая написана.теперь нужна фотогалерея)
|
|
|
RE: Помогите с PHP - 2009-11-01 02:20:51.486666
|
|
|
Darth Padla
Сообщений: 33
Оценки: 0
Присоединился: 2009-10-28 16:02:48.713333
|
Вот код формы: <form action=action.php method="POST"> <input class=input type=text name=name> <input class=input type=text name=comment> <input class=input type=file name=image> <input type=checkbox name=hide> action.php одна из первых строк кода- empty($_POST['image']) - выдает true.WTF?
|
|
|
RE: Помогите с PHP - 2009-11-01 02:27:10.490000
|
|
|
][aKER_теоретик
Сообщений: 1192
Оценки: 0
Присоединился: 2009-03-30 09:17:08.123333
|
Уважаемый товарищ падла, Вам тут целиком сайт написать?
|
|
|
RE: Помогите с PHP - 2009-11-01 02:29:35.363333
|
|
|
Darth Padla
Сообщений: 33
Оценки: 0
Присоединился: 2009-10-28 16:02:48.713333
|
Нет,спасибо,мне уже написали-четвертый пост) мне объяснить как оно работает.точнее почему мой практически идентичный вариант не работает.
|
|
|
RE: Помогите с PHP - 2009-11-01 02:31:14.580000
|
|
|
][aKER_теоретик
Сообщений: 1192
Оценки: 0
Присоединился: 2009-03-30 09:17:08.123333
|
Есть много готовых скриптов фотогалереи на php в интернете. Я только что написал в гугле "фотогалерея php" и получил массу полезных ссылок. Можно скачать эти скрипты и построчно разобраться как они работают.
|
|
|
RE: Помогите с PHP - 2009-11-17 00:01:13.676666
|
|
|
Darth Padla
Сообщений: 33
Оценки: 0
Присоединился: 2009-10-28 16:02:48.713333
|
у меня в таблицу не помещается больше 127 элементов( до 127 полет нормальный,а потом- Duplicate entry '127' for key 1
|
|
|
RE: Помогите с PHP - 2009-11-17 10:09:08.046666
|
|
|
Darth Padla
Сообщений: 33
Оценки: 0
Присоединился: 2009-10-28 16:02:48.713333
|
Все,въехал. key 1 был tinyint
|
|
|
|
|