我正在做一个项目,将信息添加到数据库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>
以下是一些提示:
-
制作一个单独的函数或类方法来分别处理每个阶段。有一些方法可以跟踪发送给您的阶段数据-例如,您可以在每个表单中使用值为
stage1
、stage2
、stage3
的隐藏输入。这样,您就可以将输入发送到相应的函数或类方法。 -
仅将阶段之间的信息存储在会话中,并且仅在所有阶段完成并且所有字段都具有有效值之后插入数据库
-
上面两个示例:
form1->php脚本1->save values in session->redirect to form 2->php脚本2->save to session->redrect to form 3->php脚本3->save to session->save to database并显示成功消息
-
检查所有字段(如果它们存在于会话中),如下所示:
<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'; }
),如果一个阶段没有完成,您可以将它们重定向回 -
如果你曾经在网上购物,你可以借用他们处理订单的方式(用户名/电子邮件->地址->信用卡信息->结账)。你也可以去Magento在线演示商店,订购一些东西,看看到底在做什么,尽管它是用JavaScript实现的(这是一个演示,订单不处理)
希望这些能有所帮助。
干杯。