2016-07-03 1 views
1

В настоящее время я создаю легкую платформу для ведения блога с красивым дизайном материалов, но у меня возникла проблема. У меня есть таблица с идентификаторами, и я хочу изменить значение public в моей таблице, чтобы вы могли скрыть статьи из блога, чтобы сделать это, я сделал цикл, но он работает только с первым id и ни с каким другим идентификатором. Вот мой код:PHP В то время как цикл ID работает только с первым id

 try { 
     if (isset($_POST['submit'])) { 
      $stmt = $db->query('SELECT postID FROM blog_posts ORDER BY postID DESC'); 

      while ($row = $stmt->fetch()) { 
       // set public based on the submitted value from your form 
       $public = empty($_POST['public'][$row['postID']]) ? 0 : 1; 

       // do the update 
       $stmt = $db->prepare('UPDATE blog_posts SET public = ? WHERE postID = ?'); 
       $stmt->execute(array($public, $row['postID'])); 
       header('Location: index.php'); 
      } 
     } 
    } catch (PDOException $e) { 
     echo $e->getMessage(); 
    } 

Если какое-либо использование here моя полная страница PHP, и моя полностью загружена страница может быть найдена here

Спасибо заранее.

+0

Его, потому что Afte первый идентификатор вы непосредственно перейти к index.php вместо этого вы должны добавить еще один, если , чтобы проверить, обновлен ли каждый идентификатор. – SuperDJ

+0

Где индексный код? – Fil

+0

@SuperDJ это не проблема, если я удалю эту ссылку, она все еще не работает, и мои флажки не обновляются с помощью базы данных и на странице relaod. Меня спрашивают, хочу ли я повторно отправить данные формы, поэтому я включил в это перенаправление –

ответ

0

Пожалуйста, поставьте это header('Location: index.php'); вне в то время как петли и не переопределить $stmt вместо этого использовать еще один:

//....... 
//....... 
while ($row = $stmt->fetch()) { 

    // set public based on the submitted value from your form  
    $public = empty($_POST['public'][$row['postID']]) ? 0 : 1; 

    // do the update 
    //Create another statement 
    $stmt2 = $db->prepare('UPDATE blog_posts SET public = ? WHERE postID = ?'); 
    $stmt2->execute(array(
     $public, 
     $row['postID'] 
    )); 
} 

header('Location: index.php'); 
//....... 
//....... 
+0

Спасибо за вашу помощь, но это было уже предложено SuperDJ в комментариях, и это не работает, это только делает me click resend на каждой загрузке страницы –

+0

Ой, подождите, что вы переопределяете оператор внутри цикла;) –

+0

Ну, это должно быть так, но как я могу исправить это, я могу переименовать мое заявление или что-то еще –