Упростить кусок кода (обработка массива)

Тема в разделе "PHP", создана пользователем Vlad-i-Slav, 21 сен 2013.

  1. Vlad-i-Slav

    Vlad-i-Slav

    Регистрация:
    20 мар 2013
    Сообщения:
    286
    Симпатии:
    176
    Есть кусок кода:
    PHP:
    <?php
    while($row=mysql_fetch_array($rs)){
        
    $id=$row['id'];
        for (
    $j=1$j<=31$j++){
                
    $strSQL1 "SELECT * FROM `table` where id=$id";
                
    $rs1 mysql_query($strSQL1);
                    while (
    $row1=mysql_fetch_array($rs1)){
                    
    $hours=$row1['count'];
                    }   
        echo 
    "<td><input type='text' name='count[$id][$j]' value='$hours' /></td>" ;
        
    $hours='';   
        }
    }
    ?>
        
    Но при этом - бешенное количество запросов в БД. Как можно упростить?
    Есть мысль - выдернуть внутренний SELECT в массив и в цикле for работать с ним. Но знаний пока не хватает. Прошу помочь
     
  2. nix

    nix php, MySQL, UNIX, MikroTik ROSAPI

    Регистрация:
    16 янв 2013
    Сообщения:
    1.000
    Симпатии:
    890
    ето ж для чего, а главное кто написал такое безжалостное чудовище? )

    запрос из $strSQL1 сделать не в цикле for
    непонятно что в $rs
    и вопше неполный код
     
  3. Vlad-i-Slav

    Vlad-i-Slav

    Регистрация:
    20 мар 2013
    Сообщения:
    286
    Симпатии:
    176
    запрос из $strSQL1 сделать не в цикле for
    - это я понимаю, но не знаю как потом разобрать
    непонятно что в $rs
    - результат другого запроса
    PHP:
    $strSQL "SELECT id, lastname,firstname FROM `another_table`";
    $rs mysql_query($strSQL); 
    А вообще в этом коде выбираются id из одной таблицы, для каждого из них цикл формирует переменные [1..31] и формируется таблица из инпутов, каждый инпут получает соответствующее имя count[$id][$j] и value, взятое из другой таблицы

    Вообще, это - редактируемая таблица, с которой уже мозг переломал
    полный код таблицы:
     
  4. Karl_Perl

    Karl_Perl

    Регистрация:
    16 сен 2013
    Сообщения:
    7
    Симпатии:
    1
    http://ru.wikipedia.org/wiki/Join_(SQL) Можно сделать один запрос, который объединит все необходимые данные в одном массиве. Уделите время изучению sql.
     
  5. Vlad-i-Slav

    Vlad-i-Slav

    Регистрация:
    20 мар 2013
    Сообщения:
    286
    Симпатии:
    176
    Тут JOIN не нужен, выборку нужно вынести за цикл FOR. Вопрос в том, как разобрать потом массив
     
  6. Sergant11

    Sergant11

    Регистрация:
    4 окт 2013
    Сообщения:
    0
    Симпатии:
    0
    PHP:
    <?php
        $ListId 
    '';
        while(
    $row mysql_fetch_array($rs))
        {
            
    $id $row['id'];
            
    $ListId .= $j ',';
        }
       
        
    $strSQL1 "SELECT * FROM `table` WHERE id IN (".trim($ListId",").")";
        
    $rs1 mysql_query($strSQL1);
       
        while (
    $row1 mysql_fetch_array($rs1))
        {
            
    //обработка полученного результата
            //
            // ...