【问题标题】:PHP form with checkboxes not inserting data带有复选框的PHP表单不插入数据
【发布时间】:2014-07-15 19:49:56
【问题描述】:

我在尝试提交此表单时遇到了一个问题,其中隐藏了由文本标记的复选框。我使用 CSS 而不是 JavaScript 来显示/隐藏内容,我需要这样做。

<form method="post" action="" class="table_info3_form1">
<h3>Materialy</h3>
Materialy: <input type="text" name="materialy">
<label class="collapse" for="ajfarebne"><b>Aj farebne materialy ?: (click)</b></label>
<input id="ajfarebne" type="checkbox" name="ajfarebne">
<div>Menia sa farby pravidelne, alebo len obcas ?<input type="text" name="meniasa"/></div><br>
PC a PMMA: <input type="text" name="pcapmma">
<br>Iny transparentny material: <input type="text" name="inytransparentny"><br>
Frekvencia cistenia strojov: <input type="text" name="frekvencia"><br>
Najvacsi problem pri cisteni: <input type="text" name="najvacsiproblem"><br>
</form>

使用这个 css(我添加这个,因为它是显示/隐藏工作所必需的):

.collapse{
display:block;
}
.collapse + input{
display:none;
}
.collapse + input + *{
display:none;
}
.collapse+ input:checked + *{
display:block;
}

而php代码是这样的(我将数据存储在这样的变量中):

if(isset($_POST['submit'])) 
{

$materialy=mysql_real_escape_string($_POST['materialy']);
$meniasa=mysql_real_escape_string($_POST['meniasa']);
... more variables

if(isset($_GET['qs']))
{
$id = $_GET['qs'];

if (isset($_POST['ajfarebne'])){ $ajfarebne=1; else $ajfarebne=0; //defining my checkbox variable value

然后我将值插入数据库:

$query1=mysql_query("INSERT INTO properties3 VALUES('', '$materialy', '$ajfarebne', '$meniasa'... more variables

然后我重定向:

if($query1)
{
$query1=mysql_query("select idfirma3 from properties3 where idfirma3='$id'");
$query4=mysql_fetch_array($query1);


header("location:../firma/firma-properties.php?id=".$query4['idfirma3']."");
}

问题:

这个表格什么都不做。这意味着它不会将数据存储到我的表中,最终也不会重定向到任何位置。

怎么了?

【问题讨论】:

  • 在伤害自己之前,您真的需要停止使用过时的mysql_query。你完全忽略了重要的escaping concerns,并将自己暴露在一个充满痛苦和苦难的世界中,因为这充满了SQL injection bugs。切换到 PDO 等现代界面并使用数据占位符,除非您有充分的理由不这样做。
  • 在起始页使用 print_r($_POST);此说明打印您在表格中发布的所有数据,以便您查看收到的内容。享受您的代码
  • 我现在开始工作了,我正在对我的代码进行现代化改造。我有一个问题:我确实有这个系统的登录页面,所以必须登录才能访问这些数据。仍然不使用 PDO 是不是一个大问题?

标签: javascript php html mysql css


【解决方案1】:

尝试mysqli_query 并确保您已连接到数据库,然后执行以下操作:

if (mysqli_query($con, "INSERT... ")){
  ... //code here

}

祝你好运!

【讨论】:

  • 嗨,我有一个我没有编写的代码,它位于定义它的
  • @rudyherehello 好的,太好了。现在尝试使用mysqli_query 而不是mysql_query 看看它是否有效。另外,使用mysqli_error($con) 查看您遇到了什么错误。
  • 好的,所以我收到一个错误:列数与第 1 行的值数不匹配。有什么想法吗?
  • @rudyherehello 你需要在 INSERT 语句中指定列名...例如mysqli_query($con,"INSERT INTO Persons (FirstName,LastName,Age) VALUES ('Glenn','Quagmire',33)");
  • 我现在在“字段列表”中得到未知列“变量名”
【解决方案2】:

一些事情。

  1. 首先,当您使用插入时,最好继续为查询提供列名。如果您的行数关闭,则查询将失败。
  2. 从您所显示的内容来看,如果有 mysql 查询错误,则没有什么可输出的。而且它有时不重定向的事实表明存在错误(mysql_query返回false,这是失败,所以$query1 == false)。您应该调用 mysql_error() 函数。
  3. mysql_* 已弃用。你应该切换到 mysqli_*。

  4. 这看起来是一个语法错误:

    if (isset($_POST['ajfarebne'])){ $ajfarebne=1; else $ajfarebne=0;
    

你应该把它改成三元,或者固定大括号。

【讨论】:

  • 啊,到第4点:代码实际上在“{”之后继续存在......它不是确切的代码,而是一个插图。谢谢你的回答。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多