2016-06-29 18 views
0

這是我想要做的,我有兩個頁面,第一個是「edit.php」,第二個是「edit2.php」。頁面「edit.php」這是顯示所有新聞的頁面,您將通過點擊「編輯按鈕」和「edit2.php」來選擇要編輯的新聞,我將在哪裏編輯新聞。我想在另一個頁面中傳遞所選新聞的價值。但問題在於,當我點擊「Sample news 1」編輯按鈕時,顯示在另一個頁面中的數據是「Sample news 2」。即使當我點擊「Sample news 2」編輯按鈕時,數據也是「Sample news 2」。有人可以給我如何解決這個問題的想法嗎?PHP - 錯誤的數據通過並顯示到另一頁

這裏是edit.php的圖片。我點擊「Sample news 1」的編輯按鈕。 enter image description here

這裏是edit2.php的圖片。這是輸出數據。數據應該是「Sample news 1」而不是「Samplel news 2」。 enter image description here

這裏是edit.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 
       } 
       ?> 

這裏是 「edit2.php」 我的PHP代碼

<?php 
session_start(); 

?> 
<!DOCTYPE HTML> 
<html> 
<head> 
</head> 
<body> 


    <form method="post" action ="" enctype="multipart/form-data"> 

    Title<input type ="text" name ="title" value="<?php echo $_SESSION['n_title']; ?>"/><br> 
     Date<input type ="text" name="date" value="<?php echo $_SESSION['n_date']; ?>" /><br> 
     Content<textarea name="content"><?php echo $_SESSION['n_content']; ?></textarea> 
     <input type="submit" name="submit" value="Update" /> 
     <input class="form-control" id="image" name="image" type="file" accept="image/*" onchange='AlertFilesize();'/> 
     <img id="blah" src="<?php echo $_SESSION['n_image']; ?>" alt="your image" style="width:200px; height:140px;"/> 

    </form> 
    <hr> 


<script src="js/jquery-1.12.4.min.js"></script> 
<script src="js/bootstrap.min.js"></script> 
</body> 
</html> 

回答

1

的問題是以下

$news_id=$_GET['id']; 

和atlast上獲取新聞等詳細信息從數據庫,在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得到適當的新聞細節,最後填寫表格。

下面是完整的代碼,

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> 
+0

你好,先生,對不起,對於遲到的回覆,但它已經通過@zan的回答修復了。對於你的努力 – nethken

+0

你好,先生?@Rajeep – nethken

+0

@nethken你是否用這些代碼片段測試了你的應用程序? –

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']; 
+0

確切位置在哪裏我都會把PHP代碼?在edit.php或edit2.php? – nethken

+1

在edit.php頁面,while循環後 – Afsar

+0

我已經把它,但仍然無法正常工作。我像你所說的那樣把它放在while循環之後。 Sry im英語不太流利,很難懂英文。 – nethken

1

以下是問題:您正在將數據循環到會話中,通常單個會話只保留一個值。由於你的循環的最後一項將存儲在會話中[在這種情況下,它是'示例新聞2']。我相信,你可以把它放在一個隱藏的域&上發佈到下一頁,或者你可以使用URL參數[GET],將ID傳遞到下一頁。

例:<a href ='edit2.php?newsId ='<?php echo $newsid?>> Edit </a>

1

什麼,我認爲正在發生的事情是,當你點擊編輯按鈕,這edit.php頁面再次重裝和SQL查詢再次運行,這就是爲什麼它是在這兩種情況下拍攝第一圖像的價值。我建議您嘗試使用$ _get []而不是$ _SESSION和$ _POST,並將圖像ID的值直接傳遞到頁面edit2.php,並從該頁面的數據庫中查詢其他詳細信息,然後顯示它。操作 刪除<form><input>只需使用<a>就可以。

<a href='edit2.php?id=$news_id'>Edit</a> 

,然後取這個ID在edit2.php喜歡用這個ID,如」

$query='select * from news where news_id=$news_id'; 
相關問題