我有一行ID联系人列表。我想在按钮点击事件下面再添加两行(追加)。我有一个id为addmorecontacts的按钮。
我的代码结构是......
<?php $contacts=mysql_query("SELECT cntctnum, cntcttype FROM contacts WHERE rfrnc='".$pgid."'") or die(mysql_error());
while ($resultcontacts=mysql_fetch_assoc($contacts)) {
$contactnumber = explode("-", $resultcontacts["cntctnum"] ); ?>
<tr >
<td class="spacing1">Contact Number:</td>
<td class="spacing1" >
<input type="text" id="a" tabindex="5" name="txtphone" value="<?php echo $contactnumber[0]; ?>" onKeyUp="next()" onChange="change2()" class="a" maxlength="3" size="2"/>
<b>-</b>
<input type="text" id="b" name="txtphone1" tabindex="6" value="<?php echo $contactnumber[1]; ?>" onKeyUp="next(); next2()" onChange="change2()" class="a" maxlength="3" size="2"/>
<b>-</b>
<input type="text" id="c" name="txtphone2" tabindex="7" value="<?php echo $contactnumber[2]; ?>" onKeyUp="next1()" onChange="change2()" class="a" maxlength="4" size="3"/></td>
</tr>
<tr id="contactlist">
<td class="spacing1" >Contact Type:</td>
<td class="spacing1" ><select name="cntcttype" id="cntcttype" tabindex="8" class="select" onChange="change2()">
<?php getcontacttype($resultcontacts["cntcttype"]); ?>
</select></td>
</tr>
<?php } ?>
我的排队是......
<tr>
<td class="spacing1" > </td>
<td class="spacing1" > </td>
<td class="spacing1" ><input name="addmorecontacts" type="button" value="Add More"></td>
</tr>
答案 0 :(得分:0)
关于上述代码的第一句话是,您最终会得到多个具有相同ID的元素,这些元素永远不会有效。您正在使用静态ID <input>
在循环中生成a,b,c
- 您需要删除这些ID,或者使每行成为唯一ID。您可以使用DB主键执行此操作。
为了添加更多联系人,您需要一个表单以允许用户输入详细信息,因此当您单击按钮时,您需要将用户带到包含表单的新页面,或者拥有表单显示在您现有的页面上。当用户对新联系人的详细信息感到满意时,他们需要通知您 - 因此您可以使用链接/按钮来点击Add this contact
或类似内容。
单击此按钮后,您需要将数据发送到服务器,以便在数据库中输入。您可以通过以传统方式提交表单来完成此操作,以便重新加载页面,或者您可以使用AJAX - 您选择哪种方法取决于您。
如果您以传统方式提交表单,您将获取提交的数据,通过mysql_real_escape_string()
传递,然后将其输入数据库,然后将用户重定向回原始页面(正确的HTTP响应)表单提交后,此类重定向的代码为303 See Other)。
如果你使用AJAX,过程将与上面相同,但不是以重定向结束,你只需exit
,并用客户端脚本更新显示。
表单提交方法可以说是编程更简单,但是AJAX方法可以用来提供更流畅的用户体验和(在某些情况下)减少服务器负载,因为您不必完全重新生成页面服务器侧。
开始构建一些代码来执行上述过程,如果您遇到任何问题,我们将很乐意为您提供帮助 - 但请尝试询问有关您的特定代码的问题无法开始工作,而不是通用的“我该怎么做?”有点问题。