У меня есть таблица, содержащая анализ почвы, около 400 тыс. Строк, с примерно 30 столбцами. У всех строк есть столбец Year, где он говорит что-то между 1997 и 2014 годами.Запрос MYSQL на основе нескольких флажков HTML
Я позволю пользователю выполнить запрос MySQL на основе нескольких HTML-форм и одного флажка для каждого года. Если флажок не установлен, он просматривается каждый год в таблице. Мое намерение состоит в том, чтобы позволить пользователю выбрать определенный год или несколько с помощью флажков.
Я скопировал то, что у меня есть прямо сейчас. (Я исключил переменные и прочее, извините шведского здесь и там) HTML-формы отлично работают. Но я еще не понял, как использовать флажки. Я не знаю, как реализовать их в запросе MySQL. Я пробовал поиск в Google, но в моем случае вопрос кажется каким-то конкретным. Я был бы очень рад услышать ваше мнение по этому вопросу.
<form id="form" action="statisticsToMap.php" method="post">
<p>______Minimum_____________Maximum______</p>
<p>pH: <input type="text" name="min-ph" onkeypress="return isNumberKey(event)"> pH: <input type="text" name="max-ph" onkeypress="return isNumberKey(event)"></p>
<p>P-AL: <input type="text" name="min-p" onkeypress="return isNumberKey(event)"> P-AL: <input type="text" name="max-p" onkeypress="return isNumberKey(event)"></p>
<p>K-AL: <input type="text" name="min-k" onkeypress="return isNumberKey(event)"> K-AL: <input type="text" name="max-k" onkeypress="return isNumberKey(event)"></p>
<p>Mg-AL: <input type="text" name="min-mg" onkeypress="return isNumberKey(event)"> Mg-AL: <input type="text" name="max-mg" onkeypress="return isNumberKey(event)"></p>
<p>Lerhalt: <input type="text" name="min-ler" onkeypress="return isNumberKey(event)"> Lerhalt: <input type="text" name="max-ler" onkeypress="return isNumberKey(event)"></p>
<p>Sand-Grovmo: <input type="text" name="min-sgrovmo" onkeypress="return isNumberKey(event)"> Sand-Grovmo: <input type="text" name="max-sgrovmo" onkeypress="return isNumberKey(event)"></p>
<p>Mullhalt: <input type="text" name="min-mull" onkeypress="return isNumberKey(event)"> Mullhalt: <input type="text" name="max-mull" onkeypress="return isNumberKey(event)"></p>
<p>Klicka i vilka årtal som du vill söka efter: (tomma rutor söker alla årtal)</p>
<input type="checkbox" name="1997" value="1997"> 1997
<input type="checkbox" name="1998" value="1998"> 1998
<input type="checkbox" name="1999" value="1999"> 1999
<input type="checkbox" name="2000" value="2000"> 2000
<input type="checkbox" name="2001" value="2001"> 2001<br>
<input type="checkbox" name="2002" value="2002"> 2002
<input type="checkbox" name="2003" value="2003"> 2003
<input type="checkbox" name="2004" value="2004"> 2004
<input type="checkbox" name="2005" value="2005"> 2005
<input type="checkbox" name="2006" value="2006"> 2006<br>
<input type="checkbox" name="2007" value="2007"> 2007
<input type="checkbox" name="2008" value="2008"> 2008
<input type="checkbox" name="2009" value="2009"> 2009
<input type="checkbox" name="2010" value="2010"> 2010
<input type="checkbox" name="2011" value="2011"> 2011<br>
<input type="checkbox" name="2012" value="2012"> 2012
<input type="checkbox" name="2013" value="2013"> 2013
<input type="checkbox" name="2014" value="2014"> 2014
<input type="checkbox" name="2015" value="2015"> 2015
<input type="checkbox" name="2016" value="2016"> 2016<br>
<p>Begränsa antal resultat:</p> <input type="text" name="limitrows" onkeypress="return isNumberKey(event)"> (Standard är 2000 rader)<br><br>
<table>
<tr>
<input type="submit" value="Sök i databas"onclick="submitForm('')">
<input type="submit" value="Visa resultat på karta" onclick="submitForm('statisticsToMap.php')">
</form>
</tr>
</table>
$sql = "SELECT `kundnr`, `Year`, `Provnr`, `pH`, `P_AL`, `P_HCl`, `K_AL`, `K_HCl`, `Mg_AL`,
`Cu_HCl`, `K_Mg_kvot`, `Bor`, `Ca_AL`, `Total_lerhalt`, `Sand_grovmo`, `Mullhalt`
FROM `analyser`
WHERE
(IFNULL(`pH`, '0') BETWEEN $minph AND $maxph)
AND (IFNULL(`P_AL`, '0') BETWEEN $minpal AND $maxpal)
AND (IFNULL(`K_AL`, '0') BETWEEN $minkal AND $maxkal)
AND (IFNULL(`Mg_AL`, '0') BETWEEN $minmg AND $maxmg)
AND (IFNULL(`Total_lerhalt`, '0') BETWEEN $minler AND $maxler)
AND (IFNULL(`Mullhalt`, '0') BETWEEN $minmull AND $maxmull)
AND (IFNULL(`Sand_grovmo`, '0') BETWEEN $minsgrovmo AND $maxsgrovmo)
LIMIT 0,$limitrows";
/Simon
Будет ли это сделать вещи очень медленно, чтобы просто вернуть весь набор данных, и обрабатывать все функции фильтрации/постраничной на стороне клиента (например, в Ajax/PHP)? – Strawberry