Есть задача вот
При отправке формы генерируется запрос select, где выводятся только те поля которые в которых обозначено checkbox, также происходит сортировка таблицы по тому полю где выбран radiobutton и также для числовых данных и дать обеспечению возможность указать диапазон, и это все в одном запросе select.
Я это все сделал но у преподавателя возникли возражения:
1.Форма должна строиться на результатах запросов
2.min / max использовано нецелесообразно
Объясните мне, где в нижеследующем коде ошибки указанные выше.
Код:
//index.php
<?php
require_once 'connect_db.php';
$link = mysqli_connect($host, $user, $password, $database)
or die("Ошибка " . mysqli_error($link));
$query ="SHOW COLUMNS FROM first_table";
$result = mysqli_query($link, $query) or die("Error connection " . mysqli_error($link));
if($result)
{
$rows = mysqli_num_rows($result);
echo "<form action=\"select.php\" method=\"POST\">";
echo "<table border='3'>";
echo "ID <input type='checkbox' name='checkbox[]' value='id'>
Name \"<input type='checkbox' name='checkbox[]' value='name'>
Sex \"<input type='checkbox' name='checkbox[]' value='sex'>
Goodsname \"<input type='checkbox' name='checkbox[]' value='goodsname'>
Price \"<input type='checkbox' name='checkbox[]' value='price'>
Count \"<input type='checkbox' name='checkbox[]' value='count'>
Addresss \"<input type='checkbox' name='checkbox[]' value='address'>
Deliverydate \"<input type='checkbox' name='checkbox[]' value='deliverydate'>
";
echo "<br>";
echo "ID <input type='radio' name='radio' value='id'>
Name \"<input type='radio' name='radio' value='name'>
Sex \"<input type='radio' name='radio' value='sex'>
Goodsname \"<input type='radio' name='radio' value='goodsname'>
Price \"<input type='radio' name='radio' value='price'>
Count \"<input type='radio' name='radio' value='count'>
Address\"<input type='radio' name='radio' value='address'>
Deliverydate \"<input type='radio' name='radio' value='deliverydate'>
";
for ($i = 0 ; $i < $rows ; ++$i)
{
$row = mysqli_fetch_row($result);
echo "<tr>";
for ($j = 0 ; $j < 6 ; ++$j) echo "<td>$row[$j]</td>";
echo "</tr>";
}
echo "</table>";
echo " Date 1<input type=\"datetime-local\" name=\"calendar1\">";
echo " Date 2<input type=\"datetime-local\" name=\"calendar2\">";
echo " Price 1<input type='text' name = 'text1'>";
echo " Price 2<input type='text' name = 'text2'>";
echo " Count 1<input type='text' name = 'text3'>";
echo " Count 2<input type='text' name = 'text4'>";
echo "<input type='submit' name='Send' value='send'>";
echo "</form>";
mysqli_free_result($result);
}
mysqli_close($link);
$dbc = mysqli_connect('localhost', 'root', '', 'first_db') or die ('Error');
$query = "SELECT MIN(Price), MAX(Price), MAX(count), MIN(count), MAX(deliverydate),MIN(deliverydate) FROM first_table";
$result = mysqli_query ($dbc, $query) or die ('error');
if($result)
{
$rows = mysqli_num_rows($result);
echo "<table border='3'>
<tr><td> Min(price)</td><td> Max(price)</td><td>Max(count)</td><td>Min(count)</td><td>MAX(Deliverydate)</td><td>MIN(Deliverydate)</td></tr>
";
for ($i = 0 ; $i < $rows ; ++$i)
{
$row = mysqli_fetch_row($result);
echo "<tr>";
for ($j = 0 ; $j < 5 ; ++$j) echo "<td>$row[$j]</td>";
echo "</tr>";
}
echo "</table>";
mysqli_free_result($result);
}
?>
//seclect.php
<?php
$aDoor = $_POST['checkbox'];
$radio = $_POST['radio'];
$date1 = $_POST['calendar1'];
$date2 = $_POST['calendar2'];
$date1_ = str_replace("T"," ",$date1);
$date2_ = str_replace("T"," ",$date2);
$text1 = $_POST['text1'];
$text2 = $_POST['text2'];
$text3 = $_POST['text3'];
$text4 = $_POST['text4'];
$dip1 = (int)$text1;
$dip2 = (int)$text2;
$dip3 = (int)$text3;
$dip4 = (int)$text4;
if(empty($aDoor))
{
}
else
{
$N = count($aDoor);
for($i=0; $i < $N; $i++)
{
//echo($aDoor[$i] . ",");
}
}
//var_dump($aDoor);
$lenght = count($aDoor);
$comma_separated = implode(",", $aDoor);
//echo $comma_separated;
$dbc = mysqli_connect('localhost', 'root', '', 'first_db') or die ('Error');
$query = "SELECT $comma_separated FROM first_table where price between $dip1 and $dip2 and count between $dip3 and $dip4 ORDER BY $radio ASC ";
//$query = "SELECT $comma_separated FROM first_table where price between $dip1 and $dip2 and count between $dip3 and $dip4 and deliverydate between $date1_ AND $date2_ ORDER BY $radio ASC ";
echo $query;
$result = mysqli_query ($dbc, $query) or die ('error');
if($result)
{
$rows = mysqli_num_rows($result);
echo "<table border='3'>";
for ($i = 0 ; $i < $rows ; ++$i)
{
$row = mysqli_fetch_row($result);
echo "<tr>";
for ($j = 0 ; $j < $lenght ; ++$j) echo "<td>$row[$j]</td>";
echo "</tr>";
}
echo "</table>";
echo "<br>";
mysqli_free_result($result);
}
?>