За последние 24 часа нас посетили 54830 программистов и 1631 робот. Сейчас ищут 1162 программиста ...

Как правильно передать переменную

Тема в разделе "PHP для новичков", создана пользователем TigerZaka, 11 апр 2012.

  1. TigerZaka

    TigerZaka Активный пользователь

    С нами с:
    16 сен 2011
    Сообщения:
    189
    Симпатии:
    1
    Здравствуйте, задача у меня следующая:
    в цикле выводятся значения из базы, ну например Вася, Петя, Вова и присваиваются к переменной $qw.
    Как мне правильно передать значение этой переменной в другую переменную $wer содержащую html код?
    я пытался сделать так:
    Код (Text):
    1. function infa() {
    2.             $query = "SELECT * FROM objects";
    3.             $tt = mysql_query($query);
    4.             while ($aa = mysql_fetch_array($tt)) {
    5.                 $qw = $aa['name'];
    6.             }
    7.             $wer = "<h1>трям-парам- ".$qw." -тарарам</h1>";
    8.             return $wer;
    9.         }
     
  2. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Вот тут переменной $qw бессмысленно и много раз присваиваются разные значения, т.к. запрос "SELECT * FROM objects" наверняка вернёт несколько записей:
    Код (PHP):
    1. while ($aa = mysql_fetch_array($tt)) {
    2.   $qw = $aa['name'];
    3. } 
    Вот тут в строчку вставляется последний вариант $qw:
    Код (PHP):
    1. $wer = "<h1>трям-парам- ".$qw." -тарарам</h1>"; 
    Не понятно, что именно вы хотите, вывести много имен или только одно? В mysql запросе вы выбираете множество.
     
  3. TigerZaka

    TigerZaka Активный пользователь

    С нами с:
    16 сен 2011
    Сообщения:
    189
    Симпатии:
    1
    как раз хочу множество.
    свой вариант:
    Код (Text):
    1. function infa()
    2.             $query = "SELECT * FROM objects";
    3.             $tt = mysql_query($query);
    4.        
    5.             $wer = "<h1>трям-парам- ";
    6.             while ($aa = mysql_fetch_array($tt)) {
    7.                 $wer .= $aa['name'];
    8.             }
    9.             $wer .= " -тарарам</h1>";
    10.                         return $wer;
    есть еще какие-то способы, или мой вполне пригоден?
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ну не совсем. если запрос обломится, то цикл всё равно запустится и пойдут ворнинги.
     
  5. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    До сих пор никто не ответил, что за форум???
    TigerZaka, такой вариант пойдет?
    Код (PHP):
    1. function infa(){
    2.     $query = "SELECT * FROM objects";
    3.     $tt = mysql_query($query);
    4.     $tArr=array();
    5.     while ($aa = mysql_fetch_array($tt)){
    6.         $tArr[] = $aa['name'];
    7.     }
    8.     $wer = "<h1>трям-парам- ".implode(" -тарарам</h1>\n<h1>трям-парам- ",$tArr)." -тарарам</h1>";
    9.     return $wer;
    10. } 
     
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    у тебя тот же косяк =) плюс две лишних переменных...
    но имплод - самый грамотный подход
     
  7. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Не забыть ещё ресурсы очистить mysql_free_result
    Код (PHP):
    1. function infa(){
    2.   $query = "SELECT * FROM objects";
    3.   $tt = mysql_query($query);
    4.   $tArr=array();
    5.   while ($aa = mysql_fetch_array($tt)){
    6.     $tArr[] = $aa['name'];
    7.   }
    8.   $wer = "<h1>трям-парам- ".implode(" -тарарам</h1>\n<h1>трям-парам- ",$tArr)." -тарарам</h1>";
    9.   return $wer;
    10. } 
    igordata, где лишние? Это функция, отработала и гудбай переменные.
     
  8. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    прости, только одна лишняя.
    upd: всетки две

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

    Код (PHP):
    1. function infa(){
    2.  
    3. $reply = mysql_query('SELECT * FROM objects');
    4. if ($reply === false) {
    5.   return false;
    6. }
    7.   $tArr=array();
    8.   while ($row = mysql_fetch_array($reply)){
    9.     $tArr[] = $row['name'];
    10.   }
    11.   mysql_free_result($tt);//вот это я почему-то не юзаю никогда
    12.   return "<h1>трям-парам- ".implode(" -тарарам</h1>\n<h1>трям-парам- ",$tArr)." -тарарам</h1>";
    13. } 
    14.  
    15.  
     
  9. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    ИМХО,
    Код (PHP):
    1. $query = "SELECT * FROM objects"; 
    это не лишняя переменная. Я всегда сохраняю в лог и sql-запрос и ошибку, если запрос обломался. То есть следующей строкой было бы
    Код (PHP):
    1. $tt = mysql_query($query) or dberror($query, mysql_error()); 
    Ну а dberror() уже делает что надо. При debug-режиме может вывести на экран текст ошибки и запрос, иначе - сохранить в файл.
    Ну и как правило я туда передаю ещё третий параметр (1|0), которые говорит о том, нужно ли прекратить выполнение программы. Например, если это был какой-то важный запрос, без результата которого дальнейшее выполнение скрипта бессмысленно - то функция выдаст страничку с извинениями и просьбой повторить попытку чуть позже и exit; Если запрос не принципиальный (ну, обновление статистики, например) - просто запишет косяк в лог и выполнение скрипта продолжится.
    Кроме того, иногда dberror() ещё может отправлять мне email...
     
  10. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ну это уж тогда надо в отдельный класс выносить. я тоже все куери логаю. но это уже совсем другая история
     
  11. TigerZaka

    TigerZaka Активный пользователь

    С нами с:
    16 сен 2011
    Сообщения:
    189
    Симпатии:
    1
    Большое спасибо за ответы, у меня с утра информация к размышлению ))