Вопрос № 111486: Подскажите, что значит и делает это:
$message=<<< EOMSG
если можно то скиньте ссылку на описание.
Заранее спасибо!...Вопрос № 111489: Здравствуйте! Возникла проблема при обновлении браузер (например, нажатем кнопки F5) происходит повтроный ввод информации в базу данных из формы, как этого избежать? Мой код приведем в приложении....Вопрос № 111535: При выводе значений из MySQL при помощи Функции mysql_fetch_array дублирует их столько раз сколько полей было выбрано рпи выборке из БД. Почему?
И приходится при выводе значений на страницу, указывать инкремент счетчика равный количеству полей вы...Вопрос № 111640: Здравствуйте!
Возникли такие вопросы:
1) каким образом можно заставить ссылку в форме работать как кнопку, ну т.е. чтоб при нажатии на неё она отправила post запрос?...
Вопрос № 111.486
Подскажите, что значит и делает это:
$message=<<< EOMSG
если можно то скиньте ссылку на описание.
Заранее спасибо!
Отправлен: 29.11.2007, 02:34
Вопрос задала: Mart (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: proger
Здравствуйте, Mart!
это сиснтаксиc heredoc.
В PHP строковые константы можно заключать либо в двойные кавычки, либо в одинарные либо вот в такие конструкции heredoc.
Синатксиси таков
$var = <<< ID // можно вместо ID использовать любой идентификатор
здесь идет строка
здесь идет строка
здесь идет строка
ID; // а это закрывающий идентификатор и должен быть точно таким же как и открывающий
Ответ отправил: proger (статус: 2-ой класс)
Ответ отправлен: 29.11.2007, 11:17
Вопрос № 111.489
Здравствуйте! Возникла проблема при обновлении браузер (например, нажатем кнопки F5) происходит повтроный ввод информации в базу данных из формы, как этого избежать? Мой код приведем в приложении.
Приложение:
Отправлен: 29.11.2007, 04:37
Вопрос задала: Mart (статус: Посетитель)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Товарищ Бородин
Здравствуйте, Mart!
Во-первых, можно индексировать записи в базе данных, дабы не появлялось одинаковых записей. Я говорю про присвоение какому-либо полю в таблице индекса INDEX или UNIQUE. Но это способ довольно ресурсоемкий. Кроме того, большинство людей вообще переписываются короткими и пошлыми фразами типа "привет как дела".
Другой способ - проставить в форме, которую Вы отправляете, атрибут action с несколько измененным значением - например, добавляйте в конец url результат работы функции time(). Например, таким образом(см. приложение, п. 1). Что с этим потом делать? Можно проверить что текущее значение, возвращаемое функцией time() равно значению переменной $_GET['rand'] и делать запись в базу только в этом случае. Опасность есть и здесь. Время работы такой конструкции имеет порядок примерно 0.0001 с. Представим себе ситуацию,
что форму мы отослали 29 ноября 2007 года в 4:37:43.99999. Тогда форма может не быть принятой потому, что time() возвратит значение, отличное от значения переменной $_GET['rand']. Чем быстрее работает скрипт, тем ниже такая вероятность. Она и так, вообще-то, низкая, но она есть, хотя на первый взгляд и кажется абсурдной.
После того, как мы отослали форму, при нажатии кнопки F5 запрашиваемый url не изменится. Зато изменится значение time(), и форма не будет принята.
После того, как форма загружена, можно сделать перенаправление на исходную страницу путем посыла заголовка "Location: URL" функцией header. Но этот способ не сработает, если Вы уже что-то при этом в браузере вывели. Например, сообщение какое-то, да достаточно вывести один пробел, как этот способ уже не будет работать. Тогда можно применить JavaScript(см. п.2 приложения). Но и у этого способа есть крупный недостаток - некоторые "умные" пользователи отключают JavaScript.
Вот так-то. Удачи!
Приложение:
--------- Ничто не сближает людей так, как совместное преступление.
Ответ отправил: Товарищ Бородин (статус: Студент)
Ответ отправлен: 29.11.2007, 08:44
Отвечает: PVS
Здравствуйте, Mart!
Оба способа из предыдущего ответа аж просятся "склеить" их:
Сделайте в таблице поле "время добавления" с уникальным индексом и записывайте в него значение параметра rand.
Ответ отправил: PVS (статус: Специалист)
Ответ отправлен: 29.11.2007, 10:09
Отвечает: Райкин Сергей Александрович
Здравствуйте, Mart!
У меня на форме стоит защита - капча, и при занесении данных в базу сесиия с капчей обнуляеться, при этом нажимая Ф5 пользователь видит - "Вы не верно ввели число с картинки".
Второе, чем я пользуюсь, является проверка всех или критических полей, на наличие дубликатов.
Приложение:
--------- программист должен работать в свое удовольствие
При выводе значений из MySQL при помощи Функции mysql_fetch_array дублирует их столько раз сколько полей было выбрано рпи выборке из БД. Почему?
И приходится при выводе значений на страницу, указывать инкремент счетчика равный количеству полей выборки, что неудобно.
При использовании mysql_fetch_row мне не нравится, что нельзя пользоваться ассоциативными ключами.
Приложение:
Отправлен: 29.11.2007, 12:04
Вопрос задал: Schel4ok (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Ярослав
Здравствуйте, Schel4ok!
а вы непробовали вот так
........
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
echo "\\t\\t<td><a href=\\"$line[filename]\\" title=\\"$line[menuitem]\\">$line[menuitem]</a></td>\\n";
}
.......
и цикл там не нужен, у вас ведь есть конструкция while
Ответ отправил: Ярослав (статус: 1-ый класс)
Ответ отправлен: 29.11.2007, 12:14
Вопрос № 111.640
Здравствуйте!
Возникли такие вопросы:
1) каким образом можно заставить ссылку в форме работать как кнопку, ну т.е. чтоб при нажатии на неё она отправила post запрос?
Отвечает: proger
Здравствуйте, Артемка Вич Нетович!
Признаться честно я думал у вас будет несколько вопросов, судя по тому как вы начали..
зачем здесь использовать PHP не понятно... все это делается с помощью javaScript. Для этого просто в атрибуте href тега вашей ссылки нужно написать javascript код, который имитирует нажатие кнопки submit в форме. Пример ниже
при этом ссылка может находиться ка внутри форму так и за пределами нее))
Приложение:
Ответ отправил: proger (статус: 2-ой класс)
Ответ отправлен: 29.11.2007, 22:24
Отвечает: Товарищ Бородин
Здравствуйте, Артемка Вич Нетович!
PHP такое не позволяет делать однозначно, он для других целей предназначен. Вопрос лежит в плоскости JavaScript. Итак, чтобы отправить данные методом POST, GET, да все равно каким методом, надо прописать в атрибуте onclick код приблизительно такой:
document.getElementById('значение атрибута ID формы').submit();
Но еще лучше написать код прямо в href`е ссылки:
href="javascript: document.getElementById('значение атрибута ID формы').submit();"
Проверил код на IE7, работает. Но поскольку submit зашит в JavaScript уже издревле, должно сработать в других браузерах.
--------- Ничто не сближает людей так, как совместное преступление.
Ответ отправил: Товарищ Бородин (статус: Студент)
Ответ отправлен: 29.11.2007, 22:26
Отвечает: Миленин Александр
Здравствуйте, Артемка Вич Нетович!
Вот таким образом: <input type="button" onClick="document.location.href='http://site.ru';" value="Push">
P.S. К PHP это никакого отношения не имеет.
Ответ отправил: Миленин Александр (статус: 8-ой класс)
Ответ отправлен: 30.11.2007, 00:39