这就是我想要做的,我有两个页面,第一个是“edit.php”,第二个是“edit2.php”。页面“edit.php”这是显示所有新闻的页面,您将通过单击“编辑按钮”和“edit2.php”选择要编辑的新闻,我将在哪里编辑新闻。我想在另一个页面中传递所选新闻的价值。但问题是,当我点击“Sample news 1”编辑按钮时,另一页显示的数据是“Sample news 2”。即使我点击“Sample news 2”编辑按钮,数据也是“Sample news 2”。有人能给我一些关于如何解决这个问题的想法吗?
这是edit.php的图片。我点击“Sample news 1”的编辑按钮。
这是edit2.php的图片。这是输出数据。数据应该是“Sample news 1”而不是“Samplel news 2”。
这是我在php.php中的php代码
df1 <- df[with(df, as.logical(ave(y, ID, FUN = function(x)
lag(x, default= x[1])== x[1]))),]
df1$y <- with(df1, ave(y, ID, FUN= function(x) x[1]))
这是我的“edit2.php”的php代码
<?php
session_start();
include_once('connection.php');
$sql ="SELECT * FROM news ORDER BY news_id";
$result = mysqli_query($con, $sql);
while($row = mysqli_fetch_array($result)){
$newsid = $row['news_id'];
$title = $row['news_title'];
$date = $row['news_date'];
$content = $row['news_content'];
$newsimage = $row['news_image'];
if(isset($_POST['esubmit'])){
$_SESSION['news_id'] = $newsid;
$_SESSION['n_title'] = $title;
$_SESSION['n_date'] = $date;
$_SESSION['n_content'] = $content;
$_SESSION['n_image'] = $newsimage;
header('Location: edit2.php');
}
?>
<div class="fix single_news">
<div class="single_image">
<img src="<?php echo $newsimage; ?>" style="width:200px; height:140px; alt="court">
</div>
<a href="#"><?php echo $title; ?></a>
<p><?php echo $date; ?></p>
<p><?php echo $content; ?></p>
</div>
<form action="" method="post">
<input type="submit" name="esubmit" value="edit" />
</form>
<hr>
<?php
}
?>
答案 0 :(得分:2)
从while循环中删除if(isset($_POST['esubmit'])){
代码,并在表单中添加值,如下面的示例
将编辑表单中的$newsid
传递为隐藏状态,并根据新的
<form action="" method="post">
<input type='hidden' value="<?php echo $newsid;?>" name="news_id">
<input type="submit" name="esubmit" value="edit" />
</form>
并在你的php中添加这一行。
if(isset($_POST['esubmit'])){
$_SESSION['news_id'] = $_POST['news_id'];
答案 1 :(得分:1)
问题在于,您正在将数据循环到会话中,通常单个会话只保留一个值。因为你的循环的最后一项将存储在会话中[在这种情况下它是'Sample news 2']。我相信,你可以把它放在一个隐藏的场地上。将其发布到下一页,或者您可以使用URL参数[GET]将ID传递到下一页。
例如:<a href ='edit2.php?newsId ='<?php echo $newsid?>> Edit </a>
答案 2 :(得分:1)
我认为正在发生的事情就是当你点击编辑按钮时这个edit.php页面再次重新加载,并且sql查询再次运行,这就是为什么它在两种情况下都取得了第一张图像的价值。我建议你要尝试使用$ _get []而不是$ _SESSION和$ _POST,并将image id的值直接传递给page edit2.php,并从该页面的数据库中查询其他详细信息,然后显示它。
移除<form>
和<input>
只使用<a>
,而不是像这样。
<a href='edit2.php?id=$news_id'>Edit</a>
然后在edit2.php中获取此ID,如下所示
$news_id=$_GET['id'];
并使用此ID(例如&#39;
)从数据库中获取新闻的其他详细信息$query='select * from news where news_id=$news_id';
答案 3 :(得分:1)
问题是,在while
循环的每次迭代中,您将覆盖$newsid
,$title
,$date
,......变量。因此,当您提交表单时,最后一行的数据将存储在相应的$_SESSION
变量中。
所以这是解决问题的方法。
您不需要$_SESSION
将表单值传递给 edit2.php 页面,而是按以下方式更改<form>
元素,
<form action="edit2.php?news_id=<?php echo $newsid; ?>" method="post">
在 edit2.php 页面上,首先使用news_id
超全局捕获$_GET
值,如下所示:
$newsid = $_GET['news_id'];
然后使用此$newsid
获取相应的新闻详情,最后填写表单。
这是完整的代码,
<强> edit.php 强>
<?php
include_once('connection.php');
$sql ="SELECT * FROM news ORDER BY news_id";
$result = mysqli_query($con, $sql);
while($row = mysqli_fetch_array($result)){
$newsid = $row['news_id'];
$title = $row['news_title'];
$date = $row['news_date'];
$content = $row['news_content'];
$newsimage = $row['news_image'];
?>
<div class="fix single_news">
<div class="single_image">
<img src="<?php echo $newsimage; ?>" style="width:200px; height:140px; alt="court">
</div>
<a href="#"><?php echo $title; ?></a>
<p><?php echo $date; ?></p>
<p><?php echo $content; ?></p>
</div>
<form action="edit2.php?news_id=<?php echo $newsid; ?>" method="post">
<input type="submit" name="esubmit" value="edit" />
</form>
<hr>
<?php
}
?>
<强> edit2.php 强>
<?php
if(isset($_POST['esubmit'])){
$newsid = $_GET['news_id'];
include_once('connection.php');
/* create a prepared statement */
if ($stmt = mysqli_prepare($con, "SELECT * FROM news WHERE news_id = ? LIMIT 1")) {
/* bind parameters */
mysqli_stmt_bind_param($stmt, "s", $newsid);
/* execute query */
mysqli_stmt_execute($stmt);
/* get the result set */
$result = mysqli_stmt_get_result($stmt);
/* fetch row from the result set */
$row = mysqli_fetch_array($result);
}
}
if(isset($_POST['submit'])){
// Write code to commit the edit details
}
?>
<!DOCTYPE HTML>
<html>
<head>
</head>
<body>
<?php
if(isset($_POST['esubmit'])){
?>
<form method="post" action ="edit2.php?news_id=<?php echo $row['news_id']; ?>" enctype="multipart/form-data">
Title<input type ="text" name ="title" value="<?php echo $row['news_title']; ?>"/><br>
Date<input type ="text" name="date" value="<?php echo $row['news_date']; ?>" /><br>
Content<textarea name="content"><?php echo $row['news_content']; ?></textarea>
<input class="form-control" id="image" name="image" type="file" accept="image/*" onchange='AlertFilesize();'/>
<img id="blah" src="<?php echo $row['news_image']; ?>" alt="your image" style="width:200px; height:140px;"/>
<input type="submit" name="submit" value="Update" />
</form>
<?php
}
?>
<script src="js/jquery-1.12.4.min.js"></script>
<script src="js/bootstrap.min.js"></script>
</body>
</html>