PHP - 错误的数据被传递并显示到另一个页面

时间:2016-06-29 04:41:20

标签: php html

这就是我想要做的,我有两个页面,第一个是“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”的编辑按钮。 enter image description here

这是edit2.php的图片。这是输出数据。数据应该是“Sample news 1”而不是“Samplel news 2”。 enter image description here

这是我在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
                 }
                 ?> 

4 个答案:

答案 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变量中。

所以这是解决问题的方法。

  1. 您不需要$_SESSION将表单值传递给 edit2.php 页面,而是按以下方式更改<form>元素,

    <form  action="edit2.php?news_id=<?php echo $newsid; ?>" method="post">
    
  2. edit2.php 页面上,首先使用news_id超全局捕获$_GET值,如下所示:

    $newsid = $_GET['news_id'];
    
  3. 然后使用此$newsid获取相应的新闻详情,最后填写表单。

  4. 这是完整的代码,

    <强> 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>