我试图创建一个HTML表单,通过php将所有输入的值插入MySQL数据库。 特别针对这种情况,用户输入产品编号和供应商。
供应商应由单选按钮和其他其他'定义。用户可以指定其他选项的文本字段... 当用户选择' 其他'选项,键入的值正确插入MySQL DB中,但是当选择其中一个单选按钮时,不会插入供应商但是文本“...”... 我不明白为什么剧本会这样做,因为我没有“on”的价值。在剧本的任何地方。
我搜索了google和stackoverflow,尝试了很多东西,但我还是没能让它发挥作用。我是一个php和html newb,所以请放轻松我。
以下是代码的精简版本。 (实际上,脚本还会从表单,会话用户名和时间戳中提交更多字段。)
有没有人看到' on'可能来自,如何解决这个问题?谢谢。
代码的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>
答案 0 :(得分:0)
设置无线电输入的值属性。该值将发布到您的服务器。价值将是&#39; on&#39;除非你指定它。
<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:
答案 1 :(得分:0)
value
的默认input[type=radio]
为on
。
我建议您学习如何使用Firebug或Chrome开发工具,以便真正了解实际提交的内容以及从服务器返回的内容。