以PHP形式从下拉列表中存储SQL变量


Store SQL variable from dropdown in PHP form

我正在编写一段代码,用于从多条数据创建发票。

使用html表单插入数据。相关代码行是,

<form method="post" action="">
<label id="icon" for="debtor_id_invoice">Debtor :</label><?php echo debtors_dropdown(); ?>

这将调用位于同一文件中的debtors_dropdown函数。下拉功能是,

function debtors_dropdown() {
global $wpdb;
$sql_debtor = "SELECT `debtors_companyname`, `debtors_id`, `debtors_initials`, `debtors_surname` FROM `debtors` ORDER BY `debtors_surname`"; 
$rows = $wpdb->get_results($sql_debtor);
echo "<select name=debtor_invoice_id=''>Debtor</option>";
   foreach ($rows as $row){
    echo "<option value=>{$row->debtors_id} - {$row->debtors_surname}, {$row->debtors_initials}</option>";}
    echo "</select>";
}

根据我的表格,我使用变量,$debtor_id_vinvoice=$_POST['debtor_id_voice'];

我的全部观点是,我确实得到了从SQL中提取的正确值的下拉列表。但是我不太确定如何将所选的值存储在POST信息中。因为目前我的变量为空。(我做了两次检查,以回显变量,看看它是否真的是空的)。

有人能指出一个将下拉选择存储在POST变量中的解决方案吗?(一直在谷歌上搜索,但可能是在错误的值上,我被卡住了:-S)

谢谢,严峻的

创建选择的部分看起来是错误的。尝试:

echo '<select name="debtor_invoice_id">Debtor</option>';
   foreach ($rows as $row){
    echo '<option value="'.$row->debtors_id.'">'.$row->debtors_surname.', '.$row->debtors_initials.'</option>'; }
    echo "</select>";
}

我认为$_POST['debtor_id_invoice']中的select名称错误。它是debtor_invoice_id

变量名称不正确。在您的表格中,您有name="debtor_invoice_id"

但是,在您的$_POST中,您有;$debtor_id_invoice=$_POST['debtor_id_invoice'];

您的帖子应该是$debtor_invoice_id=$_POST['debtor_invoice_id'];

我在您的代码中发现了一些问题(最后一个是您要查找的问题):

  • 查询的FROM部分中缺少wordpress(mysql)表前缀$wpdb->prefix。Wordpress使用这个来为所有的表加前缀(你也应该这样做)
  • 您的html似乎无效:在循环</option>时关闭选项标记而不打开它
  • 您的html选项标记值也是无效的,它应该是:value="{your data}"

固定

function debtors_dropdown() {
global $wpdb;
$sql_debtor = "SELECT `debtors_companyname`, `debtors_id`, `debtors_initials`, `debtors_surname` 
FROM `".$wpdb->prefix."debtors` ORDER BY `debtors_surname`"; 
$rows = $wpdb->get_results($sql_debtor);
echo "<select name=debtor_invoice_id=''><option>Debtor</option>";
   foreach ($rows as $row){
    echo "<option value='{$row->debtors_id}'> {$row->debtors_surname}, {$row->debtors_initials}  </option>";}
    echo "</select>";
}