Автор оригинала: Фанат
Domovoj
тем, что оно не подходит для отладки.
читай
PHP FAQ: Ничего не работает! Что делать??? - там всё написано.
Не совсем понял про какой абзац ты оттуда говоришь. Вроде бы про этот:
При возниконовении проблем с функциями mysql (supplied argument is not a valid MySQL result resource) под строкой, где произошла ошибка, обязательно надло вывести на экран mysql_error() и сам запрос - для визуального контроля и копирования на форум.
Если так, то, да, нужно сохранять сам запрос, чтобы его потом посмотреть. Но, я не согласен, что это нужно делать всегда:
1. при тестировании ты всё равно будешь писать "echo" или ещё что-то подобное. Что мешает в этот же момент заменить "= mysql_query ('....')" на "=mysql_query($q='....')" и потом этё временную $q вывести?
2. Тут не уверен, но вроде бы когда ты пишешь $query='....', а потом mysql_query($query), то PHP два раза выделяет память под само содержание строки. Одно - для $query, второй раз - для аргумента функции. Т.к. аргументы передаются по значению, а не по ссылке (опять говорю, что не уверен - в код не лазил). Если точно знаешь, что это не так, дай plz ссылку - интересно было бы почитать.
-~{}~ 12.04.05 11:30:
Автор оригинала: Фанат
Domovoj
а без предварительной записи по массивам слабо? ;-)
Хм. И так тоже можно
PHP:
$rs = mysql_query('SELECT * FROM menu ORDER BY group_id');
$old = -1;
$ids = '';
while ($row = mysql_fetch_array($rs)) {
if ($row['group_id'] !== $old) {
if ($old > 0) {
?><?=$ids?></td></tr><?
}
$old = $row['group_id'];
$ids = $row['id'];
?><tr><td><?=$old?></td><td><?
}
else {
$ids .= ', '.$row['id'];
}
}
if ($old > 0) {
?><?=$ids?></td></tr>
}
Только вот насчёт скорости - не факт, что так быстрее будет.
+ Выборка данных смешана с самим выводом таблицы. А это не есть гуд.