За последние 24 часа нас посетили 23427 программистов и 1664 робота. Сейчас ищут 896 программистов ...

Делаю выборку получаю странные вещи

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

  1. etalcom

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

    С нами с:
    14 мар 2012
    Сообщения:
    86
    Симпатии:
    0
    Адрес:
    Вологда
    Добрый день!Снова я тут у Вас сижу!
    Вообщем на локалке у себя делаю подключение к базе данных делаю выборку тока результат меня удивляет!
    Код (PHP):
    1. <table border="1" width="100%">
    2.     <?
    3.         $link = mysql_connect("localhost", "root", "")
    4.         or die("Could not connect: " . mysql_error());
    5.         
    6.         $sqli = "SELECT ID FROM order ORDER BY ID";
    7.         mysql_select_db ("bd", $link);
    8.         
    9.         $res = mysql_query ($sqli, $link);
    10.         
    11.         for($i=0; $i<mysql_num_rows($res); $i++)
    12.             {
    13.                 $eri[$i]=mysql_fetch_array($res);
    14.             }
    15.         for($it=0; $it<count($eri); $it++)
    16.         {
    17.             echo "<tr><td width='100'>".$eri[$it]['ID']."</td>";
    18.             
    19.     ?>
    20.     </td>
    21.             <td width="100"> <button onclick="qu()">Заказать</button></td>
    22.     <td>
    23. <table width="100%" border="1">
    24. <?php
    25.  
    26.  
    27. $sql = "SELECT * FROM basket WHERE ORDER_ID = '".$eri[$it]['ID']."' ORDER BY ORDER_ID";
    28.  
    29. $result = mysql_query ($sql, $link);
    30.  
    31. for($ia=0; $ia<mysql_num_rows($result); $ia++)
    32. {
    33.     $e[$ia]=mysql_fetch_array($result);
    34. }
    35.  
    36. for($ie=0; $ie<count($e); $ie++)
    37. {
    38.     if($e[$ie]['ORDER_ID'] != NULL)
    39.     {
    40.         echo "<tr>";
    41.         echo "<td>".$e[$ie]['ORDER_ID']."</td>";
    42.         echo "</tr>";
    43.     }
    44. }
    45. ?>
    46. </table>
    47.  
    48. </td>
    49.         <?}?>
    50. </tr>
    51.  
    52. <table>
    53. <?
    54. mysql_close($link);    
    55. ?>

    Выдает тока немного не то!
    Выдает таблицу где код номера заказ ORDER_ID левый столбец равен нужной цифре а в правой таблице где выдает ID такое же как ORDER_ID выдает нудные и плюс цепляет не нужные не пойму почему!

    Добавлено спустя 2 минуты 25 секунд:
    Выдает так

    левый столбец
    2 а справа должно быть три двойки - все правильно!
    3 -> 3 3 2 откуда два не пойму должен выдать тока 3
    14 -> 14 14 2
    15 -> 15 14 2 откуда два и 14 тоже не понятно думаю ошибка где то в циклах помогите плиз
     
  2. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Намешал php с html, что сам не разберешься. Типа: вот я обкакался, помогите семечки выбрать.
    Это ж нужно обратным инжинирингом заниматься, чтобы понять, что ты хотел в каждый момент времени в каждой строчке.
    Логика программы должна быть понятна. Обязательны комментарии пока налаживаешь. После каждого запроса и обработки циклом массива выводи результат функцией var_dump, чтобы убедиться, что всё нормально с текущим шагом.
    Три раза посмотрел, не могу понять, что творится в коде вообще. Это при том, что требуется мизерный функционал. Нужно учиться писать логично и наглядно!
     
  3. etalcom

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

    С нами с:
    14 мар 2012
    Сообщения:
    86
    Симпатии:
    0
    Адрес:
    Вологда
    Спасибо!Счас сделаю проще!И выложу!Может пойму сам!
     
  4. etalcom

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

    С нами с:
    14 мар 2012
    Сообщения:
    86
    Симпатии:
    0
    Адрес:
    Вологда
    Код (Text):
    1.  
    2. <?
    3.  
    4.         $link = mysql_connect("localhost", "root", "");
    5.        
    6.         $sqli = "SELECT ID FROM order ORDER BY ID";
    7.        
    8.         mysql_select_db ("db", $link);
    9.        
    10.         $res = mysql_query ($sqli, $link);
    11.        
    12.         for($i=0; $i<mysql_num_rows($res); $i++)
    13.             {
    14.                 $eri[$i]=mysql_fetch_array($res);
    15.             }
    16.         for($it=0; $it<count($eri); $it++)
    17.         {
    18.             echo $eri[$it]['ID']."<br>";
    19.                
    20.                 $sqli2 = "SELECT ORDER_ID FROM basket WHERE ORDER_ID = '".$eri[$it]['ID']."' ORDER BY ORDER_ID";
    21.                
    22.                 $res2 = mysql_query ($sqli2, $link);
    23.                
    24.                 for($ii=0; $ii<mysql_num_rows($res2); $ii++)
    25.                     {
    26.                         $eri2[$ii]=mysql_fetch_array($res2);
    27.                     }
    28.                 for($iti=0; $iti<count($eri2); $iti++)
    29.                 {
    30.                     echo $eri2[$iti]['ORDER_ID']."<br>";
    31.                 }
    32.         }
    33.  
    34. ?>
    Вот так написал что было понятно Вам уважаемые форумчане!
    Выдает результат:
    2
    2
    2
    2
    3
    3
    3
    2
    14
    14
    14
    2
    15
    15
    14
    2
    17
    17
    14
    2
    18
    18
    18
    2
    19
    19
    19
    2

    А должен
    2
    2
    2
    2
    3
    3
    3
    14
    14
    14
    15
    15
    17
    17
    18
    18
    18
    19
    19
    19

    Добавлено спустя 14 минут 23 секунды:
    YSandro огромное спасибо Вам за совет!
    Надо делать от простого!
    Просто я еще тока тока начинаю применять свои знания в php на практике!
    Поэтому теряюсь еще когда пишу!

    Ошибка была в циклах!