php - 如何在选择 4 个表单字段之一后以交互方式更新 HTML 表

标签 php mysql

我有一个 HTML 页面,上面有一个表单和一个表格。 使用 PHP,我想使用一组 4 个表单字段来构建 mySql 查询,以便在用户选择 4 个字段中的任何一个时实时更新表。 应在 4 个表单字段中任何一个发生更改时构建并执行查询。 这是我的表单字段代码:

<form method="post" action="">
    <table cellspacing="0" border-width="1px" height= "28">
        <tr>
            <td class="style4" style="width: 160px">
                <strong>Location
            </strong>
            </td>
            <td class="style5" style="width: 150px">
                <select name="Location" style="width: 150px" onchange="SetQuery.php">
                <option hidden selected>Select a Location</option>
                <?php   while($record = mysql_fetch_array($myLocations)){
                            echo '<option value="' . $record['location'] . '">' . $record['location'] . '</option>';
                }
                ?>

                </select>
            </td>
            <td style="width: 59px">
        <tr>
            <td class="style4" style="width: 160px">
                <strong>Customer
            </strong>
            </td>
            <td class="style5" style="width: 150px">
                <input name="Customer" type="text" style="width: 150px" onchange="SetQuery.php">
            </td>
        </tr>

        <tr>
            <td class="style4" style="width: 160px">
                <strong>Family 
            </strong> 
            </td>
            <td class="style5" style="width: 150px">
                <input name="Family" type="text" style="width: 150px" onchange="SetQuery.php">
            </td>
        </tr>

        <tr>
            <td class="style4" style="width: 160px">
                <strong>Customer Part Number 
            </strong> 
            </td>
            <td class="style5" style="width: 150px">
                <input name="CustomerPartNumber" type="text" style="width: 150px" onchange="SetQuery.php">
            </td>
        </tr>

我正在考虑使用 onchange 函数调用例程(我将其称为 SetQuery.php)来构建查询并更新表。 我不知道如何编写例程来在每次选择 4 个字段之一时更新表。

这是我最初构建表格的代码。这只是一个获取所有记录的基本查询,只是为了让事情顺利进行。在正确的流程中,只有选择 4 个字段之一后才会填充该表。

<table border="1" cellspacing="1" cellpadding="1" style="font-size: xx-small">
<tr>
 <th><font face="Arial, Helvetica, sans-serif">Description</font></th>
 <th><font face="Arial, Helvetica, sans-serif">West Part Number</font></th>
 <th><font face="Arial, Helvetica, sans-serif">Cavities</font></th>
 <th><font face="Arial, Helvetica, sans-serif">Cycle Time</font></th>
 <th><font face="Arial, Helvetica, sans-serif">Material</font></th>
</tr>

<?php
$i=0;
while ($i < $num) {

?>

<tr>
<td><font face="Arial, Helvetica, sans-serif"><?php echo mysql_result($result2,$i,0); ?></font></td>
<td><font face="Arial, Helvetica, sans-serif"><?php echo mysql_result($result2,$i,1); ?></font></td>
<td><font face="Arial, Helvetica, sans-serif"><?php echo mysql_result($result2,$i,2); ?></font></td>
<td><font face="Arial, Helvetica, sans-serif"><?php echo mysql_result($result2,$i,3); ?></font></td>
<td><font face="Arial, Helvetica, sans-serif"><?php echo mysql_result($result2,$i,4); ?></font></td>
</tr>

<?php
$i++;
}
?>
</table>
</td>
</tr>
</table>

任何人都可以帮助完成这个 onchange 例程吗?我需要帮助来编写它、将它放在哪里以及如何调用它。

谢谢, 丰富

最佳答案

到目前为止,我得到的是,表单中有一些字段和一个表,它将根据字段数显示结果, 英语不是第一语言,因此如果有任何疑问请告诉我

为每个输入字段添加 onchange 事件,该事件将调用 javascript 函数,并且该函数会将值发送到 php 文件

<input name="Your Field Name" onchange="setValue(this.value);">

setValue 是 JavaScript 函数的名称,它将在值发生变化时为您设置值

if you dont know how to set it, read this link although link does not completly solve your problem but it will good for you know how to set the value, http:stackoverflow.comquestions22461324onchange-change-the-variable-in-php

与创建ajax调用相比,如果您不知道,只需谷歌一下即可,而不是每件困难的事情都要做

Now comes to php file, as i told this code will only work, when you have one table

现在你还必须想象这两种情况,你想要允许什么

第一种情况 -- 即使用户跳了字段,你仍然希望他显示结果, 我这是什么意思? - 例如,假设用户在第一个字段中输入一些内容,而不是在第二个和第三个字段中输入一些内容,而是跳到第四个字段,现在你想要运行什么根据第一字段和第四字段进行查询

第二种情况 - 你实际上不在乎,无论他是否跳跃,你只会显示结果,当他输入第一个字段然后输入第二个字段和第三个字段时,就像在系统中一样在这两种情况下基本的 shell 工作你不需要做任何事情,

Only one thing is important, instead of typing the query, we are going to create a query in a way that it depends on how many values are set, means we are going to Generate query according to the value which are set.

在继续之前请记住这一点,这就是使用 AND LOOK LIKE 进行正常 SQL 查询的方式

SELECT * FROM myTableName WHERE name = 'my name' AND street = 'this is my street'

只需阅读代码并确保您也阅读了代码中的注释。

假设我们的变量名称是 $name、$address、$street 和 $qualification

$name='my name';
//$address='some where on earth';
$street='this is my street';
//$qualification='i am very much qualified';

//now create the array only with the values which are not empty,
//I am using empty with this example you can use any thing.
if(!empty($name)) $query_string_second_part[]=" AND name = '$name'";
if(!empty($address)) $query_string_second_part[]=" AND address = '$address'";
if(!empty($street)) $query_string_second_part[]=" AND street = '$street'";
if(!empty($qualification)) $query_string_second_part[]=" AND qualification = '$qualification'";

//hand type the first part for the query
$query_string_First_Part= "SELECT * FROM myTableName WHERE";
//Implode the array, if you want to see how it look like use echo,
$query_string_second_part= implode(" ", $query_string_second_part);
//as you can see we are adding AND with every value, so we need to remove the first 
//with one space
//Make sure you give space in the second parameter. else it wont work means "" not correct but " " is correct
//Hint --> use one space in between the double qoutes
$query_string_second_part=  preg_replace("/AND/", " ", $query_string_second_part, 1);

//Join the first and second part together to create a full query
$query_string=$query_string_First_Part.$query_string_second_part;
echo ($query_string);//see how our query look like at the moment

关于php - 如何在选择 4 个表单字段之一后以交互方式更新 HTML 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43097099/

相关文章:

java - 如何使用 Java/ASP.NEt/Python 编写代码以使用 PHP 编写的基于组件的库?

php - 为什么 PHP strtolower 的性能变化如此之大?

php - 如何在 PHP 中创建 outlook 日历 session 请求?

PHP/MySQL - 构建导航菜单层次结构

Mysql - 选择查询后有条件插入

javascript - 带有提交按钮的表单内的 onClick 函数会导致错误

javascript - Laravel 资源路由从 axios 中删除

mysql - 手工绘制模式图应该用什么软件?

mysql - 如何在 Heroku 中为一个 rails 3.1 应用程序使用多个数据库?

mysql - 在类似电子表格的列中显示 MySQL 定价图表