2014-11-13 2 views
1

Как написать SQL-запрос на основе того, что пользователь выбирает на интерфейсе html? НапримерВыбор SQL на основе ввода html

id  | acc_type  |  bill_charge | Month | Year 
_________________________________________________________________ 
1  |  store  |   12  | January | 2014  
2  |  water plant |   11  | January | 2013 
3  |  store  |   51  | February| 2014 
4  |  pump house |   34  | March | 2014 
4  |  pump house |   33  | January | 2014 
4  |  pump house |   5  | January | 2014 
4  |  pump house |   22  | March | 2013 
4  |  pump house |   0  | March | 2014 

И пользователь будет отвечать за то, что месяц и год для просмотра данных Сейчас единственное, что я могу понять это перенаправление на другой файл PHP, который будет иметь QUERY для каждого месяца и в этом конкретном месяце каждый год от 2014-2020, как это:

SELECT id , acc_type , bill_charge , month , year 
FROM acc_info , acc_details , acc_bill 
WHERE acc_info.id = acc_details.id AND Month ="January" AND Year = "2014" 

и пользователь будет выбирать из этого входа

<select name="Month" id="Month" width="300px" required/> 
<option value="">--Select Month--</option> 
<option value="January">January</option> 
<option value="February">February</option> 
<option value="March">March</option> 
<option value="April">April</option> 
<option value="May">May</option> 
<option value="June">June</option> 
<option value="July">July</option> 
<option value="August">August</option> 
<option value="September">September</option> 
<option value="October">October</option> 
<option value="November">November</option> 
<option value="December">December</option> 
</select> 


<select name="Year" id="Year" width="300px" required/> 
<option value="">--Select Year--</option> 
<option value="2013">2013</option> 
<option value="2014">2014</option> 
<option value="2015">2015</option> 
<option value="2016">2016</option> 
<option value="2017">2017</option> 
<option value="2018">2018</option> 
<option value="2019">2019</option> 
<option value="2020">2020</option> 
</select> 

Есть ли лучший способ сделать это?

ответ

0

Вы можете передать значения скрипту PHP через форму. Во-первых, определить форму:

<form action="script.php" method="POST"> 
<select name="Month" id="Month" width="300px" required/> 
<option value="">--Select Month--</option> 
<option value="January">January</option> 
<option value="February">February</option> 
<option value="March">March</option> 
<option value="April">April</option> 
<option value="May">May</option> 
<option value="June">June</option> 
<option value="July">July</option> 
<option value="August">August</option> 
<option value="September">September</option> 
<option value="October">October</option> 
<option value="November">November</option> 
<option value="December">December</option> 
</select> 

<select name="Year" id="Year" width="300px" required/> 
<option value="">--Select Year--</option> 
<option value="2013">2013</option> 
<option value="2014">2014</option> 
<option value="2015">2015</option> 
<option value="2016">2016</option> 
<option value="2017">2017</option> 
<option value="2018">2018</option> 
<option value="2019">2019</option> 
<option value="2020">2020</option> 
</select> 
</form> 

После определения формы, вы пишете скрипт, который анализирует входящие значения, подключается к базе данных и отправить запрос. Например, как это:

<?php 
$Month = $_REQUEST["Month"]; 
$Year = $_REQUEST["Year"]; 

// Database example from PHP.net manual 
$mysqli = new mysqli("localhost", "my_user", "my_password", "world"); 

/* check connection */ 
if ($mysqli->connect_errno) { 
    printf("Connect failed: %s\n", $mysqli->connect_error); 
    exit(); 
} 

/* Select queries return a resultset */ 
if ($result = $mysqli->query("SELECT id , acc_type , bill_charge , month , year 
           FROM acc_info , acc_details , acc_bill 
           WHERE acc_info.id = acc_details.id AND Month ='".$Month."' AND Year = '".$Year."'")) { 
    printf("Select returned %d rows.\n", $result->num_rows); 

    /* free result set */ 
    $result->close(); 
} 

$mysqli->close(); 
?> 

Пожалуйста, обратите внимание на чтение PHP + MySQL руководство, либо через MySQLi (http://php.net/manual/en/book.mysqli.php) или PDO (http://php.net/manual/en/ref.pdo-mysql.php).

P.S. Обратите внимание, что использование кода типа $Month = $_REQUEST["Month"] может быть небезопасным и привести к SQL-инъекции. Подробнее об этом читайте в этой статье: http://php.net/manual/en/security.database.sql-injection.php

UPDATE

Если вы готовы выводить данные, вы можете сделать это следующим образом:

if ($result = $mysqli->query("SELECT id , acc_type , bill_charge , month , year 
           FROM acc_info , acc_details , acc_bill 
           WHERE acc_info.id = acc_details.id AND Month ='".$Month."' AND Year = '".$Year."'")) { 
    while($output = $result->fetch_assoc) { 
     echo $output['id']." ".$output['acc_type']." ".$output['bill_charge']." ".$output['month']." ".$output['year']."<br>"; 
    } 

    /* free result set */ 
    $result->close(); 
} 
+0

Это может звучать глупо, но как могу ли я вызвать данные на страницу, где есть таблица для представления данных? связать ли я эту страницу внутри «script.php» или просто объединить ее? – itsfawwaz

+0

@itsfawwaz Я обновил свой ответ на примере того, как выводить данные. –

+0

@itsfawwaz Я думаю, что код, который я написал, достаточно понятен. Пожалуйста, прочитайте код, прочитайте об основных принципах ООП, и вы увидите ответ в моем коде. –

-1

Пользователь должен выбрать дату, такую ​​как январь, который затем может быть послан в 2014-01-01, и SQL-запрос может искать диапазон дат ввода данных. (Вы должны всегда иметь created_at и updated_at временные метки для данных в вашей базе данных.)

Смежные вопросы