我正在制作一个项目,将信息添加到数据库Mysql中。这是我们必须用会话制作3个表格的交易,并提供STEPS的注册和用户,这个会话保存记录,如果我在第2步,我可以回滚并编辑步骤1或步骤3中的内容这应该用会话来完成。我做了一些事情,我希望你的帮助建议我如何继续。我将发布我的代码。
我知道代码是Lame,但我现在正在学习。谢谢! 这是我注册的第一步。我怎么能继续?
<?php
session_start();
// $_SESSION
$fname = '';
if (isset($_SESSION['user_fname']) && !empty($_SESSION['user_fname'])) {
$fname = $_SESSION['user_fname'];
}
$connection = mysql_connect("localhost","root","");
if (!$connection) {
die('Mysql Could not been established ' . mysql_error());
}
else{
$db_name = "phplab_course_project";
mysql_select_db($db_name, $connection);
if(isset($_POST['submit'])){
if($_POST['user_fname']!="" && $_POST['user_mname']!="" && $_POST['user_lname']!="" && $_POST['user_login']!="" && $_POST['user_email']!="" && $_POST['user_phone']!=""){
$sql = "insert into users(user_fname, user_mname, user_lname, user_login, user_email, user_phone )
values('".$_POST['user_fname']."', '".$_POST['user_mname']."', '".$_POST['user_lname']."', '".$_POST['user_login']."', '".$_POST['user_email']."', '".$_POST['user_phone']."');";
mysql_query($sql, $connection);
printf("The data is inserted id %d\n", mysql_insert_id());
}
}
}
?>
<html>
<body>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<table>
<tr>
Лични данни<br>
<br><td>Firstname*</td>
<td>
<input type="text" name="user_fname" value="<?php echo $fname;?>" required />
</td>
<td></td>
</tr>
<tr>
<td>Surname </td>
<td><input type="text" name="user_mname" /></td>
<td></td>
</tr>
<tr>
<td>Lastname* </td>
<td><input type="text" name="user_lname" required /></td>
<td></td>
</tr>
<tr>
<td>Username (login)* </td>
<td><input type="text" name="user_login" required /></td>
<td></td>
</tr>
<tr>
<td>Mail* </td>
<td><input type="text" name="user_email" required /></td>
<td></td>
</tr>
<tr>
<td>Phone </td>
<td><input type="text" name="user_phone" /></td>
<td></td>
</tr>
<tr>
<td></td>
<td><input type="submit" name='submit' value="Save"/></td>
<td></td>
</tr>
</table>
</form>
</body>
</html>
答案 0 :(得分:1)
以下是一些提示:
制作单独的函数或类方法以分别处理每个阶段。有一些方法可以跟踪发送给您的阶段数据 - 例如,您可以在每种形式中使用值为stage1
,stage2
,stage3
的隐藏输入。这样您就可以将输入发送到相应的函数或类方法。
仅在会话中的阶段之间存储信息,并且仅在所有阶段完成且所有字段都具有有效值后插入数据库
上两位的插图:
form1 - &gt; php script 1 - &gt;在会话中保存值 - &gt;重定向到表单2 - &gt; php script 2 - &gt;保存到会话 - &gt;重定向到表单3 - &gt; php script 3 - &gt;保存到会话 - &gt;保存到数据库并显示成功消息
检查会话中是否存在所有字段,如下所示:
<input type="text" name="item"
<?php if (isset($_SESSION['item']) echo 'value="' . htmlspecialchars($_SESSION['item'], ENT_QUOTES) . '"'; ?>/>
如果你返回(点击浏览器后退按钮),默认情况下会保存字段值,但如果你通过链接或重定向返回,使用此代码PHP将负责不丢失值。
您可以使用标记在PHP中查看哪个阶段已完成(即if ([stage fields are filled and valid]) { $_SESSION['stage1'] = 'completed'; }
,如果某个阶段未完成,您可以将其重定向回来。
如果您曾经在网上购物,可以借用一些处理订单处理方式的想法(用户名/电子邮件 - &gt;地址 - &gt;信用卡信息 - &gt;结帐)。你也可以去Magento online demo store订购一些东西,看看到底做了什么,虽然它是用JavaScript实现的(这是一个演示,订单没有处理)
希望这些都有帮助。
干杯。