Задача для HTML кодеров и PHP програмистов

Модератор: Злобный

Ответить
Аватара пользователя
Unknown
Продвинутый
Сообщения: 269
Зарегистрирован: Ср янв 25, 2006 21:07
Контактная информация:

Задача для HTML кодеров и PHP програмистов

Сообщение Unknown »

Есть данный код (в HTML/PHP файле, без разницы). При открытие страницы запись в базу данных добавляется дважды. Почему?

Код: Выделить всё

<table>
   <tr>
      <td background=#fff7eb id=message>
         <?php mysql_query("INSERT INTO `res_action` (`type`, `date`, `id`, `from`, `to`, `text`, `viewed`, `hidden`)
VALUES ('hate', '08/08/07 12:15', 1070808121557, 'foo', 'bar', '', '0', '0')"); ?>
      </td>
   </tr>
</table>
Дам семизнак тому кто первый догадается. Контест типо :gg:
Аватара пользователя
Злобный
Завсегдатай
Сообщения: 2716
Зарегистрирован: Сб июн 18, 2005 21:05
Контактная информация:

Сообщение Злобный »

чтобы запись добавилась дважды, твой код должен дважды выполниться, что означает, что или он дважды находится на странице (или находится внутри тела цикла), или страница дважды рендерится. в общем случае такого не произойдет, должны быть какие-то дополнительные условия для возникновения подобной ситуации.

[off]дисклэймер: пхп я в глаза не видел. если то, что я вижу, сильно отличается по логике работы от классического асп, то запрошую пардону.[/off]
Аватара пользователя
Weekers
ГУРУ
Сообщения: 9085
Зарегистрирован: Чт сен 05, 2002 15:55
Откуда: тутошний
Контактная информация:

Сообщение Weekers »

Ничего тут дважды не добавляется.
Аватара пользователя
vivk
Продвинутый
Сообщения: 820
Зарегистрирован: Пн авг 08, 2005 12:14
Контактная информация:

Сообщение vivk »

тоже ничего не увидел, автор в чем <a href=https://bugaga.ru/jokes/ target=_blank>прикол</a>??? )))


единственно что может быть, код в таблице, если в таблице поставить

Код: Выделить всё

<table border=1>
   <tr border=1>
...
то увидем 2 рамки, так же и код может выполнятса 2 раза, но проверять лень.
Аватара пользователя
ZorroGFS
Продвинутый
Сообщения: 961
Зарегистрирован: Вт сен 10, 2002 11:25
Откуда: Кишинёв
Контактная информация:

Сообщение ZorroGFS »

vivk, садись, два.
долго и внимательно курить схему клиент-сервер, дабы выяснить где работает пхп, а где отображается хтмл.

Unknown,
в приведённом примере, кроме бессмысленности помещения инсерта в <табле> и дурного тона смешивания пхп с вывобом, ошибки, приводящий к двойной вставки данных в таблицу, нет.
Аватара пользователя
Weekers
ГУРУ
Сообщения: 9085
Зарегистрирован: Чт сен 05, 2002 15:55
Откуда: тутошний
Контактная информация:

Сообщение Weekers »

ZorroGFS,
Точно подметил.
Аватара пользователя
vivk
Продвинутый
Сообщения: 820
Зарегистрирован: Пн авг 08, 2005 12:14
Контактная информация:

Сообщение vivk »

ZorroGFS,
я же написал что невижу тут 2 вставки.
написал бы чел
<?php mysql_query("INSERT INTO `res_action` (`type`, `date`, `id`, `from`, `to`, `text`, `viewed`, `hidden`)
VALUES ('hate', '08/08/07 12:15', 1070808121557, 'foo', 'bar', '', '0', '0')"); ?>
вопросов не возникло бы, но не зря же он таблицу приплел, ошибка может быть связанна только с ней.
Вопрос в следующем еще, в каком браузере собственно это происходит? Может это какойто хитрый браузер который во время прорисовки таблицы выполняет 2 раза ее содержимое.
Аватара пользователя
Weekers
ГУРУ
Сообщения: 9085
Зарегистрирован: Чт сен 05, 2002 15:55
Откуда: тутошний
Контактная информация:

Сообщение Weekers »

vivk,
Браузер ничего вставить не может. Браузер даже не получит строку <?php... ?>.
Аватара пользователя
vivk
Продвинутый
Сообщения: 820
Зарегистрирован: Пн авг 08, 2005 12:14
Контактная информация:

Сообщение vivk »

Weekers,
мда, верно

хотелось бы тогда от автора узнать ответ
Аватара пользователя
ZorroGFS
Продвинутый
Сообщения: 961
Зарегистрирован: Вт сен 10, 2002 11:25
Откуда: Кишинёв
Контактная информация:

Сообщение ZorroGFS »

Weekers, именно.


vivk, я тебе для этого и советовал всё ж таки почитать как и где работает пхп, а как и где браузер, и разобраться, что начиная со слов "какой-то хитрый браузер" ты сказал полную чушь.
Аватара пользователя
Weekers
ГУРУ
Сообщения: 9085
Зарегистрирован: Чт сен 05, 2002 15:55
Откуда: тутошний
Контактная информация:

Сообщение Weekers »

Ждём афтара с объяснениями. :)
Аватара пользователя
Unknown
Продвинутый
Сообщения: 269
Зарегистрирован: Ср янв 25, 2006 21:07
Контактная информация:

Сообщение Unknown »

Решение задачи: Программист перепутал атрибуты background и bgсolor. В результате td background=#fff7eb вызывает страницу еще раз с якорем #fff7eb, а страница добавляет ещё одну запись в базу. Aтрибут background - задает фоновый рисунок, в данном случае ячейки...

Имхо, шикарный пример ошибки, возникшей на грани HTML и PHP.
Аватара пользователя
Weekers
ГУРУ
Сообщения: 9085
Зарегистрирован: Чт сен 05, 2002 15:55
Откуда: тутошний
Контактная информация:

Сообщение Weekers »

Unknown,
Надо было указать и браузер тогда.
Не думаю, что все браузеры одинаково обрабатывают HTML.
Аватара пользователя
ZorroGFS
Продвинутый
Сообщения: 961
Зарегистрирован: Вт сен 10, 2002 11:25
Откуда: Кишинёв
Контактная информация:

Сообщение ZorroGFS »

Unknown, в опере не работает :)
но подловил, признаю. с другой стороны это пример как плохо написанный код усложняет жизнь. ведь если бы вёрстка выполнялась бы отдельно от рабочего кода и использовала бы цсс то такой бы ошибки и не возникло :)
Аватара пользователя
AnryFlame
Продвинутый
Сообщения: 261
Зарегистрирован: Пн окт 27, 2008 21:14
Откуда: Кишинёв
Контактная информация:

Сообщение AnryFlame »

Для таких задачи, вобщето существую автоматизированные клиенты обрабатывающие код! Пиши-ка товарищь, код в Adobe Dreamviewer CS 3 ! или в Php-Rapid. Довольно качественные программы,для обработки кода. И таких ошибок почти не будет.
Ответить

Вернуться в «Программирование»