0

我在将type="button"表单元素的值添加到 mySql 数据库时遇到问题,我想知道我是否遗漏了什么。

编辑-看起来该元素的信息没有从 html 传递到 php,因为它没有回显值。我唯一的问题是这个元素,表单的其余部分正在正确提交。

我将其用于在线测验,该测验根据他们选择的图像构建用户配置文件,并将图像设置为按钮元素的背景图像,并且我试图在直接 html 中执行此操作(而不是将 javascript 与单选按钮或复选框一起使用)。

<input type="button" name="quiz_start" value="jeans" style="background: url(files/start1.jpg) no-repeat; width:54px;height:140px; cursor:pointer; border:none; color: transparent; font-size : 0">       

为了提出问题,我已经简化了 php 代码(包括指定用户 ID 并将其限制为仅一个字段)。我还在下面包含了完整的代码。

<?php
//Start session & connect to database 
$user_id = 3;   

$qry = "INSERT INTO style(user_id, quiz_start) VALUES('$user_id','$_POST[quiz_start]')";
$result = @mysql_query($qry);      
header("location: page2.html");
exit(); 
?>

完整的查询是:

$fieldlist=$vallist='';
foreach ($_POST as $key => $value) { 
 $fieldlist.=$key.',';
 $vallist.='\''.($value).'\',';
}
$fieldlist=substr($fieldlist, 0, -1);
$vallist=substr($vallist, 0, -1);
$fieldlist.=', user_id';
$vallist.=','.$user_id;
$setlist='';
foreach ($_POST as $key=>$value){
$setlist.=$key .'=\''.$value.'\',';
}
$setlist=substr($setlist, 0, -1);  
$result = mysql_query('UPDATE style SET '.$setlist.' WHERE user_id='.$user_id);
if (mysql_affected_rows()==0) {
$result = mysql_query('INSERT INTO style ('.$fieldlist.') VALUES ('.$vallist.')');
}  
header("location: page2.html");
exit();
?>
4

3 回答 3

1

试试这个:

    <?php
//Start session & connect to database 
$user_id = 3;   

$qry = "INSERT INTO style(user_id, quiz_start) VALUES('".$user_id."','".$_POST['quiz_start']."')";
$result = @mysql_query($qry);      
header("location: page2.html");
exit(); 
?>
于 2013-01-14T03:17:48.143 回答
1

看到您无法回显 $_POST['quiz_start'] 这意味着您的值实际上并未设置。这是因为当您在<input type='button'>表单中使用类按钮时,实际上并没有像<input type='submit'>

一种解决方案是将您的按钮更改为实际的提交和格式......或者您需要使用按钮中的 onClick 调用 javascript 函数,如下所示:

<input type="button" onClick="myfunction()">

有关我在说什么的参考,请查看这篇文章

如果如您所说,其余的表单值都可以正常提交,但只是按钮值不起作用,则根据您的喜好,您有几种不同的可能解决方案。

  1. 使用选择字段或复选框让人们选择可以传递数据的类型。
  2. 在 javascript 中提交您的表单,<input type="button" onClick="myfunction()">然后在 javascript 中运行您的更新查询。
  3. 最后,如果您仍想在 PHP 中运行查询,您可以运行一个 javascript 函数来进行 AJAX 调用以返回 JSON 信息,您可以在页面加载后在其中定义一个 php 变量,然后您可以插入更新查询。
于 2013-01-14T03:32:27.827 回答
1

由于 input type="button" 似乎无法捕获用户的选择,因此我想分享一个非常简单的方法,我想通过单选按钮或仅使用 html 的复选框来执行此操作。

您需要做的就是将输入元素设置为style="display:none",并用标签标签包围图像和输入元素,以便用户可以单击图像上的任意位置来选择元素:-)

<label for="quiz_start">
<img src="files/start1.jpg" />
<input style="display:none" type="radio" id="quiz_start" name="quiz_start" value="jeans">    
</label>
于 2013-01-14T05:41:06.533 回答