Intereting Posts
smarty работает в среде xampp, но не в среде Ubuntu apache. Зачем? PHP mysql REGEXP Подготовленное заявление Почему функция переадресации в CodeIgniter не работает? Невозможно вставить данные в базу данных с помощью опции (textarea) Как использовать sync () с дополнительными полями поворота PHP: Как использовать array_filter () для фильтрации ключей массива? Любой надежный API, доступный для определения города и страны пользователя с IP-адреса Плюсы и минусы интерфейсных констант «Неопределенная константа / переменная» Ошибка при использовании Laravel с угловым JS … Невозможно показать переменную в лезвии Добавление заголовков на всех страницах с помощью FPDF Как выполнить итерацию массива n-deep для фильтрации узлов строки – PHP Определение, является ли свойство объекта пустым Как я могу заставить PHP mail () работать? Нужна помощь в настройке MTA Запустить приложение php с помощью tomcat? Создайте скрипт загрузки изображений PHP для переименования и изменения размера

PHP. Неверные данные передаются и отображаются на другой странице.

это то, что я хочу сделать, у меня две страницы, сначала это «edit.php», а вторая – «edit2.php». страница «edit.php» – это страница, на которой отображаются все новости, и вы будете выбирать, какие новости вы будете редактировать, нажав кнопку «edit button» и «edit2.php», где я точно отредактирую новости. Я хочу передать значение выбранных новостей на другой странице. Но вот проблема, когда я нажал кнопку редактирования «Пример новостей 1», данные, отображаемые на другой странице, это «Пример новостей 2». Даже когда я нажал кнопку «Sample news 2», данные также являются «Sample news 2». Может кто-нибудь дать мне идеи о том, как это исправить?

вот фотография edit.php. Я нажимаю кнопку редактирования «Пример новостей 1». введите описание изображения здесь

вот картина edit2.php. и это выходные данные. Данные должны быть «Sample news 1», а не «Samplel news 2». введите описание изображения здесь

здесь мой PHP-код в edit.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 } ?> 

вот мой php-код для "edit2.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> 

Проблема в том, что на каждой итерации цикла 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 с помощью 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> 

Удалить if(isset($_POST['esubmit'])){ код из цикла while и добавить значения в форме, как показано ниже

$newsid в форме редактирования как скрытая и $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']; 

Вот проблема: вы зацикливаете свои данные на сеансе, обычно одиночный сеанс сохраняет только значение. Поскольку этот последний элемент вашего цикла будет храниться в сеансе [в этом случае это «Пример новостей 2»]. Полагаю, вы можете поместить его в скрытое поле и отправить его на следующую страницу или использовать параметр URL [GET], чтобы передать идентификатор на следующую страницу.

Пример: <a href ='edit2.php?newsId ='<?php echo $newsid?>> Edit </a>

то, что я думаю, происходит, когда вы нажимаете кнопку редактирования, эта страница edit.php снова перезагружается и этот запрос sql запускается снова, поэтому в обоих случаях он принимает значение первого изображения. Я предлагаю вам попробовать использовать $ _get [] вместо $ _SESSION и $ _POST и передать значение идентификатора изображения непосредственно на страницу edit2.php и запросить другие данные из базы данных на этой странице, а затем отобразить it.try. Удалить <form> и <input> использовать только <a> вместо этого.

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

а затем введите этот id в edit2.php, как показано ниже.

 $news_id=$_GET['id']; 

и вы получите другие данные новостей из базы данных, используя этот идентификатор, например,

 $query='select * from news where news_id=$news_id';