- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在处理一个包含 19 个不同下拉列表的表单。每个列表中都有相同的 39 个选项。我希望用户能够在一个或多个列表中选择选项并忽略其他选项。理想情况下,查询将从 MySQL 数据库返回与数据库中相应列中的所有选定选项相匹配的行。
例如:
Phoneme 1: AA <--- choice in a dropdown list of 39 items
Phoneme 2: <--- choice in a dropdown list of 39 items
Phoneme 3: CH <--- choice in a dropdown list of 39 items
Phoneme 4: <--- choice in a dropdown list of 39 items
当他们点击提交时,他们将收到数据库中第一个位置为音素 AA 和第三个位置为音素 CH 的所有单词。但我似乎无法弄清楚如何忽略他们没有选择的选项。在示例中,他们将音素 2 和 4 留空。如何让我的查询自动仅尝试搜索他们选择的查询?
预先感谢您的帮助。我一直在使用的代码如下。目前我没有得到任何结果,尽管数据库中有超过 130,000 个单词,每个单词都有自己的语音构成。
<?php
include 'db_connect.php';
//submitted form variable definitions
$phon1=$_POST['phon1'];
$phon2=$_POST['phon2'];
$phon3=$_POST['phon3'];
$phon4=$_POST['phon4'];
$phon5=$_POST['phon5'];
$phon6=$_POST['phon6'];
$phon7=$_POST['phon7'];
$phon8=$_POST['phon8'];
$phon9=$_POST['phon9'];
$phon10=$_POST['phon10'];
$phon11=$_POST['phon11'];
$phon12=$_POST['phon12'];
$phon13=$_POST['phon13'];
$phon14=$_POST['phon14'];
$phon15=$_POST['phon15'];
$phon16=$_POST['phon16'];
$phon17=$_POST['phon17'];
$phon18=$_POST['phon18'];
$phon19=$_POST['phon19'];
//-query the database table
$sql = '';
if ($phon1!=0) {
$sql .= ' AND phon1 LIKE ' . $phon1;
}
if ($phon2!=0) {
$sql .= ' AND phon2 LIKE ' . $phon2;
}
if ($phon3!=0) {
$sql .= ' AND phon3 LIKE ' . $phon3;
}
if ($phon4!=0) {
$sql .= ' AND phon4 LIKE ' . $phon4;
}
if ($phon5!=0) {
$sql .= ' AND phon5 LIKE ' . $phon5;
}
if ($phon6!=0) {
$sql .= ' AND phon6 LIKE ' . $phon6;
}
if ($phon7!=0) {
$sql .= ' AND phon7 LIKE ' . $phon7;
}
if ($phon8!=0) {
$sql .= ' AND phon8 LIKE ' . $phon8;
}
if ($phon9!=0) {
$sql .= ' AND phon9 LIKE ' . $phon9;
}
if ($phon10!=0) {
$sql .= ' AND phon10 LIKE ' . $phon10;
}
if ($phon11!=0) {
$sql .= ' AND phon11 LIKE ' . $phon11;
}
if ($phon12!=0) {
$sql .= ' AND phon12 LIKE ' . $phon12;
}
if ($phon13!=0) {
$sql .= ' AND phon13 LIKE ' . $phon13;
}
if ($phon14!=0) {
$sql .= ' AND phon14 LIKE ' . $phon14;
}
if ($phon15!=0) {
$sql .= ' AND phon15 LIKE ' . $phon15;
}
if ($phon16!=0) {
$sql .= ' AND phon16 LIKE ' . $phon16;
}
if ($phon17!=0) {
$sql .= ' AND phon17 LIKE ' . $phon17;
}
if ($phon18!=0) {
$sql .= ' AND phon18 LIKE ' . $phon18;
}
if ($phon19!=0) {
$sql .= ' AND phon19 LIKE ' . $phon19;
}
//-run the query against the mysql query function
$result = mysql_query('SELECT * FROM bigdic WHERE 1=1' . $sql . 'LIMIT 0,100');
$num = mysql_numrows($result);
mysql_close();
?>
<b>Search Results:</b>
<table border="1" cellspacing="2" cellpadding="2">
<tr>
<th>Word</th>
<th>Ph1</th>
<th>Ph2</th>
<th>Ph3</th>
<th>Ph4</th>
<th>Ph5</th>
<th>Ph6</th>
<th>Ph7</th>
<th>Ph8</th>
<th>Ph9</th>
<th>Ph10</th>
<th>Ph11</th>
<th>Ph12</th>
<th>Ph13</th>
<th>Ph14</th>
<th>Ph15</th>
<th>Ph16</th>
<th>Ph17</th>
<th>Ph18</th>
<th>Ph19</th>
</tr>
<?
//setting up the loop
$i=0;
while($i<$num) {
$word=mysql_result($result,$i,"word");
$ph1=mysql_result($result,$i,"ph1");
$ph2=mysql_result($result,$i,"ph2");
$ph3=mysql_result($result,$i,"ph3");
$ph4=mysql_result($result,$i,"ph4");
$ph5=mysql_result($result,$i,"ph5");
$ph6=mysql_result($result,$i,"ph6");
$ph7=mysql_result($result,$i,"ph7");
$ph8=mysql_result($result,$i,"ph8");
$ph9=mysql_result($result,$i,"ph9");
$ph10=mysql_result($result,$i,"ph10");
$ph11=mysql_result($result,$i,"ph11");
$ph12=mysql_result($result,$i,"ph12");
$ph13=mysql_result($result,$i,"ph13");
$ph14=mysql_result($result,$i,"ph14");
$ph15=mysql_result($result,$i,"ph15");
$ph16=mysql_result($result,$i,"ph16");
$ph17=mysql_result($result,$i,"ph17");
$ph18=mysql_result($result,$i,"ph18");
$ph19=mysql_result($result,$i,"ph19");
?>
<tr>
<td><B><? echo $word; ?></B></td>
<td><? echo $ph1; ?></td>
<td><? echo $ph2; ?></td>
<td><? echo $ph3; ?></td>
<td><? echo $ph4; ?></td>
<td><? echo $ph5; ?></td>
<td><? echo $ph6; ?></td>
<td><? echo $ph7; ?></td>
<td><? echo $ph8; ?></td>
<td><? echo $ph9; ?></td>
<td><? echo $ph10; ?></td>
<td><? echo $ph11; ?></td>
<td><? echo $ph12; ?></td>
<td><? echo $ph13; ?></td>
<td><? echo $ph14; ?></td>
<td><? echo $ph15; ?></td>
<td><? echo $ph16; ?></td>
<td><? echo $ph17; ?></td>
<td><? echo $ph18; ?></td>
<td><? echo $ph19; ?></td>
</tr>
<?
$i++;
}
echo "</table>";
?>
<b><? echo $num; ?></b> records returned.`
HTML 格式:
<form method="post" action="search2.php?go" id="searchform2">
Phoneme 01: <select name="phon1">
<option value="0" selected></option>
<option value="AA">AA</option>
<option value="AE">AE</option>
<option value="AH">AH</option>
<option value="AO">AO</option>
<option value="AW">AW</option>
<option value="AY">AY</option>
<option value="B">B</option>
<option value="CH">CH</option>
<option value="D">D</option>
<option value="DH">DH</option>
<option value="EH">EH</option>
<option value="ER">ER</option>
<option value="EY">EY</option>
<option value="F">F</option>
<option value="G">G</option>
<option value="HH">HH</option>
<option value="IH">IH</option>
<option value="IY">IY</option>
<option value="JH">JH</option>
<option value="K">K</option>
<option value="L">L</option>
<option value="M">M</option>
<option value="N">N</option>
<option value="NG">NG</option>
<option value="OW">OW</option>
<option value="OY">OY</option>
<option value="P">P</option>
<option value="R">R</option>
<option value="S">S</option>
<option value="SH">SH</option>
<option value="T">T</option>
<option value="TH">TH</option>
<option value="UH">UH</option>
<option value="UW">UW</option>
<option value="V">V</option>
<option value="W">W</option>
<option value="Y">Y</option>
<option value="Z">Z</option>
<option value="ZH">ZH</option>
</select><br \>
Phoneme 02: <select name="phon2">
<option value="0" selected></option>
<option value="AA">AA</option>
<option value="AE">AE</option>
<option value="AH">AH</option>
<option value="AO">AO</option>
<option value="AW">AW</option>
<option value="AY">AY</option>
<option value="B">B</option>
<option value="CH">CH</option>
<option value="D">D</option>
<option value="DH">DH</option>
<option value="EH">EH</option>
<option value="ER">ER</option>
<option value="EY">EY</option>
<option value="F">F</option>
<option value="G">G</option>
<option value="HH">HH</option>
<option value="IH">IH</option>
<option value="IY">IY</option>
<option value="JH">JH</option>
<option value="K">K</option>
<option value="L">L</option>
<option value="M">M</option>
<option value="N">N</option>
<option value="NG">NG</option>
<option value="OW">OW</option>
<option value="OY">OY</option>
<option value="P">P</option>
<option value="R">R</option>
<option value="S">S</option>
<option value="SH">SH</option>
<option value="T">T</option>
<option value="TH">TH</option>
<option value="UH">UH</option>
<option value="UW">UW</option>
<option value="V">V</option>
<option value="W">W</option>
<option value="Y">Y</option>
<option value="Z">Z</option>
<option value="ZH">ZH</option>
</select><br \>
Phoneme 03: <select name="phon3">
<option value="0" selected></option>
<option value="AA">AA</option>
<option value="AE">AE</option>
<option value="AH">AH</option>
<option value="AO">AO</option>
<option value="AW">AW</option>
<option value="AY">AY</option>
<option value="B">B</option>
<option value="CH">CH</option>
<option value="D">D</option>
<option value="DH">DH</option>
<option value="EH">EH</option>
<option value="ER">ER</option>
<option value="EY">EY</option>
<option value="F">F</option>
<option value="G">G</option>
<option value="HH">HH</option>
<option value="IH">IH</option>
<option value="IY">IY</option>
<option value="JH">JH</option>
<option value="K">K</option>
<option value="L">L</option>
<option value="M">M</option>
<option value="N">N</option>
<option value="NG">NG</option>
<option value="OW">OW</option>
<option value="OY">OY</option>
<option value="P">P</option>
<option value="R">R</option>
<option value="S">S</option>
<option value="SH">SH</option>
<option value="T">T</option>
<option value="TH">TH</option>
<option value="UH">UH</option>
<option value="UW">UW</option>
<option value="V">V</option>
<option value="W">W</option>
<option value="Y">Y</option>
<option value="Z">Z</option>
<option value="ZH">ZH</option>
</select><br \>
<input type="submit" name="submit" value="Search">
</form>
最佳答案
问题来自下拉列表的默认值,以及对发布数组中值的测试。您还可以通过使用循环而不是单独测试 $_POST
数组的每个条目来显着缩短代码。
定义('PHONEME_COUNT', 19);
$sql = '';
for ($i = 0; $i < PHONEME_COUNT; $i++){
$opt = 'phon'.$i;
if (isset($_POST[$opt]) && $_POST[$opt]!='--') {
$sql .= ' AND `'.$opt.'` LIKE ' .mysql_real_escape_string($_POST[$opt]);
}
同样,在html部分,更改下拉标签的默认值,并使用循环构建:
<?php for($i = 0; $i < PHONEME_COUNT; $I++): ?>
Phoneme <?php echo $i; ?> : <select name="phon<?php echo $i;?>">
<option value="--" selected></option>
<!-- options -->
</select>
<?php endfor; ?>
关于php - 忽略 PHP/MySQL 中多个下拉列表中的空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15597287/
我在 JavaScript 文件中运行 PHP,例如...... var = '';). 我需要使用 JavaScript 来扫描字符串中的 PHP 定界符(打开和关闭 PHP 的 )。 我已经知道使
我希望能够做这样的事情: php --determine-oldest-supported-php-version test.php 并得到这个输出: 7.2 也就是说,php 二进制检查 test.
我正在开发一个目前不使用任何框架的大型 php 站点。我的大问题是,随着时间的推移慢慢尝试将框架融入应用程序是否可取,例如在创建的新部件和更新的旧部件中? 比如所有的页面都是直接通过url服务的,有几
下面是我的源代码,我想在同一页面顶部的另一个 php 脚本中使用位于底部 php 脚本的变量 $r1。我需要一个简单的解决方案来解决这个问题。我想在代码中存在的更新查询中使用该变量。 $name)
我正在制作一个网站,根据不同的情况进行大量 PHP 重定向。就像这样...... header("Location: somesite.com/redirectedpage.php"); 为了安全起见
我有一个旧网站,我的 php 标签从 因为短标签已经显示出安全问题,并且在未来的版本中将不被支持。 关于php - 如何避免在 php 文件中写入
我有一个用 PHP 编写的配置文件,如下所示, 所以我想用PHP开发一个接口(interface),它可以编辑文件值,如$WEBPATH , $ACCOUNTPATH和 const值(value)观
我试图制作一个登录页面来学习基本的PHP,首先我希望我的独立PHP文件存储HTML文件的输入(带有表单),但是当我按下按钮时(触发POST到PHP脚本) )我一直收到令人不愉快的错误。 我已经搜索了S
我正在寻找一种让 PHP 以一种形式打印任意数组的方法,我可以将该数组作为赋值包含在我的(测试)代码中。 print_r 产生例如: Array ( [0] => qsr-part:1285 [1]
这个问题已经有答案了: 已关闭11 年前。 Possible Duplicate: What is the max key size for an array in PHP? 正如标题所说,我想知道
我正在寻找一种让 PHP 以一种形式打印任意数组的方法,我可以将该数组作为赋值包含在我的(测试)代码中。 print_r 产生例如: Array ( [0] => qsr-part:1285 [1]
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 9 年前。 Improve this ques
我在 MySQL 数据库中有一个表,其中存储餐厅在每个工作日和时段提供的菜单。 表结构如下: i_type i_name i_cost i_day i_start i_
我有两页。 test1.php 和 test2.php。 我想做的就是在 test1.php 上点击提交,并将 test2.php 显示在 div 中。这实际上工作正常,但我需要向 test2.php
我得到了这个代码。我想通过textarea更新mysql。我在textarea中回显我的MySQL,但我不知道如何更新它,我应该把所有东西都放进去吗,因为_GET模式没有给我任何东西,我也尝试_GET
首先,我是 php 的新手,所以我仍在努力学习。我在 Wordpress 上创建了一个表单,我想将值插入一个表(data_test 表,我已经管理了),然后从 data_test 表中获取所有列(id
我有以下函数可以清理用户或网址的输入: function SanitizeString($var) { $var=stripslashes($var); $va
我有一个 html 页面,它使用 php 文件查询数据库,然后让用户登录,否则拒绝访问。我遇到的问题是它只是重定向到 php 文件的 url,并且从不对发生的事情提供反馈。这是我第一次使用 html、
我有一个页面充满了指向 pdf 的链接,我想跟踪哪些链接被单击。我以为我可以做如下的事情,但遇到了问题: query($sql); if($result){
我正在使用 从外部文本文件加载 HTML/PHP 代码 $f = fopen($filename, "r"); while ($line = fgets($f, 4096)) { print $l
我是一名优秀的程序员,十分优秀!