我有一张包含土壤分析的表格,大约有400k行,大约有30列。所有行都有一个Year列,它在1997年到2014年之间显示了一些内容。
我让用户根据每年的几个HTML表单和一个复选框进行MySQL查询。 如果没有填写复选框,则会在表格中搜索每年。 我的目的是让用户能够在复选框的帮助下选择特定的一年或几年。
我已经复制了我现在拥有的东西。 (我已经排除了变量和东西,请原谅瑞典人在这里和那里) HTML表单工作正常。但我还没想出如何使用复选框。我不知道如何在MySQL查询中实现它们。我试过谷歌搜索但这个问题在我的案例中似乎有点具体。 我很高兴听到你对此事的看法。
<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";
/西蒙
答案 0 :(得分:0)
这不是简单的情况,您将根据年份选择动态构建YEAR IN (..)
子句吗?例如。选择2008年,2010年和2012年时:
SELECT * FROM SOIL_DATA WHERE YEAR IN (2008, 2010, 2012)