PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (8): « 1 2 [3] 4 5 6 7 8 »

> Найдено сообщений: 114
HotBird Отправлено: 26 Февраля, 2011 - 23:23:00 • Тема: Firefox и MySQL INSERT • Форум: SQL и Архитектура БД

Ответов: 17
Просмотров: 120
ALEN не горячись. Знаю я про HTTP_REFERER и про REQUEST_URI и говорю тебе ёще раз, я такой вариант не считаю решением, и ничего тут красивого нет, это тоже самое как если в машине мост отвалился а я возьму и на неё сверху битонную плиту поставлю, она прижмёт мост и так ездить можно.
Хочеш можеш на своих сайтах так делать.

Вместо того чтобы доказывать свою правоту, лучше бы помог, переделать функцию джаваскрипта, так чтобы она при нажатии на ячейку таблицы переход делала по ссылке, а при клике по ссылке внутри этой ячейки переход эта функция не делала, и переход осуществлялся как обычно средствами браузера.

Хотя ненадо я уже разобрался. Средствами jQuery я это сделал. Теперь при нажатии на ссилку в нутри ячейки осуществляется один запрос, и дополнительный переход из джава скрипта не происходит, соответсвенно в таблицу записывается одна строка, как надо.

Спасибо всем за помощь, и подсказки в правильном направлении.
HotBird Отправлено: 26 Февраля, 2011 - 17:55:47 • Тема: Firefox и MySQL INSERT • Форум: SQL и Архитектура БД

Ответов: 17
Просмотров: 120
ALEN пишет:
Чем тебе не нравится способ организации твоей задачи моим примером??

Спасибо, за подсказку, но этот метод не подходит.
1. Он не решает основной проблемы, два запроса всёравно будут отправлятся.
2. Увеличит нагрузку на сервер в следствии частого перенапрвления на самого себя.
3. Допустим отправился первый запрос, сработало условие что реф. ссылка с текущей не равны, сделал запись, перенаправился на самого себя. В это время приходит другой запрос который не знает о существовании первого и сценарий повторяется. В результате вместо двух запросов сервер обработает четыре.

Как бы мне намного лучше получается исправить свой джава скрипт чтобы по-нормальному отправлялся один запрос.
HotBird Отправлено: 26 Февраля, 2011 - 11:29:59 • Тема: Firefox и MySQL INSERT • Форум: SQL и Архитектура БД

Ответов: 17
Просмотров: 120
Повтавил в конце ссылки после параметров #. Теперь при нажатии на ту ссылку на которй мы уже находимся не происходит обновление страницы - это конечно полезно, пожалуй так и оставлю. Но основной проблемы это не решило, при нажатии на другой пункт меню всёравно происходит два запроса.
Думаю тут как то надо по другому организовать джаваскрипт.
HotBird Отправлено: 25 Февраля, 2011 - 23:39:51 • Тема: Firefox и MySQL INSERT • Форум: SQL и Архитектура БД

Ответов: 17
Просмотров: 120
Проверил на тёх компютерах, всюду такой же результат с фаерфоксом.
Champion пишет:
На firefox можно поставить firebug и посмотреть, почему он шлет 2 запроса. Вообще не должно такого быть.

Да согласен что не может быть, но есть Улыбка
Фаербаг у меня установлен и пользуюсь им часто, но как-то не обратил внимания на вкладку "Сеть" где явно видно что при клике по ссылке браузер посылает такие запросы:

URL | Статус | Домен | Размер | Время
GET index.php?параметры | Aborted | mydomen.com | ? | 15ms
GET index.php?параметры | 200OK | mydomen.com | 8,4 KB | 250ms
Дальше загрузка джаваскриптов
Загрузка стилей
Загрузка картинок

Вы правы, он действительно посылает два запроса первый из которых почему-то Aborted, но обращение к странице произошло и как результат запись в базу произошла. Но почему фаерфокс это делает именно при клике мышкой по ссылке? Пробовал на нескольких других случайных сайтах, такого двойного запроса нет.
На моих двух других сайтах такого тоже не наблюдается.
Дальше начинаю соглашатся с ALEN что действительно причина получается в моём коде.
Но как узнать почему именно происходит этот первый запрос?
У меня подозрение на три причины:
1. HTML-код
2. Джава скрипты
3. Заголовки Last-Modified и Expires, возможно их надо использовать? (они у меня вообще не передаются)

(Добавление)

УРА!
Методом исключения нашёл причину. Виновата оказалась одна функция джаваскрипта. Дело в том что у меня пункты меню выводятся в ячейках таблицы внутри которой ссылка на опредилённую страницу, на каждую ячейку повешано событие onClick с вызовом функции и передачей ей в качестве параметра ссылки для перехода. Это сделано для того чтобы пользователь не заморачивался прицеливаясь именно на ссылку а мог кликнув по ячейке перейти по нужной ссылке. Так вот получается что если кликать по ссылке то срабатывает два перехода одновременно один по джаваскрипту другой по клику на ссылку, поскольку ссылка находится внутри ячейки, и клик поссылке так же считается кликом по ячейке.

Надо завтра подумать как переделать.
HotBird Отправлено: 25 Февраля, 2011 - 19:16:53 • Тема: Firefox и MySQL INSERT • Форум: SQL и Архитектура БД

Ответов: 17
Просмотров: 120
Даже если добавить проверку на время, то где гарантия что другой пользователь в ту же секунду не нажмёт на тот же пункт ?
(Добавление)
пункты меню оформлены в виде обычной ссылки <a href=""></a>
HotBird Отправлено: 25 Февраля, 2011 - 19:00:49 • Тема: Firefox и MySQL INSERT • Форум: SQL и Архитектура БД

Ответов: 17
Просмотров: 120
PHP:
скопировать код в буфер обмена
  1. $query="INSERT INTO `clicks` SET
  2.                         `time`='".microtime()."',
  3.                         `folder`=(SELECT folder FROM menu_items WHERE id_folder=".$id_folder." LIMIT 0,1),
  4.                         `sub_folder`=(SELECT sub_folder FROM menu_items WHERE id_sub_folder=".$id_sub_folder." LIMIT 0,1),
  5.                         `section`=(SELECT section FROM menu_items WHERE id_section=".$id_section." LIMIT 0,1),
  6.                         `id_cat`='".$id_cat."',
  7.                         `id_folder`='".$id_folder."',
  8.                         `id_sub_folder`='".$id_sub_folder."',
  9.                         `id_section`='".$id_section."'";
  10.         mysql_query($query,$link) or die (mysql_error());
HotBird Отправлено: 25 Февраля, 2011 - 18:47:25 • Тема: Firefox и MySQL INSERT • Форум: SQL и Архитектура БД

Ответов: 17
Просмотров: 120
Всем привет!
На одном из сайтов (написан на PHP) возникла необходимость вести статистику кликов по пунктам меню. Но есть одна проблема. Только в браузере Firefox и только при клике мышкой по пукте меню в таблицу записывается не одна строка а две одинаковые. В Опере и IE всё нормально - всталяется одна строка. Если в Firefox скопировать ссылку на пункт меню, вставить в адресную строку и нажать enter то вставляется одна строка.
Для дополнительной информации в таблицу добавил ещё одно поле и туда записываю микросекунды когда происходит запрос к базе. При дублировании строк в этом поле записывается время с разницей примерно 0,3-0,5 сек , тоисть происходит именно два отдельных запроса INSERT.
Может кто-то уже встречался с такой проблемой ?
HotBird Отправлено: 29 Января, 2011 - 20:43:37 • Тема: Проблема с датой! • Форум: Напишите за меня, пожалуйста

Ответов: 3
Просмотров: 38
PHP:
скопировать код в буфер обмена
  1. $nachalo_sutok = mktime(0,0,0,date('n'),date('j'),date('Y'));
  2. $row = mysql_query("SELECT * FROM users WHERE `time` > '".$nachalo_sutok."'");
  3. $result = mysql_num_rows($row);
  4. echo $result;
HotBird Отправлено: 25 Января, 2011 - 22:26:24 • Тема: Кодировка UTF-8 • Форум: SQL и Архитектура БД

Ответов: 6
Просмотров: 43
А если в скрипте выполнить mysql_query("SET NAMES utf8"); ?
HotBird Отправлено: 23 Января, 2011 - 23:16:59 • Тема: Чтение из файла • Форум: Программирование на PHP

Ответов: 21
Просмотров: 1507
ucob пишет:
<a href="номер строки">

"номер строки" - это куда ссылка вести будет?
HotBird Отправлено: 23 Января, 2011 - 21:49:13 • Тема: Чтение из файла • Форум: Программирование на PHP

Ответов: 21
Просмотров: 1507
Вот фрагмент кода из вашего файла, с вырезаным ненужным в даном случае кодом.
<?php

//$arr = file('music/links.txt');
$arr=range(0,99);//допустим файл имеет 100 строк, и создаётся масив с ключами от 0 до 99
$count = count ($arr);
$last='';
for ($j=$count-1; $j>=$count-11; $j--)
$last .= $arr[$j].'<br>';


$goodout = <<<EOF
<!-- <Содержиомое> -->
$last
<!-- <Содержиомое> -->
EOF;

// Вывод результата
echo $goodout;

?>

Цикл прекрасно работает и выводит как надо:
99
98
97
96
95
94
93
92
91
90
89

Скопируйте этот код в отдельный файл php и выполните. Просто не понимаю как может у вас ничего не выводить.
HotBird Отправлено: 23 Января, 2011 - 19:19:35 • Тема: Чтение из файла • Форум: Программирование на PHP

Ответов: 21
Просмотров: 1507
Посмотрел толькочто файл. Сделайте цикл так:
$arr = file('music/links.txt');
$count = count ($arr);
$last='';
for ($j=$count-1; $j>=$count-11; $j--)
$last .= $arr[$j].'<br>';

тогда можете для вывода использовать переменную $last.
HotBird Отправлено: 22 Января, 2011 - 23:13:17 • Тема: Чтение из файла • Форум: Программирование на PHP

Ответов: 21
Просмотров: 1507
ucob пишет:
Просто выводит: = file('music/links.txt'); = count (); for (=-1; >=-11; --) echo .'
';

Что-то я такого не встречал, похоже причина далеко не в самом цикле, навеное придется или выложить весь код скрипта или лучше прикрепить сюда полный файл.
HotBird Отправлено: 22 Января, 2011 - 22:41:49 • Тема: Чтение из файла • Форум: Программирование на PHP

Ответов: 21
Просмотров: 1507
Ну да, при вашей реализации так и будет. Вы в цикле перебираете строки и каждый раз переменной $last присваиваете значение следующей строки, а потом выводите переменную $last, значение которой строка, которая последня присутствовала в цикле.
Вам же duk написал:
echo $arr[$j].'<br>';
а если вам надо запомнить последнеё значение из цикла то сделайте так:
echo $last = $arr[$j].'<br>';
HotBird Отправлено: 22 Января, 2011 - 21:51:22 • Тема: Чтение из файла • Форум: Программирование на PHP

Ответов: 21
Просмотров: 1507
Приведите здесь пожалуйста фрагмент кода для реализации этой задачи, так легче найти ошибку, пока что скрипты телепатичкски не читаю.

Страниц (8): « 1 2 [3] 4 5 6 7 8 »
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB