请帮助我:
我正在为管理员创建一个调查工具。系统会询问管理员调查中的问题数量。在此基础上,在包含调查信息的表中创建一行。根据问题数量,在问题表中创建相同数量的行。这有4列用于答案,每个问题id在问题表中为相同的行创建相应的行数。
现在我正在尝试在由循环控制的UI上提供一个表单,以便管理员可以逐个输入问题和答案,每次都会更新问题表。
survey table (sur_id [auto increment column],sur_subject,Sur_frm_dt,sur_to_dt,sur_is_active)
question table ( sur_id, q_id [auto increment column] , q_txt,ans1,ans2,ans3,ans4)
该页面要求提供调查详情:调查主题,日期和问题
在调查表中生成一行。创建调查ID并将问题数传递到创建问题页面。 $sid
是调查ID,$ noq是问题数量。
代码如下。请不要介意新手逻辑和脚本:
$sid = intval ($_GET['ids']);
$noq = intval ($_GET['qn']);
for($noq !=0;$noq >=1;$noq--)
{
$q = "insert into sur_ques (sur_id) values ('$sid')";
$ex = mysql_query($q);
$rs = mysql_affected_rows();
if($rs ==1)
{
echo" Questions Rows Created Corresponding to Survey Subject";
}
?>
<form name="form1" method="post" action="<?php echo($PHP_SELF); ?>">
<table width="500" border="0" cellspacing="1" cellpadding="0">
<tr><br><b>Ques No-<?php echo"$noq";?></b></tr><br>
<tr><textarea name = "q" rows ="10" cols = "70" wrap = "hard" ></textarea></tr><br>
<tr><td><b>Ans 1:</b></td><td><input type="text" name="a1" size="37" /></td></tr>
<tr><td><b>Ans 2:</b></td><td><input type="text" name="a2" size="37" /></td></tr>
<tr><td><b>Ans 3:</b></td><td><input type="text" name="a3" size="37" /></td></tr>
<tr><td><b>Ans 4:</b></td><td><input type="text" name="a4" size="37" /></td></tr>
</table>
<input type = "submit" name="qa" Value = "Add Q&A" />
<input type ="reset" Value="Reset" />
</form>
<?
if ($_POST['qa'])
{
$id = mysql_insert_id();
$result = mysql_query("update ques set q_txt = '$q', ans1 = '$a1' ans2 = '$a2' ans4 = '$a4' ans4 = '$a4' where q_id = '$id'");
if($r = mysql_num_rows($result))
{
echo" Question and answers updated";
}
}
else
{
break;
}
}
?>
答案 0 :(得分:1)
我能在代码中看到的一个直接问题是你在for循环中使用了一个比较运算符,它应该是赋值运算符$noq != 0
应该是$noq = 0
或其他一些值 - Trevor 0秒前
答案 1 :(得分:0)
我认为你正在混淆服务器端和客户端。您发布的代码会在有人打开页面时处理。
如果您希望在访问者按下提交按钮的那一刻更新单个问题,您将需要使用ajax将该特定表单的信息发送到要处理的服务器,同时表单保持不变/不重装。
就像现在一样,每次打开页面时,都会根据GET
变量添加新行,但由于您从未发布任何行,因此我们看不到$PHP_SELF
定义在任何地方,但我想你的意思是/想要$_SERVER['PHP_SELF']
。