За последние 24 часа нас посетили 16840 программистов и 1296 роботов. Сейчас ищут 1443 программиста ...

Проблемы с выводом массива

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

  1. Koka

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

    С нами с:
    27 ноя 2011
    Сообщения:
    28
    Симпатии:
    0
    Адрес:
    localhost
    Хеллоу, форумчани!
    Столкнулся вот с такой дурацкой проблемой:
    Код (PHP):
    1. // разный код с коннектом к бд и тд
    2. $date_from = date('Y-m-d 00:00:00', time() - 60 * 60 * 24);
    3.         $date_to = date("Y-m-d").' '.date("23:59:59");
    4.         //$sql = "SELECT table . `pole1`, `pole2`, COUNT(*) as count , table_resellers . * FROM table INNER JOIN table_resellers ON table.pole1 = table_resellers.pole1 WHERE table_resellers.name = 'nic    k' AND table.date>='$date_from' AND table.date<='$date_to' ORDER by date";
    5.         $sql = "SELECT table . `pole1`, `pole2`, COUNT(*) as count , table_resellers . * FROM table INNER JOIN table_resellers ON table.pole1 = table_resellers.pole1 WHERE table_resellers.name = 'nick' AND table.date>='$date_from' AND table.date<='$date_to' ORDER by date"; 
    6.         $result1 = mysql_query($sql);
    7.         if(!$result1) 
    8.         {     
    9.         echo "Возникла ошибка - ".mysql_error()."<br>"; 
    10.         echo $result1; 
    11.         exit(); 
    12.         } 
    13.         //die(var_dump($result1));
    14.         if (mysql_num_rows($result1) == 0) {
    15.         echo "По этому запросу ничего в базе нет.";
    16.         exit;
    17.         }
    18. ?>
    19.         <table border=0">
    20.         <tr>
    21.         <td>Поле 1</td>
    22.         <td>Поле 2</td>
    23.         <td>Количество(Поле 3)</td>
    24.         </tr>
    25.         <?while($resultout = mysql_fetch_assoc($result1)):?> 
    26.         <tr>
    27.         <td><?=$resultout['pole1'];?></td>
    28.         <td><?=$resultout['pole2'];?></td>
    29.         <td><?=$resultout['count'];?></td>
    30.         </tr>
    31.         <?endwhile;
    32.         mysql_close($db);
    33.         mysql_free_result($result1);?>
    34.         </table>
    На выходе имею "resource(5) of type (mysql result)".
    Судя по всему ошибка при обработке массива. Что делать?
     
  2. yuri

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

    С нами с:
    16 янв 2012
    Сообщения:
    288
    Симпатии:
    2
    нипанятна ваще.. скинь var_dump($resultout)
     
  3. asokol

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

    С нами с:
    17 янв 2012
    Сообщения:
    162
    Симпатии:
    0
    Код (Text):
    1. SELECT `t`.`pole1`, `t`.`pole2`, `r`.*
    2. # желательно указать конкретные поля вместо `r`.*
    3. # COUNT(*) здесь не будет работать, потому что нет GROUP BY
    4. FROM `table` `t`
    5. INNER JOIN `table_resellers` ON `t`.`pole1`=`r`.`pole1`
    6. WHERE `r`.`name`='nick' AND `t`.`date`>='$date_from' AND `t`.`date`<='$date_to' ORDER by `date`
    И date("23:59:59") вернет '23:59:59'. А зачем вызывать для этого функцию?
     
  4. Koka

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

    С нами с:
    27 ноя 2011
    Сообщения:
    28
    Симпатии:
    0
    Адрес:
    localhost
    bool(false)

    да не подумал как-то. не суть. )

    Код (Text):
    1. SELECT table . `pole1`, `pole2`, COUNT(*) as count , table_resellers .pole1, table_resellers .pole2 FROM table INNER JOIN table_resellers ON table.pole1 = table_resellers.pole1 WHERE table_resellers.name = 'nick' AND table.date>='$date_from' AND table.date<='$date_to' ORDER by date GROUP BY pole1, pole2.
    вот так?
     
  5. asokol

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

    С нами с:
    17 янв 2012
    Сообщения:
    162
    Симпатии:
    0
    Koka, возьмите запрос, который написан выше, добавьте нужный COUNT(*) `count`, GROUP BY `t`.`pole1`, `t`.`pole2` (перед ORDER BY, а не после), и помните, что СУБД не знает, поле из какой таблицы Вы подразумеваете под pole1 и pole2.
     
  6. Koka

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

    С нами с:
    27 ноя 2011
    Сообщения:
    28
    Симпатии:
    0
    Адрес:
    localhost
    Код (Text):
    1. SELECT table.`pole1`, table .`pole2`, COUNT(*) table.`pole2` as count , table_resellers.pole1, table_resellers.pole2 FROM table INNER JOIN table_resellers ON table.pole1 = table_resellers.pole1 WHERE table_resellers.name = 'nick' AND table.date>='$date_from' AND table.date<='$date_to' GROUP BY table.pole1, table.pole2. ORDER by date
    речь идет об этом?
     
  7. asokol

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

    С нами с:
    17 янв 2012
    Сообщения:
    162
    Симпатии:
    0
    Нет, вот об этом:
    Код (Text):
    1. SELECT `t`.`pole1`, `t`.`pole2`, COUNT(*) `count`, `r`.`pole1`, `r`.`pole2`
    2. FROM `table` `t`
    3. INNER JOIN `table_resellers` `r` ON `t`.`pole1`=`r`.`pole1`
    4. WHERE `r`.`name`='nick' AND `t`.`date`>='$date_from' AND `t`.`date`<='$date_to'
    5. GROUP BY `t`.`pole1`, `t`.`pole2`
    6. ORDER BY `t`.`date`