Мне нужно выбрать столбцы из таблицы и вывести их , я написал скрипт под это дело пример кода ниже:
CODE ( html):
скопировать код в буфер обмена
<center>Выберите опции</center> <form action="scripts/report.php" method="post"> <---Выбираем нужные нам поля и отправляем их в скрипт при этом присваиваем им значения равные названию столбца в mysql---> <p><label for="col1">id</label> <input type="checkbox" id="col1" name="col[]" value="id"></p> <p><label for="col2">Наименование договора</label> <input type="checkbox" id="col2" name="col[]" value="dog_name"></p> <p><label for="col3">Номер договора</label> <input type="checkbox" id="col3" name="col[]" value="dog_id"></p> <input type="submit"> </form>
А вот сам скрипт:
PHP:
скопировать код в буфер обмена
//Создаем массив с названием наших полей //Создаем массив для вывода шапки таблицы и формирования запроса в mysql foreach ($aCol as $line){ //Выбираем название столбцов шапки. switch ($line){ case 'id': $aTH[]="Ид";break; case 'dog_name': $aTH[]="Наименование договора";break; case 'dog_id': $aTH[]="Номер договора";break; } //Создаем строку запроса $str=$str.', `'.$line.'`';} // Убираем первые два символа //Подключаем настройки mysql include '../../conf/db.php'; // Выводим заголовки таблицы echo '<table width="auto" border="1" align="center" cellpadding="5" style="border-collapse: collapse; border: 1px solid black">'; echo '<thead style="background-color: silver"> <tr>'; //Выводим шапку foreach ($aTH as $th){ echo '<th>'.$th.'</th>'; } echo ' </tr> </thead> <tbody>'; //Отправляем запрос в mysql $result = mysqli_query($db, "SELECT {$str} FROM `dog_status` "); //Выводим данные { echo '<tr>'; foreach ($aCol as $Astr){ echo '<td>'.$row[$Astr].'</td>';} echo '</tr>'; } echo '</tbody> </table>';
Скрипт работает , но теперь вопрос правилен ли такой подход в плане быстродействия ?
Или проще было сделать запрос на получение всей таблицы и уже после этого выводить в цикле нужные столбцы ?
Или есть третий вариант ?
В тестовом варианте данных не много по этому генерируется все достаточно быстро , но что будет при работе с реальной более менее нормальной бд , знающие люди нужен ваш совет!(Отредактировано автором: 14 Марта, 2015 - 20:33:51)
|