Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Создание динамической таблицы

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
kuller
Отправлено: 16 Октября, 2014 - 07:39:23
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 561
Дата рег-ции: Нояб. 2009  


Помог: 2 раз(а)




Ребят, помогите пожалуйста вроде все просто, но бывают такие моменты когда устаещь и вообще нечего сделать не можешь. А сделать надо.

Есть форма например такая

CODE (html):
скопировать код в буфер обмена
  1.  
  2. <form action="" method="post">
  3.         Дата  c <input type="text" name="fdate"> по <input type="text" name="tdate">
  4.        
  5.         Выберите заголовки таблицы
  6.         <select name="TdName">
  7.                 <option value='fio'>ФИО</option>
  8.                 <option value='birthday'>Дата рождения</option>
  9.                 <option value='phone'>Телефон</option>
  10.                 <option value='email'>email</option>
  11.         </select>
  12. </form>
  13.  


Допустим выбрали из формы ФИО, Телефон, Email
После как данные из таблицы отправляются надо создать таблицу такого вида.

CODE (html):
скопировать код в буфер обмена
  1.  
  2. <table border="0">
  3.         <tr>
  4.                 <td>ФИО</td>
  5.                 <td>Телефон</td>
  6.                 <td>Email</td>
  7.         </tr>
  8.         <tr>
  9.                 <td>Ивонов Иван Иванович</td>
  10.                 <td>89521111111</td>
  11.                 <td>ivanov@</td>
  12.         </tr>
  13.         <tr>
  14.                 <td>Сидоров</td>
  15.                 <td>89511111111</td>
  16.                 <td>sidorov@</td>
  17.         </tr>
  18. </table>
  19.  


Количество строк может быть зависимости от количества значений в базе. Количество столбцов зависит от выбранных значений в форме. Пожалуйста помогите очень надо Не понял
 
 Top
kotyara1979
Отправлено: 16 Октября, 2014 - 08:03:04
Post Id


Частый гость


Покинул форум
Сообщений всего: 247
Дата рег-ции: Окт. 2012  


Помог: 7 раз(а)




можно так решить.

В скрипте смотришь какие поля выбраны, делаешь список (я так понимаю, что значения=наименование поле в базе).
PHP:
скопировать код в буфер обмена
  1. $field_list = inplode(',',$arr_value)
  2. $query = "select $field_list from table";
  3.  


Запрос в базу, получение данных, вывод.

PHP:
скопировать код в буфер обмена
  1.  print "<table>";
  2. while($row = mysqli_fetch_assoc($rez))
  3. {
  4.    if(!isset($head_disp))
  5.    {
  6.       $head_disp=100;
  7.       foreach($head_arr as $val)
  8.       {
  9.           print "<th>$val</th>";
  10.       }
  11.    }
  12.    foreach($row as $val)
  13.    {
  14.        print "<td>$val</td>";
  15.    }
  16. }
  17. print "</table>";


Массив с русскими именами или сопоставлением, или, если таблица нормально создана, сразу из базы формировать, из comment.

CODE (SQL):
скопировать код в буфер обмена
  1. SHOW FULL COLUMNS FROM TABLE


-----
Сделать можно все. Главное одеть каску.
 
 Top
kuller
Отправлено: 16 Октября, 2014 - 11:11:22
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 561
Дата рег-ции: Нояб. 2009  


Помог: 2 раз(а)




"значения=наименование поле в базе" все верно. но вот создание новой строки tr как сделать?
 
 Top
Sail
Отправлено: 16 Октября, 2014 - 11:27:18
Post Id



Участник


Покинул форум
Сообщений всего: 1131
Дата рег-ции: Февр. 2014  


Помог: 57 раз(а)




kuller пишет:
"значения=наименование поле в базе" все верно. но вот создание новой строки tr как сделать?

Например, добавить
первым оператором в цикле обхода массива полученных данных...
А печать заголовков столбцов таблицы надо вынести за этот цикл.

(Отредактировано автором: 16 Октября, 2014 - 11:28:48)

 
 Top
kuller
Отправлено: 16 Октября, 2014 - 11:33:14
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 561
Дата рег-ции: Нояб. 2009  


Помог: 2 раз(а)




дано же чтоб строка создавалась правильно.

У меня сейчас вот такой код

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.  
  4.         $sql = mysql_query("SELECT * FROM table WHERE {$where}");
  5.        
  6.         foreach($td as $value)
  7.         {
  8.                 if($value == 'fio') $TableTitle = "ФИО";
  9.                 if($value == 'birthday') $TableTitle = "Дата рождения";
  10.                 if($value == 'phone')
  11.                 {
  12.                         $TableTitle = "телефон";
  13.                         $row[$value] = $row['pnone'];
  14.                 }
  15.                
  16.                 if($value == 'email') $TableTitle = "Email";
  17.                
  18.                 $html .= "<td><b>".$TableTitle."</b></td>";
  19.         }
  20.                
  21.         while($row = mysql_fetch_array($sql))
  22.         {
  23.                 foreach($td as $key => $v)
  24.                 {
  25.                         for($j=0;$j<3;$j++)
  26.                         {
  27.                                 $html .= '<tr>';
  28.                                
  29.                                 for($i=0;$i<3;$i++)
  30.                                 {
  31.                                         $html .= <<<HTML
  32.                                                 <td>{$row[$v]}</td>
  33. HTML;
  34.                                 }
  35.                                
  36.                                 $html .= '</tr>';
  37.                         }
  38.                 }
  39.         }
  40.        
  41.         $table = <<<HTML
  42.                 <table id="tablec">
  43.                         {$html}
  44.                 </table>
  45. HTML;
  46.  
  47. ?>
  48.  


цикл for значение 3, может быть и другое. На выходе получается вот такая таблица

CODE (html):
скопировать код в буфер обмена
  1.  
  2. <table border="0">
  3.         <tr>
  4.                 <td>ФИО</td>
  5.                 <td>Телефон</td>
  6.                 <td>Email</td>
  7.         </tr>
  8.         <tr>
  9.                 <td>Ивонов Иван Иванович</td>
  10.                 <td>Сидоров Иван</td>
  11.                 <td>Петр</td>
  12.         </tr>
  13.         <tr>
  14.                 <td>89511111111</td>
  15.                 <td>89522222222</td>
  16.                 <td>89533333333</td>
  17.         </tr>
  18.         <tr>
  19.                 <td>ivan@</td>
  20.                 <td>sidorov@</td>
  21.                 <td>petr@</td>
  22.         </tr>
  23. </table>
  24.  


соответственно строки создаются не правильно
 
 Top
Sail
Отправлено: 16 Октября, 2014 - 11:47:39
Post Id



Участник


Покинул форум
Сообщений всего: 1131
Дата рег-ции: Февр. 2014  


Помог: 57 раз(а)




kuller, из примера:
PHP:
скопировать код в буфер обмена
  1.  while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
  2.         printf ("ID: %s  Name: %s", $row["id"], $row["name"]);
  3.     }

Остаётся вставить в этот код html-разметку...
Для наглядности, например:
PHP:
скопировать код в буфер обмена
  1. $arr = array(
  2.     array('id' => 'ID1', 'name' => 'Name 123')
  3.     , array('id' => 'ID2', 'name' => 'Name 234')
  4.     , array('id' => 'ID3', 'name' => 'Name 345')
  5. );
  6. print("<table>");
  7. $aHead = array('id' => 'ID', 'name' => 'FIO');
  8. print('<tr>');
  9. foreach($aHead as $value) {
  10.     print ("<th>{$value}</th>");
  11. }
  12. foreach($arr as $row) {
  13.     printf ("<tr><td>%s</td><td>%s</td>", $row["id"], $row["name"]);
  14. }
  15. print("</table>");
  16.  

(Отредактировано автором: 16 Октября, 2014 - 11:52:17)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB