Помогите переделать вывод меню в цикле.

Тема в разделе "PHP", создана пользователем Runapa, 11 ноя 2011.

Модераторы: latteo
  1. Runapa

    Runapa Постоялец

    Регистр.:
    30 окт 2010
    Сообщения:
    63
    Симпатии:
    5
    Собственно было так:

    Запрос:
    PHP:
    $sql "SELECT * FROM sub_pages WHERE cat in('$p','$cat') or id='$p'";
    $res mysql_query($sql);
    while (
    $out=mysql_fetch_assoc($res)){
    if (
    $out['cat']==$cat){$result_category mysql_query($sql) or die(mysql_error() ."<br/>"$sql);}
    И вывод результатов запроса:

    PHP:
    if ($_SESSION['lang'] == 'rus'
            {
            
    $table "<table class=left_menu border=0 cellspacing='15' align=center>\n";
            
    $table .= "<tr>\n";

    while (
    $row mysql_fetch_assoc($result_category))

    {
        
    $table .="<td><a href='sub_page.php?p=".$row['id']."&lang=".$_SESSION['lang']."&cat=".$row["cat"]."'>".$row["cat_name_rus"]."</a></td>";
        
    $table .= "</tr>\n";
    }

        
    $table .= "</table>\n";

        echo 
    $table;
            
            }
    Запрос переделался -

    PHP:
    $sql "SELECT * FROM sub_pages WHERE cat in('$p','$cat') or id='$p'";
    $res mysql_query($sql);
    while (
    $out=mysql_fetch_assoc($res)){
    if (
    $out['cat']==$cat){$result_category $out;}

    а вот с выводом теперь проблемы.
    Не получается. Максимум чего добился это вывода одной строки. А там их 3+. Как сделать ?
     
  2. bafoed

    bafoed Постоялец

    Регистр.:
    18 ноя 2009
    Сообщения:
    67
    Симпатии:
    7
    print_r($result_category) в первом случае и во втором выложите, сложно ориентироваться не видя структуры
     
  3. Runapa

    Runapa Постоялец

    Регистр.:
    30 окт 2010
    Сообщения:
    63
    Симпатии:
    5
    Ну вот второго вывода у меня вообще нету. Выкладывать нечего.
    А первый случай и так работает. Там менять ничего не надо.
     
  4. bafoed

    bafoed Постоялец

    Регистр.:
    18 ноя 2009
    Сообщения:
    67
    Симпатии:
    7
    значит запрос неправильный построен
     
  5. massqwest

    massqwest Писатель

    Регистр.:
    20 июл 2011
    Сообщения:
    2
    Симпатии:
    0
    Если я все правильно понял то Вам вот этот пример подойдет:
    PHP:
    do 
    {  
    # перебераем в цикле все найденные записи 
     
    if($f[key]=='')
    {
    }
    else{

    echo 
    '<tr><td><b>'.$f[key].'</b></td><td width="25">'.$f[kv].'</td></tr>';

    }
    }
    while(
    $f mysql_fetch_array($r));
     
  6. Runapa

    Runapa Постоялец

    Регистр.:
    30 окт 2010
    Сообщения:
    63
    Симпатии:
    5
    .все навно не выходит
     
  7. fpinger

    fpinger

    Регистр.:
    11 май 2007
    Сообщения:
    253
    Симпатии:
    58
    А смысл переделки? Объясните чего вы добивались тем, что в переменной $result_category ресурс от запроса заменили на массив?

    На каком основании теперь должна выполнятся строка?
    Код:
        while ($row = mysql_fetch_assoc($result_category)) {
    
     
  8. Runapa

    Runapa Постоялец

    Регистр.:
    30 окт 2010
    Сообщения:
    63
    Симпатии:
    5
    Мне бы просто хотелось сократить количество sql запросов. И на будущие разобраться что, к чему.

    На выполнение той строки я и не претендую. Мне бы рабочий вариант...
     
  9. fpinger

    fpinger

    Регистр.:
    11 май 2007
    Сообщения:
    253
    Симпатии:
    58
    То есть вы совсем не разбирались в коде и заложенном алгоритме? Просто взяли и стали тыкать что-то и куда-то, стали удалять куски кода? И о каком "рабочем варианте" и чего тогда идёт речь?

    Что бы сократить количество SQL запросов нужно разобраться хотя бы в том, что уже имеющиеся делают. Так же нужно знать как данные для формирования меню в БД организованы.
     
  10. Runapa

    Runapa Постоялец

    Регистр.:
    30 окт 2010
    Сообщения:
    63
    Симпатии:
    5
    В рабочем варианте я разобрался. Запросы изначально я писал и всё работает. Просто у меня из-за недостатка знаний не получается из трех запросов к одной таблице - сделать один.