Php 如何输入数据和使用get变量
我正在尝试编写一个页面,允许用户键入帖子,并在提交时打开一个包含帖子的新页面。这意味着文章必须先输入数据库,然后才能在另一个页面上检索。这类似于有人就stackoverflow提出问题。问题出现在一个新页面上,该页面被赋予一个唯一id,但我希望这个唯一id位于get变量中 当前页面的HTML(ask.php): 询问_action.php:Php 如何输入数据和使用get变量,php,mysql,post,Php,Mysql,Post,我正在尝试编写一个页面,允许用户键入帖子,并在提交时打开一个包含帖子的新页面。这意味着文章必须先输入数据库,然后才能在另一个页面上检索。这类似于有人就stackoverflow提出问题。问题出现在一个新页面上,该页面被赋予一个唯一id,但我希望这个唯一id位于get变量中 当前页面的HTML(ask.php): 询问_action.php: <?php header("Location: http://localhost/biology/question.php?q=$id"); ?&g
<?php header("Location: http://localhost/biology/question.php?q=$id"); ?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
</head>
<body>
<?php
include '../connect.php';
if (isset($_POST['questionSubmit'])){
$question=mysql_real_escape_string($_POST['question']);
$detail=mysql_real_escape_string($_POST['detail']);
$date=date("d M Y");
$time=time();
$user=$_SESSION['id'];
$put=mysql_query("INSERT INTO questions VALUES ('','$question','$detail','$date','$time','$user','biology','0')");
$id=mysql_insert_id();
}
?>
</body>
</html>
你这里有一些问题。首先,您需要使用类似于mysql\u escape\u字符串($\u POST)
的东西来合成传入代码。您还需要命名您的文本字段,目前您正试图根据ID提取它,但这不会起作用
将:
更改为
你点的菜也倒了。如果不使用AJAX,最好的方法是在页面顶部使用PHP加载帖子和id,然后在生成的页面上实际写入数据库。在“提交”页面上,需要让PHP代码插入数据库,然后使用PHP检索新帖子的id。然后,该页面可以使用刚刚检索到的ID作为GET参数将用户重定向到相应的页面(使用函数)如果您不希望“询问”页面与查看文章的页面位于同一页面上,可以将其拆分为三个页面
第1页:
带有表单的页面,人们在其中撰写文章并提交。第2页将在表单的动作部分
第2页:
检索POST数据的页面。在这里,您将验证所有信息并将其提交到数据库。然后检索插入id并将用户重定向到要显示结果的页面。在重定向中使用insert查询中的id
第3页:
用户在其中查看提交的信息
我注意到你尝试过这种方法,但是你有一些错误需要纠正。首先,您的ask.php页面需要改进
在POST in方法之前缺少一个撇号('),您的操作需要更正。请记住,表单操作应该转到验证和处理表单数据的页面。在本例中,它将是*ask_action.php*页面。因此,ask.php页面应如下所示:
<form method='POST' action='ask_action.php'>
<input type='text' name='question' />
<input type='text' name='detail' />
<input type='submit'> value='submit' name='submit' />
</form>
value='submit'name='submit'/>
*ask_action.php*将处理数据、验证数据并重定向到查看数据的页面。验证它的页面上不需要html
<?php
include('../connect.php'); // your database connection etc.
if(isset($_POST['submit'])) { // only react if the submit button is pressed
$question = mysql_real_escape_string($_POST['question']);
$detail = mysql_real_escape_string($_POST['detail']);
$date = date("d M Y");
$time = time();
$user = $_SESSION['id'];
mysql_query("INSERT INTO questions VALUES('', '$question', '$date', '$time', '$user', 'biology', 0)");
$id = mysql_insert_id();
header("Location: view_page.php?id=$id");
} else {
echo "Nothing submitted.";
}
?>
这里的第一个问题是您的开始表单标签。应改为:
<form method='post' action='ask.php?q=<?php echo $id ?>'>
<input type='text' name='post' id='post' />
此标题看起来像什么?我更新了我的原始问题,以显示包含标题的ask_action.php文件。重定向时,get变量为空
<form method='post' action='ask.php?q=<?php echo $id ?>'>
<form method='post' action='ask.php?q=<?= $id ?>'>
<input type='text' name='post' id='post' />