2015-02-01 4 views
-1

Я хотел бы создать CMS в PHP и MySQL, но я получаю ошибку Undefined: индексировать ключевые слова, что я делаю неправильно?Undefined: index keywords (CMS)

<?php 
include("includes/connect.php"); 

if (isset($_POST['submit'])){ 

$post_title = $_POST['title']; 
$post_date = date('d-m-y'); 
$post_author = $_POST['author']; 
$post_keywords = $_POST['keywords']; 
$post_content = $_POST['content']; 
$post_image = $_FILES['image'] ['name']; 
$image_tmp = $_FILES['image'] ['tmp_name']; 


if($post_title=='' or $post_keywords=='' or $post_content=='' or $post_author==''){ 

    echo "<script>alert('any of the field is empty')</script>"; 

    exit(); 


} 

    else{ 

     move_uploaded_file($image_tmp, "images/$post_image"); 

     $insert_query = "insert into posts (post_title,post_date,post_author,post_image,post_keywords,post_content) values ('$post_title','$post_date','$post_author','$post_image', '$post_keywords', $post_content)"; 

     if (mysql_query($insert_query)) { 

     echo "<center><h1>Post Published succesfully!</h1></center>"; 

    } 

} 

} 
+0

Пожалуйста, покажите нам свой HTML форму. Также это означает, что '$ _POST ['keywords']' не установлен! – Rizier123

+0

Проверьте, имеет ли элемент формы для него атрибут имени. Если это не так, то есть проблема. –

+0

Sidenote: '' $ post_keywords ', $ post_content' - '$ post_content' означает строку; цитируйте это. –

ответ

1

Вы должны убедиться, что $_POST массив на самом деле есть элемент с ключом keywords перед доступом к ней:

$post_title = isset($_POST['title']) ? $_POST['title'] : ''; 
$post_date = date('d-m-y'); 
$post_author = isset($_POST['author']) ? $_POST['author'] : ''; 
$post_keywords = isset($_POST['keywords']) ? $_POST['keywords'] : ''; 
$post_content = isset($_POST['content']) ? $_POST['content'] : ''; 
$post_image = isset($_FILES['image']['name']) ? $_FILES['image']['name'] : ''; 
$image_tmp = isset($_FILES['image']['tmp_name']) ? $_FILES['image']['tmp_name'] : ''; 

другой способ, чтобы написать это было бы именно:

if (isset($_POST['keywords'])) { 
    $post_keywords = $_POST['keywords']; 
} else { 
    $post_keywords = ''; 
} 

Если вы ожидаете, что ключевые слова будут размещаться каждый раз, когда вы должны убедиться, что имя вашего поля ввода точно совпадает с ключом в столбце, и t здесь нет опечаток.

  • Вы также должны убедиться, что элемент вашей формы содержит атрибут имени.

т.е .: name="keywords"

+0

* "' if (isset ($ _ POST ['title']) '' * - Это не «название», которое не определено, это «ключевые слова». Вы также сделали опечатку «titte». Плюс отсутствующий скобок.^ –

+0

Спасибо для головок, концепция одинакова для любого ключа, но я получаю вашу точку –

+0

Перезагрузите мой комментарий, вы что-то пропустили ;-) –

0

Вы можете поставить условие, чтобы проверить, есть ли какие-либо данные POST.

if ($_POST) { 
    //do your staff here 
} else { 
    //redirect to the form 
} 
-1

Я сделал это простым способом:

//Images data save in Variables 
echo $post_image = isset($_FILES['post_image']['name']) ? $_FILES['post_image']['name'] : ''; 
echo $image_tmp = isset($_FILES['post_image']['tmp_name']) ? $_FILES['post_image']['tmp_name'] : ''; 
if($post_title=='' OR $post_author==''){ 
    echo "<script>alert('Please fill all the data')</script>"; 
    exit(); 
} 
0

Я сделал это простым способом:

//Save images data in variable 

echo $post_image = isset($_FILES['post_image']['name']) ? 
    $_FILES['post_image']['name'] : ''; 

echo $image_tmp = isset($_FILES['post_image']['tmp_name']) ? 
    $_FILES['post_image']['tmp_name'] : ''; 

if ($post_title == '' OR $post_author == '') { 
    echo "<script>alert('Please fill all the data')</script>"; 
    exit(); 
}