我正在尝试创建一个HTML表单,该表单将所有输入的值通过php插入MySQL数据库。
专门针对这种情况,用户输入产品编号和供应商。
供应商应通过单选按钮和一个附加的“其他”文本字段定义,用户可以在其中指定其他选项...
当用户选择“其他”选项时,在其中键入的值将正确插入到MySQL DB中,但是当选择单选按钮之一时,未插入供应商,而是文本“开”。
我不明白为什么脚本会这样做,因为我在脚本的任何地方都没有“ on”值。
我已经搜索了google和stackoverflow,并尝试了很多方法,但是仍然无法正常工作。我是php和html newb,所以请放轻松。
下面是该代码的精简版本。 (实际上,脚本还从表单,会话用户名和时间戳提交更多字段。)
是否有人看到“接通”可能来自何处以及如何解决?谢谢。
代码的php部分:
<?php
if (isset($_POST['submit'])) {
// These set your initial variables. q1_* is for the queried entries in the form
$q2_productname = $_POST['q2_productname'];
$q3_supplier = $_POST['q3_supplier'];
if ($q3_supplier =='other'){
$q3_supplier = $_POST['q3_supplier_other'];
}
if (isset($q2_productname)) {
$q2_productname = trim($q2_productname);
$q2_productname = strip_tags($q2_productname);
$q2_productname = stripslashes($q2_productname);
$q2_productname = htmlspecialchars($q2_productname);
}
if (isset($q3_supplier)) {
$q3_supplier = trim($q3_supplier);
$q3_supplier = strip_tags($q3_supplier);
$q3_supplier = stripslashes($q3_supplier);
$q3_supplier = htmlspecialchars($q3_supplier);
}
$dbc = @mysql_connect (DBHOST, DBUSER, DBPASS) or die('Failure: ' . mysql_error() );
mysql_select_db(DBNAME) or die ('Could not select database: ' . mysql_error() );
$query = "INSERT INTO orders VALUES ('$q2_productname','$q3_supplier')";
$q = mysql_query($query);
if (!$q) {
exit("<p>MySQL Insertion failure.</p>");
} else {
mysql_close();
}
然后是代码的html / echo / script部分:
<?php
if (isset($_POST['submit'])) {
echo "<p style='padding: .5em; border: 2px solid red;'>Thank you. Your product has been added to the order list!</p>";
}
?>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<fieldset>
<div>
<label for="q2">Full product name:</label><br />
<textarea id="q2" name="q2_productname" rows="1" cols="50"></textarea>
</div>
</fieldset><br /><br />
<fieldset>
<div>
<label for="q3">Supplier (e.g. Sigma-Aldrich, VWR, ...):</label><br />
<input type="radio" name="q3_supplier" id="q3" onchange="disableTxt()" checked="checked" />Sigma-Aldrich
<input type="radio" name="q3_supplier" id="q3" onchange="disableTxt()" />VWR
<input type="radio" name="q3_supplier" id="q3" onchange="enableTxt()" />Other:
<input type="text" name="q3_supplier_other" id="other" disabled="disabled" />
<script>
function disableTxt() {
document.getElementById("other").disabled = true;
}
function enableTxt() {
document.getElementById("other").disabled = false;
}
</script>
</div>
</fieldset><br /><br />
</form>
最佳答案
设置您的无线电输入的value属性。此值将发布到您的服务器。除非您指定,否则该值将为“ on”。
<input type="radio" name="q3_supplier" id="q3" onchange="disableTxt()" checked="checked" value='Sigma-Aldrich'/>Sigma-Aldrich
<input type="radio" name="q3_supplier" id="q3" onchange="disableTxt()" value='VWR' />VWR
<input type="radio" name="q3_supplier" id="q3" onchange="enableTxt()" value='Other' />Other:
关于php - 在带有单选按钮和“其他”文本字段的HTML表单中,单选按钮的值无法理解,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28354622/