Форумы портала PHP.SU » » Работа с СУБД » Вывод информации из SQL в таблицу

Страниц (1): [1]
 

1. electronik - 24 Июня, 2011 - 15:36:14 - перейти к сообщению
не могу понять как вывести правильно значения в таблицу. Смог отрисовать каркас таблицы, а вот ввести данные не получается, не понимаю как это сделать.
Подскажите пожалуйста.
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. include './config.php';
  3. require_once './index.php';
  4.  
  5. $conn=mysql_connect($dbhost,$dbuser,$dbpass)
  6.          or die("Could not connect : " . mysql_error());
  7. mysql_select_db($dbname) or die("Could not select database");
  8. mysql_query("SET NAMES utf8");
  9. $query=mysql_query("SELECT d.dish_id,  d.user_id, d.time_date, m1.menu_num, m1.menu_name, d.dish_count,
  10.                            d.dish_count_sp, u1.user_name, u1.bgcolor
  11.                    FROM dishs d
  12.                    LEFT JOIN menu m1 ON m1.menu_id = d.menu_id
  13.                    LEFT JOIN users u1 ON u1.user_id = d.user_id
  14.                    WHERE d.deleted =  '0'
  15.                    AND m1.deleted =  '0'
  16.                    AND u1.deleted =  '0'
  17.                    GROUP BY u1.user_name")
  18.                 or die("Query failed : " . mysql_error());
  19. $query2=mysql_query("SELECT d.dish_id,  d.user_id, d.time_date, m1.menu_num, m1.menu_name, d.dish_count,
  20.                            d.dish_count_sp, u1.user_name, u1.bgcolor
  21.                    FROM dishs d
  22.                    LEFT JOIN menu m1 ON m1.menu_id = d.menu_id
  23.                    LEFT JOIN users u1 ON u1.user_id = d.user_id
  24.                    WHERE d.deleted =  '0'
  25.                    AND m1.deleted =  '0'
  26.                    AND u1.deleted =  '0'
  27.                    GROUP BY m1.menu_num")
  28.                 or die("Query failed : " . mysql_error());
  29. $query3=mysql_query("SELECT d.dish_id,  d.user_id, d.time_date, m1.menu_num, m1.menu_name, d.dish_count,
  30.                            d.dish_count_sp, u1.user_name, u1.bgcolor
  31.                    FROM dishs d
  32.                    LEFT JOIN menu m1 ON m1.menu_id = d.menu_id
  33.                    LEFT JOIN users u1 ON u1.user_id = d.user_id
  34.                    WHERE d.deleted =  '0'
  35.                    AND m1.deleted =  '0'
  36.                    AND u1.deleted =  '0'
  37.                    ORDER BY d.user_id, m1.menu_num")
  38.                 or die("Query failed : " . mysql_error());
  39.  
  40. //начинаем вывод таблицы
  41.     echo "<table width=\"65%\" border=\"1\" cellspacing=\"0\" cellpadding=\"0\"><tr><th>&nbsp</th>";
  42. //получаем имена польщователей для заголовков столбцов      
  43.         while($row=mysql_fetch_array($query))
  44.             {
  45.                 $user_name_pr=$row['user_name'];
  46.                 echo"
  47.        <th colspan=\"3\">$user_name_pr</th>
  48.        ";}
  49. //пустая ячейка
  50.         echo "</tr><tr>
  51.        <th>&nbsp</th>";
  52. //получаем кол-во пользователей для отрисовки        
  53.         for($i=0;$i<mysql_num_rows($query);$i++)
  54.         {
  55.         echo "<th>Кол-во порц.</th><th>Кол-во порц.</th>
  56.        <th>Кол-во порц.</th>
  57.        ";
  58.         }
  59. //отрисовываем столбик с номерами, выход из цикла сделаен для того, что бы номер не повторялся        
  60.         echo"
  61.        </tr>
  62.        <tr>
  63.        <th>№ блюда</th>";
  64. //отрисовываем второй разделитель      
  65.         for($i=0;$i<mysql_num_rows($query);$i++)
  66.         {
  67.         echo "<th>Остаток ср.</th><th>Остаток</th>
  68.        <th>Заявка</th>
  69.        ";
  70.         }
  71. //получаем номера и выводи их в таблицу      
  72.         while ($row2=mysql_fetch_array($query2))
  73.         {   $menu_num_pr=$row2['menu_num'];                                                                                                                                                                                                                                                                                            
  74.             echo "<tr><th>$menu_num_pr</th></tr>";
  75.         }
  76. //тут получаем кол-во, и выводим их в таблицу        
  77.         while($row3=mysql_fetch_array($query3))
  78.         {  
  79.             $dish_count_sp_pr=$row3['dish_count_sp'];
  80.             $dish_count_pr=$row3['dish_count'];
  81.            
  82.         echo"<tr><td>    
  83.            <th align=\"center\">$dish_count_sp_pr</th>
  84.            <th align=\"center\">$dish_count_pr</th></td>
  85.        </tr>";
  86.         }
  87.         echo "</table>";
  88. ?>
  89.  
2. vsll - 24 Июня, 2011 - 15:53:57 - перейти к сообщению
А зачем 3 одинаковых запроса? $query, $query2, $query3
3. electronik - 24 Июня, 2011 - 16:05:05 - перейти к сообщению
Ну они не совсем одинаковые, в первом получаем пользователей(GROUP BY u1.user_name) которые есть в запросе, их кол-во равно кол-ву главных колонок(user1,user2, etc), во втором получаем номера блюд которые есть(GROUP BY m1.menu_num), а третий запрос это уже не посредственно данные по кол-во блюд. Конечно можно было бы использовать только третий запрос, но я не умею работать с массивами, что бы если значение повторялось по определённому полю, то выводилось оно только один раз.
4. vsll - 24 Июня, 2011 - 16:29:08 - перейти к сообщению
по такой схеме попробуйте
PHP:
скопировать код в буфер обмена
  1. $result = mysql_query("...");
  2. if (mysql_num_rows($result)) {
  3.         $i=0;
  4.         while ($data = mysql_fetch_assoc($result)) {
  5.                 echo "<td>$data['dish_count']</td>";
  6.                 $i++;
  7.         }
  8. }
5. electronik - 24 Июня, 2011 - 19:22:28 - перейти к сообщению
Не совсем то получилось, либо я не туда вставил код
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. include './config.php';
  3. require_once './index.php';
  4.  
  5. $conn=mysql_connect($dbhost,$dbuser,$dbpass)
  6.          or die("Could not connect : " . mysql_error());
  7. mysql_select_db($dbname) or die("Could not select database");
  8. mysql_query("SET NAMES utf8");
  9. $query=mysql_query("SELECT d.dish_id,  d.user_id, d.time_date, m1.menu_num, m1.menu_name, d.dish_count,
  10.                            d.dish_count_sp, u1.user_name, u1.bgcolor
  11.                    FROM dishs d
  12.                    LEFT JOIN menu m1 ON m1.menu_id = d.menu_id
  13.                    LEFT JOIN users u1 ON u1.user_id = d.user_id
  14.                    WHERE d.deleted =  '0'
  15.                    AND m1.deleted =  '0'
  16.                    AND u1.deleted =  '0'
  17.                    GROUP BY u1.user_name")
  18.                 or die("Query failed : " . mysql_error());
  19. $query2=mysql_query("SELECT d.dish_id,  d.user_id, d.time_date, m1.menu_num, m1.menu_name, d.dish_count,
  20.                            d.dish_count_sp, u1.user_name, u1.bgcolor
  21.                    FROM dishs d
  22.                    LEFT JOIN menu m1 ON m1.menu_id = d.menu_id
  23.                    LEFT JOIN users u1 ON u1.user_id = d.user_id
  24.                    WHERE d.deleted =  '0'
  25.                    AND m1.deleted =  '0'
  26.                    AND u1.deleted =  '0'
  27.                    GROUP BY m1.menu_num")
  28.                 or die("Query failed : " . mysql_error());
  29. $query3=mysql_query("SELECT d.dish_id,  d.user_id, d.time_date, m1.menu_num, m1.menu_name, d.dish_count,
  30.                            d.dish_count_sp, u1.user_name, u1.bgcolor
  31.                    FROM dishs d
  32.                    LEFT JOIN menu m1 ON m1.menu_id = d.menu_id
  33.                    LEFT JOIN users u1 ON u1.user_id = d.user_id
  34.                    WHERE d.deleted =  '0'
  35.                    AND m1.deleted =  '0'
  36.                    AND u1.deleted =  '0'
  37.                    ORDER BY d.user_id, m1.menu_num")
  38.                 or die("Query failed : " . mysql_error());
  39.  
  40. //начинаем вывод таблицы
  41.     echo "<table width=\"65%\" border=\"1\" cellspacing=\"0\" cellpadding=\"0\"><tr><th>&nbsp</th>";
  42. //получаем имена польщователей для заголовков столбцов      
  43.         while($row=mysql_fetch_array($query))
  44.             {
  45.                 $user_name_pr=$row['user_name'];
  46.                 echo"
  47.        <th colspan=\"3\">$user_name_pr</th>
  48.        ";}
  49. //пустая ячейка
  50.         echo "</tr><tr>
  51.        <th>&nbsp</th>";
  52. //получаем кол-во пользователей для отрисовки        
  53.         for($i=0;$i<mysql_num_rows($query);$i++)
  54.         {
  55.         echo "<th>Кол-во порц.</th><th>Кол-во порц.</th>
  56.        <th>Кол-во порц.</th>
  57.        ";
  58.         }
  59. //отрисовываем столбик с номерами, выход из цикла сделаен для того, что бы номер не повторялся        
  60.         echo"
  61.        </tr>
  62.        <tr>
  63.        <th>№ блюда</th>";
  64. //отрисовываем второй разделитель      
  65.         for($i=0;$i<mysql_num_rows($query);$i++)
  66.         {
  67.         echo "<th>Остаток ср.</th><th>Остаток</th>
  68.        <th>Заявка</th>
  69.        ";
  70.         }
  71. //получаем номера и выводи их в таблицу      
  72.         while ($row2=mysql_fetch_array($query2))
  73.         {   $menu_num_pr=$row2['menu_num'];                                                                                                                                                                                                                                                                                            
  74.             echo "<tr><th>$menu_num_pr</th></tr>";
  75.         }
  76. //тут получаем кол-во, и выводим их в таблицу        
  77.        
  78.         if(mysql_num_rows($query3)){
  79.             $i=0;
  80.             while($data=mysql_fetch_array($query3)){
  81.                 $dish_count_pr=$data['dish_count'];
  82.                 echo "<tr><td><th>$dish_count_pr</td>";
  83.                 $i++;
  84.             }
  85.         }
  86.        
  87.         echo "</table>";
  88. ?>
  89.  

Он тогда в последнюю строчку полностью забивает данными, а не по столбцам раскидывает.
6. vsll - 24 Июня, 2011 - 19:40:46 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1.  echo "<tr><td><th>$dish_count_pr</td>";

у вас тег <tr> не закрыт
Цитата:
//тут получаем кол-во, и выводим их в таблицу

здесь у вас должен получиться один столбец
нужно просто сделать гармотную html размётку
7. electronik - 24 Июня, 2011 - 19:57:09 - перейти к сообщению
закрытие тега не помогло,
Цитата:
здесь у вас должен получиться один столбец
нужно просто сделать гармотную html размётку


можете подсказать хотя бы алгоритм Закатив глазки , а то я себе уже мозг сломал, пока эту таблицу делаю Огорчение
8. vsll - 24 Июня, 2011 - 20:03:55 - перейти к сообщению
electronik пишет:
закрытие тега не помогло,
возможно, вас до этого сверху колбасит ещё так, наверное лучше в основную таблицу, вставлять подтаблицы для каждого юзера, а зачем надпись "количество порций" в таком количестве? я щас тоже уже наврядли чтото корректное напишу...

 

Powered by ExBB FM 1.0 RC1