Есть код: Код (CODE): <?php $result3 = mysql_query("SELECT MAX(match_id) FROM jos_joomleague_matches WHERE matchpart1_result IS NULL"); while ($match = mysql_fetch_array($result3)) { $result = mysql_query("SELECT COUNT(*) FROM jos_joomleague_tip_results WHERE tip_home > tip_away AND match_id=$match[0]"); $result2 = mysql_query("SELECT COUNT(*) FROM jos_joomleague_tip_results WHERE tip_home < tip_away AND match_id=$match[0]"); while ($rowX = mysql_fetch_array($result, MYSQL_NUM) AND $rowY = mysql_fetch_array($result2, MYSQL_NUM)) { $tips1=$rowX[0]*100/(($rowX[0]+$rowY[0])); $tips2=100-$tips1; бла бла бла } } mysql_free_result($result,$result2,$result3); ?> Денвер показывает мне 500 ошибку, ну не нравится ему эта штука и все тут (хотя работало раньше))) Вот, как переписать запрос чтобы все заработало, где я ошибся? Если можно, то можно ли оптимизировать мой код? Ибо в php я ни бум-бум, но модули для себя однако пишу )
Fanamura, здесь ошибка не в пхп а в запросах к базе. Просто, при ошибке в пхп, ошибку выведет в окне браузера, конечно если вывод ошибок не отключен. А при выводе ошибки сервера, а именно - "500 Internal Server Error" - это - "при обработке запроса на сервере один из его компонентов (например, CGI-программа) выдал аварийный отказ или столкнулся с ошибкой конфи- гурации". В самом пхп коде я как таковых ошибок синтаксиса не нащёл, а вот в запросах к базе .... , я пока с базой сам ещё не полностью разобрался, но такой синтаксис как подстановка напрямую функции в место параметра не прокатит, это не просто переменная, которая воспринимается в двойных кавычках как её содержимое. Иными словами, такая запись - "SELECT COUNT(*)", не пройдёт. Попробуй вместо функций просто переменные подставить, типа так: Код (PHP): <?php .... $count=COUNT(*); $result = mysql_query("SELECT $count FROM jos_joomleague_tip_results .... .... ?> или так: Код (PHP): <?php .... $result = mysql_query("SELECT ".COUNT(*)." FROM jos_joomleague_tip_results .... .... ?> То есть отдели функцию от текста, иначе, у тебя просто вместо параметра, непосредственно "COUNT(*)" как текст, а не как то что функция должна передать. Это оносится ко всем твоим функциям в запросах типа MAX(match_id) и COUNT(*). Да пожалуй и для простых переменных тоже не помешает, хоть они и обрабатываются нормально, но всё же, такой вариант отделения на мой взгляд надёжней, да и наглядней. Имею ввиду второй приведённый вариант Код (PHP): "Текст ".function()." текст ".$var." текст " В остальном, вроде ошибок нет, хотя могу и ошибаться, я тоже ещё не большой спец в пхп, хоть уже и написал пару своих мини смсок.
sergv2005, неа(( Причем в чем фишка, на Денвере, что был устанволен на этой же машине все работало, переставил Денвер и... вот
Странно. А как ошибка вываливается, только с этим модулем? Попробуй просто закоментировать приведённые тобой строки, и если не вывалится, то по очереди раскоментируй, пока не вывалится. Как вывалится, так значит в той строке и ошибка, тогда можно будет и смотреть дальше.
sergv2005, такс... ошибка здесь: Код (CODE): ........ WHERE (( m.matchpart1 = $match->matchpart2 AND m.matchpart2 = $match->matchpart1) OR ( m.matchpart1 = $match->matchpart1 AND m.matchpart2 = $match->matchpart2)) AND m.match_date < '".date('Y-m-d H:i:s',$thistime)."' ORDER by m.match_date DESC LIMIT 1"; Пока удалил этот код, работает, вроде ничего не изменилось)
Что у тебя в переменных $match->matchpart1 и $match->matchpart2 ?..., если текстовые значения, то их надо экранировать в одинарные кавычки. Да и лучше их тоже вынеси как и дату, за двойные кавычки. В остальном, вроде всё правильно.