2016-05-15 2 views
0

Я пытаюсь расширить свои знания PDO и в настоящий момент я работаю в php app. На самом деле это простая CMS, и у меня возникла проблема на странице администратора, когда вы пытаетесь обновить существующие страницы, я получил сообщение об ошибке ID [$ _POST].PHP - ошибка приложения PDO

ошибка выглядит следующим образом:

Notice: Undefined index: id in /Applications/MAMP/htdocs/cms/admin/edit.php on line 6 object(PDOStatement)#2 (1) { ["queryString"]=> string(138) " UPDATE pages SET label = :label, title = :title, slug = :slug, body = :body, updated = NOW(), WHERE id = :id " } Warning: Cannot modify header information - headers already sent by (output started at /Applications/MAMP/htdocs/cms/admin/edit.php:6) in /Applications/MAMP/htdocs/cms/admin/edit.php on line 28 

edit.php

<?php 

require '../app/start.php'; 

if (!empty($_POST)) { 
    $id = $_POST['id']; 
    $label = $_POST['label']; 
    $title = $_POST['title']; 
    $slug = $_POST['slug']; 
    $body = $_POST['body']; 

    $updatePage = $db->prepare(' 
     UPDATE pages 
     SET label = :label, title = :title, slug = :slug, body = :body, updated = NOW(), 
     WHERE id = :id 
    '); 

    $updatePage->execute([ 
     'id' => $id, 
     'label' => $label, 
     'title' => $title, 
     'slug' => $slug, 
     'body' => $body, 
    ]); 

    var_dump($updatePage); 

    header('Location: ' . BASE_URL . '/admin/list.php'); 
    exit(); 
} 

if(!isset($_GET['id'])){ 
    header('Location:' . BASE_URL . '/admin/list.php'); 
    exit(); 
} 

$page = $db->prepare(' 
    SELECT * 
    FROM pages 
    WHERE id = :id 
'); 

$page->execute(['id' => $_GET['id']]); 

$page = $page->fetch(PDO::FETCH_ASSOC); 


require VIEW_ROOT . '/admin/edit.php'; 

START.php

<?php 
require ('functions.php'); 
ini_set('display_errors', 1); 


define('APP_ROOT', __DIR__); 
define('VIEW_ROOT', APP_ROOT . '/views'); 
define('BASE_URL', 'http://localhost/cms'); 

$db = new PDO('mysql:host=localhost;dbname=cms', 'root', 'root'); 

?> 

edit.php (форма страницы)

<?php require VIEW_ROOT . '/templates/header.php'; ?> 

<h2>Add page</h2> 
<form action="<?php echo BASE_URL; ?>/admin/edit.php" method="POST" autocomplete="off"> 
    <label for="title"> 
     Title 
     <input type="text" name="title" id="title" value="<?php echo e($page['title']); ?>"> 
    </label> 

    <label for="label"> 
     Label 
     <input type="text" name="label" id="label" value="<?php echo e($page['label']); ?>"> 
    </label> 

    <label for="slug"> 
     Slug 
     <input type="text" name="slug" id="slug" value="<?php echo e($page['slug']); ?>"> 
    </label> 

    <label for="body"> 
     Content 
     <textarea name="body" id="body" cols="30" rows="10"><?php echo e($page['body']); ?></textarea> 
    </label> 
    <input type="hidden" value="<?php echo e($page['id']);?>"> 
    <input type="submit" value="Edit article"> 
</form> 

ответ

0

проверка следующего кода:

<input type="hidden" value="<?php echo e($page['id']);?>"> 

как вы видите этот код не имеет имени, в соответствии с вашими образцами он должен иметь имя = «ID»

+0

Вы правы! Я пропустил это, но все еще не работал, не обновлял поля. – Alex

+0

change SET label =: label, title =: title, slug =: slug, body =: body, updated = NOW(), to SET label =: label, title =: title, slug =: slug, body =: body , updated = NOW() –

+0

последнее, не должно быть здесь –

Смежные вопросы