Здравствуйте, задача у меня следующая: в цикле выводятся значения из базы, ну например Вася, Петя, Вова и присваиваются к переменной $qw. Как мне правильно передать значение этой переменной в другую переменную $wer содержащую html код? я пытался сделать так: Код (Text): function infa() { $query = "SELECT * FROM objects"; $tt = mysql_query($query); while ($aa = mysql_fetch_array($tt)) { $qw = $aa['name']; } $wer = "<h1>трям-парам- ".$qw." -тарарам</h1>"; return $wer; }
Вот тут переменной $qw бессмысленно и много раз присваиваются разные значения, т.к. запрос "SELECT * FROM objects" наверняка вернёт несколько записей: Код (PHP): while ($aa = mysql_fetch_array($tt)) { $qw = $aa['name']; } Вот тут в строчку вставляется последний вариант $qw: Код (PHP): $wer = "<h1>трям-парам- ".$qw." -тарарам</h1>"; Не понятно, что именно вы хотите, вывести много имен или только одно? В mysql запросе вы выбираете множество.
как раз хочу множество. свой вариант: Код (Text): function infa() $query = "SELECT * FROM objects"; $tt = mysql_query($query); $wer = "<h1>трям-парам- "; while ($aa = mysql_fetch_array($tt)) { $wer .= $aa['name']; } $wer .= " -тарарам</h1>"; return $wer; есть еще какие-то способы, или мой вполне пригоден?
До сих пор никто не ответил, что за форум??? TigerZaka, такой вариант пойдет? Код (PHP): function infa(){ $query = "SELECT * FROM objects"; $tt = mysql_query($query); $tArr=array(); while ($aa = mysql_fetch_array($tt)){ $tArr[] = $aa['name']; } $wer = "<h1>трям-парам- ".implode(" -тарарам</h1>\n<h1>трям-парам- ",$tArr)." -тарарам</h1>"; return $wer; }
Не забыть ещё ресурсы очистить mysql_free_result Код (PHP): function infa(){ $query = "SELECT * FROM objects"; $tt = mysql_query($query); $tArr=array(); while ($aa = mysql_fetch_array($tt)){ $tArr[] = $aa['name']; } mysql_free_result($tt); $wer = "<h1>трям-парам- ".implode(" -тарарам</h1>\n<h1>трям-парам- ",$tArr)." -тарарам</h1>"; return $wer; } igordata, где лишние? Это функция, отработала и гудбай переменные.
прости, только одна лишняя. upd: всетки две я с планшета, код писать сложно. но обычно я пишу так, хотя считаю, что если бд отвалилась, то на вонинги пох. но у большинства малышей идет вывод ошибок прямо на страницу... Код (PHP): function infa(){ $reply = mysql_query('SELECT * FROM objects'); if ($reply === false) { return false; } $tArr=array(); while ($row = mysql_fetch_array($reply)){ $tArr[] = $row['name']; } mysql_free_result($tt);//вот это я почему-то не юзаю никогда return "<h1>трям-парам- ".implode(" -тарарам</h1>\n<h1>трям-парам- ",$tArr)." -тарарам</h1>"; }
ИМХО, Код (PHP): $query = "SELECT * FROM objects"; это не лишняя переменная. Я всегда сохраняю в лог и sql-запрос и ошибку, если запрос обломался. То есть следующей строкой было бы Код (PHP): $tt = mysql_query($query) or dberror($query, mysql_error()); Ну а dberror() уже делает что надо. При debug-режиме может вывести на экран текст ошибки и запрос, иначе - сохранить в файл. Ну и как правило я туда передаю ещё третий параметр (1|0), которые говорит о том, нужно ли прекратить выполнение программы. Например, если это был какой-то важный запрос, без результата которого дальнейшее выполнение скрипта бессмысленно - то функция выдаст страничку с извинениями и просьбой повторить попытку чуть позже и exit; Если запрос не принципиальный (ну, обновление статистики, например) - просто запишет косяк в лог и выполнение скрипта продолжится. Кроме того, иногда dberror() ещё может отправлять мне email...
ну это уж тогда надо в отдельный класс выносить. я тоже все куери логаю. но это уже совсем другая история