Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何从每个表行传递选项值?_Php_Select_Options - Fatal编程技术网

Php 如何从每个表行传递选项值?

Php 如何从每个表行传递选项值?,php,select,options,Php,Select,Options,我正在创建一个表,其中的行在每个单元格中都有选项。这些选项是从数据库表接收的。因为每行都有一个选项单元格,所以我必须从每行接收值。在select标记中,“名称”随行数递增。但我只得到最后一行的值 在此附加代码部分 for ($i = 1; $i <= $_GET['pno']; $i++) { echo'<tr>'; echo "<td>$i</td>"; e

我正在创建一个表,其中的行在每个单元格中都有选项。这些选项是从数据库表接收的。因为每行都有一个选项单元格,所以我必须从每行接收值。在select标记中,“名称”随行数递增。但我只得到最后一行的值

在此附加代码部分

for ($i = 1; $i <= $_GET['pno']; $i++) {
                echo'<tr>';
                echo "<td>$i</td>";
                echo '<td><select name="prod_$i">'; echo "prod_$i";
                //Query for production table gets processed.
                $qry_pr="SELECT * FROM production";
                $result_pr=mysql_query($qry_pr);
                $rows_pr=mysql_affected_rows($con);
                //Production options get filled from the table data.
                for($j=0;$j<=$rows_pr;$j++)
                {
                    $res_arr_pr=mysql_fetch_array($result_pr);
                    echo "<option value=$res_arr_pr[0]>$res_arr_pr[1]</option>";
                    //$res++;
                }
                //mysql_close($con);
                echo '</select></td>';
                echo '<td><select name="prod_mu_$i">';
                //Query for measurement_unit table gets processed.
                $qry_mu="SELECT * FROM measurement_unit";
                $result_mu=mysql_query($qry_mu);
                $rows_mu=mysql_affected_rows($con);
                //Unit options get filled from the table data
                for($k=0;$k<=$rows_mu;$k++)
                {
                    $res_arr_mu=mysql_fetch_array($result_mu);
                    echo "<option value=$res_arr_mu[0]>$res_arr_mu[1]</option>";
                }
                echo '</td>';
                echo '</tr>'; echo "prod_$i";
            }
            echo'</table><br>';

for($i=1;$imysql\u受影响的\u行将只提供上次插入、更新、替换或删除查询时受影响的行数。您执行SELECT时,
$rows\u mu
值将出错

而不是:

$rows_mu=mysql_affected_rows($con);
//Unit options get filled from the table data
for($k=0;$k<=$rows_mu;$k++)
{
    $res_arr_mu=mysql_fetch_array($result_mu);
    echo "<option value=$res_arr_mu[0]>$res_arr_mu[1]</option>";
}
$rows\u mu=mysql\u受影响的行($con);
//单位选项从表格数据中填充

对于($k=0;$kmysql\u受影响的\u行将只提供上次插入、更新、替换或删除查询时受影响的行数。您执行SELECT时,
$rows\u mu
的值将是错误的

而不是:

$rows_mu=mysql_affected_rows($con);
//Unit options get filled from the table data
for($k=0;$k<=$rows_mu;$k++)
{
    $res_arr_mu=mysql_fetch_array($result_mu);
    echo "<option value=$res_arr_mu[0]>$res_arr_mu[1]</option>";
}
$rows\u mu=mysql\u受影响的行($con);
//单位选项从表格数据中填充
对于($k=0;$k变化:

echo '<td><select name="prod_$i">'; echo "prod_$i";
echo';echo“prod_u$i”;
致:

echo';echo“prod_u$i”;
更改:

echo '<td><select name="prod_$i">'; echo "prod_$i";
echo';echo“prod_u$i”;
致:

echo';echo“prod_u$i”;

您已将SQL查询放在for循环中,使其变得沉重。因为它将反复执行相同的查询。如果稍微调整代码,您可以使用执行单个查询并将其用于所有循环迭代

<?php
//initialize blank 
$productions = $measurements = '';

// create the production select box
$qry_pr="SELECT * FROM production";
$result_pr=mysql_query($qry_pr);
if( mysql_num_rows($result_pr) )
{
    $productions .= "<select name='prod_%index%'>";
    while( $rec_pr = mysql_fetch_row($result_pr) )
    {
        $productions .= "<option value='{$rec_pr[0]}'>{$rec_pr[1]}</option>";
    }
    $productions .= "</select>";
}

// create the measurement select box
$qry_mu="SELECT * FROM measurement_unit";
$result_mu=mysql_query($qry_mu);
if( mysql_num_rows($result_mu) )
{
    $measurements .= "<select name='prod_mu_%index%'>";
    while( $rec_mu = mysql_fetch_array($result_mu) )
    {
        $measurements .= "<option value='{$rec_mu[0]}'>{$rec_mu[1]}</option>";
    }
    $measurements .= "</select>";
}
?>


<table>
<?php for($i=1;$i<=$_GET['pno'];$i++): ?>
<tr>
    <td><?php echo str_replace('%index%',$i,$productions); ?></td>
    <td><?php echo str_replace('%index%',$i,$measurements); ?></td>
</tr>
<?php endfor; ?>
</table>

您已将SQL查询放置在for循环中,使其变得沉重。因为它将反复执行相同的查询。如果稍微调整代码,您可以使用执行单个查询并将其用于所有循环迭代

<?php
//initialize blank 
$productions = $measurements = '';

// create the production select box
$qry_pr="SELECT * FROM production";
$result_pr=mysql_query($qry_pr);
if( mysql_num_rows($result_pr) )
{
    $productions .= "<select name='prod_%index%'>";
    while( $rec_pr = mysql_fetch_row($result_pr) )
    {
        $productions .= "<option value='{$rec_pr[0]}'>{$rec_pr[1]}</option>";
    }
    $productions .= "</select>";
}

// create the measurement select box
$qry_mu="SELECT * FROM measurement_unit";
$result_mu=mysql_query($qry_mu);
if( mysql_num_rows($result_mu) )
{
    $measurements .= "<select name='prod_mu_%index%'>";
    while( $rec_mu = mysql_fetch_array($result_mu) )
    {
        $measurements .= "<option value='{$rec_mu[0]}'>{$rec_mu[1]}</option>";
    }
    $measurements .= "</select>";
}
?>


<table>
<?php for($i=1;$i<=$_GET['pno'];$i++): ?>
<tr>
    <td><?php echo str_replace('%index%',$i,$productions); ?></td>
    <td><?php echo str_replace('%index%',$i,$measurements); ?></td>
</tr>
<?php endfor; ?>
</table>

但我仍然无法从每行捕获用户以这种方式选择的选项。我应该如何在“操作”页面中接收变量?在操作页面中,您可以
打印($\u POST);
打印($\u GET)
根据您的表单方法,这将向您显示所有已传递的变量的列表。我知道数组已传递。现在如何从传递的数组中提取单个键值?您可以使用
$\u POST[“prod”.$I]
将返回一个数组,显然这必须以
$i
作为变量在循环中完成。但我仍然无法从每行捕获用户以这种方式选择的选项。我应该如何在“操作”页面中接收变量?在操作页面中,您可以
打印($\u POST);
打印($\u GET)
根据您的表单方法,这将向您显示所有已传递的变量的列表。我知道数组已传递。现在如何从传递的数组中提取单个键值?您可以使用
$\u POST[“prod”.$I]
它将返回一个数组,显然这必须在一个循环中以
$i
作为变量来完成。谢谢,但我会在原始问题解决后尝试此操作。谢谢,但我会在原始问题解决后尝试此操作。此问题已解决。感谢所有3人的帮助。此问题已解决。感谢所有3 p帮助过的人。