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