За последние 24 часа нас посетили 20889 программистов и 1007 роботов. Сейчас ищут 523 программиста ...

Генерирование формы на основе запроса select

Тема в разделе "MySQL", создана пользователем user24102018, 29 окт 2018.

Метки:
  1. user24102018

    user24102018 Новичок

    С нами с:
    24 окт 2018
    Сообщения:
    3
    Симпатии:
    0
    Есть задача вот
    При отправке формы генерируется запрос select, где выводятся только те поля которые в которых обозначено checkbox, также происходит сортировка таблицы по тому полю где выбран radiobutton и также для числовых данных и дать обеспечению возможность указать диапазон, и это все в одном запросе select.
    Я это все сделал но у преподавателя возникли возражения:
    1.Форма должна строиться на результатах запросов
    2.min / max использовано нецелесообразно

    Объясните мне, где в нижеследующем коде ошибки указанные выше.

    PHP:
    1. //index.php
    2. <?php
    3. require_once 'connect_db.php';
    4. $link = mysqli_connect($host, $user, $password, $database)
    5. or die("Ошибка " . mysqli_error($link));
    6. $query ="SHOW COLUMNS FROM first_table";
    7. $result = mysqli_query($link, $query) or die("Error connection " . mysqli_error($link));
    8. if($result)
    9. {
    10.     $rows = mysqli_num_rows($result);
    11.     echo "<form action=\"select.php\" method=\"POST\">";
    12.     echo "<table  border='3'>";
    13.     echo "ID <input type='checkbox' name='checkbox[]' value='id'>
    14.            Name \"<input type='checkbox' name='checkbox[]' value='name'>
    15.            Sex \"<input type='checkbox' name='checkbox[]' value='sex'>
    16.            Goodsname \"<input type='checkbox' name='checkbox[]' value='goodsname'>
    17.            Price \"<input type='checkbox' name='checkbox[]' value='price'>
    18.            Count \"<input type='checkbox' name='checkbox[]' value='count'>
    19.            Addresss \"<input type='checkbox' name='checkbox[]' value='address'>
    20.            Deliverydate \"<input type='checkbox' name='checkbox[]' value='deliverydate'>      
    21.    ";
    22.     echo "<br>";
    23.     echo "ID <input type='radio' name='radio' value='id'>
    24.            Name \"<input type='radio' name='radio' value='name'>
    25.            Sex \"<input type='radio' name='radio' value='sex'>
    26.            Goodsname \"<input type='radio' name='radio' value='goodsname'>
    27.            Price \"<input type='radio' name='radio' value='price'>
    28.            Count \"<input type='radio' name='radio' value='count'>
    29.            Address\"<input type='radio' name='radio' value='address'>
    30.            Deliverydate \"<input type='radio' name='radio' value='deliverydate'>      
    31.    ";
    32.     for ($i = 0 ; $i < $rows ; ++$i)
    33.     {
    34.         $row = mysqli_fetch_row($result);
    35.         echo "<tr>";
    36.         for ($j = 0 ; $j < 6 ; ++$j) echo "<td>$row[$j]</td>";
    37.         echo "</tr>";
    38.     }
    39.     echo "</table>";
    40.     echo " Date 1<input type=\"datetime-local\" name=\"calendar1\">";
    41.     echo " Date 2<input type=\"datetime-local\" name=\"calendar2\">";
    42.     echo " Price 1<input type='text' name = 'text1'>";
    43.     echo " Price 2<input type='text' name = 'text2'>";
    44.     echo " Count 1<input type='text' name = 'text3'>";
    45.     echo " Count 2<input type='text' name = 'text4'>";
    46.     echo "<input type='submit' name='Send' value='send'>";
    47.     echo "</form>";
    48.     mysqli_free_result($result);
    49. }
    50. mysqli_close($link);
    51. $dbc = mysqli_connect('localhost', 'root', '', 'first_db') or die ('Error');
    52. $query = "SELECT MIN(Price), MAX(Price), MAX(count), MIN(count), MAX(deliverydate),MIN(deliverydate) FROM first_table";
    53. $result = mysqli_query ($dbc, $query) or die ('error');
    54. if($result)
    55. {
    56.     $rows = mysqli_num_rows($result);
    57.     echo "<table  border='3'>
    58. <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>
    59.        ";
    60.     for ($i = 0 ; $i < $rows ; ++$i)
    61.     {
    62.         $row = mysqli_fetch_row($result);
    63.         echo "<tr>";
    64.         for ($j = 0 ; $j < 5 ; ++$j) echo "<td>$row[$j]</td>";
    65.         echo "</tr>";
    66.     }
    67.     echo "</table>";
    68.     mysqli_free_result($result);
    69. }
    70. ?>
    71. //seclect.php
    72. <?php
    73. $aDoor = $_POST['checkbox'];
    74. $radio = $_POST['radio'];
    75. $date1 = $_POST['calendar1'];
    76. $date2 = $_POST['calendar2'];
    77. $date1_ = str_replace("T"," ",$date1);
    78. $date2_ = str_replace("T"," ",$date2);
    79. $text1 = $_POST['text1'];
    80. $text2 = $_POST['text2'];
    81. $text3 = $_POST['text3'];
    82. $text4 = $_POST['text4'];
    83. $dip1 = (int)$text1;
    84. $dip2 = (int)$text2;
    85. $dip3 = (int)$text3;
    86. $dip4 = (int)$text4;
    87. if(empty($aDoor))
    88. {
    89. }
    90. else
    91. {
    92.     $N = count($aDoor);
    93.     for($i=0; $i < $N; $i++)
    94.     {
    95.         //echo($aDoor[$i] . ",");
    96.     }
    97. }
    98. //var_dump($aDoor);
    99. $lenght = count($aDoor);
    100. $comma_separated = implode(",", $aDoor);
    101. //echo $comma_separated;
    102. $dbc = mysqli_connect('localhost', 'root', '', 'first_db') or die ('Error');
    103. $query = "SELECT $comma_separated  FROM first_table where price between $dip1 and $dip2 and count between $dip3 and $dip4 ORDER BY $radio ASC ";
    104. //$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 ";
    105. echo $query;
    106. $result = mysqli_query ($dbc, $query) or die ('error');
    107. if($result)
    108. {
    109.     $rows = mysqli_num_rows($result);
    110.     echo "<table  border='3'>";
    111.     for ($i = 0 ; $i < $rows ; ++$i)
    112.     {
    113.         $row = mysqli_fetch_row($result);
    114.         echo "<tr>";
    115.         for ($j = 0 ; $j < $lenght ; ++$j) echo "<td>$row[$j]</td>";
    116.         echo "</tr>";
    117.     }
    118.     echo "</table>";
    119.     echo "<br>";
    120.     mysqli_free_result($result);
    121. }
    122. ?>