2013-04-14 4 views
0

У меня есть пользовательская форма ввода здесь. Это код для этого!Php Undefined index

<form id="addCommentForm" method="POST" action="#"> 
    <div> 

     <input type="hidden" name="post_id" id="post_id" value="<?php echo $post_id; ?>"/> 

     <label for="name">Your Name</label> 
     <input type="text" name="name" id="name" /> 

     <label for="email">Your Email</label> 
     <input type="text" name="email" id="email" /> 

     <label for="body">Comment Body</label> 
     <textarea name="bodytext" id="bodytext"></textarea> 

     <input type="submit" class="submit" value="Submit" /> 
    </div> 
</form> 

но при представлении я получаю эту ошибку:

Notice: Undefined index: bodytext in /home/se212004/public_html/post-comment-mine.php on line 15 

, который относится к этому блоку кода:

if (isset($_POST)) 
{ 

    $username = $_POST['name']; 
    $email = $_POST['email']; 
    $content = $_POST['bodytext']; 
    $post_id=$_POST['post_id']; 

    $lowercase = strtolower($email); 
    $image = md5($lowercase); 

    //insert these values into the db as a new comment 
    //example using array syntax to insert values 
    $statement = "INSERT INTO comments (name, body, dt, email) VALUES (?, ?, now(), ?)"; 
    $sth = $db->prepare($statement); 
    $data = array($username, $content, $email); 
    $sth->execute($data); 
} 

Ошибка указывает на $content = $_POST['bodytext'];. Любая помощь для решения этой проблемы будет оценена по достоинству.

Это javascript-файл.

$(function() { 

$(".submit").click(function() { 

var name = $("#name").val(); 
var email = $("#email").val(); 
var comment = $("#bodytext").val(); 
var post_id = $("#post_id").val(); 
var dataString = '&name='+ name + '&email=' + email + '&comment=' + comment + '&post_id=' + post_id; 


if(name=='' || email=='' || comment=='') 
{ 
alert('Please Give Valid JOE Details'); 
} 
else 
{ 
$("#flash").show(); 
$("#flash").fadeIn(400).html('<img src="ajax-loader.gif" align="absmiddle">&  nbsp;<span class="loading">Loading Comment...</span>'); 
$.ajax({ 
    type: "POST", 
    url: "post-comment-mine.php", 
    data: dataString, 
    cache: false, 
    success: function(html){ 

    $("ol#update").append(html); 
    $("ol#update li:last").fadeIn("slow"); 
    document.getElementById('email').value=''; 
    document.getElementById('name').value=''; 
    document.getElementById('comment').value=''; 
$("#name").focus(); 

    $("#flash").hide(); 

} 
}); 
} 
return false; 
}); 



}); 
+0

Вы знаете о синтаксической ошибке '=>' в своей текстовой области HTML? –

+1

Это была опечатка, она ничего не исправить! –

+0

Сделайте print_r $ _POST в блоке PHP и отправьте мне вывод. – macintosh264

ответ

0

Вашей проблемой эта линия:

var dataString = '&name='+ name + '&email=' + email + '&comment=' + comment + '&post_id=' + post_id; 

Вы устанавливаете comment значение в bodytext и в PHP вы проверяете $_POST['bodytext'], когда вы должны быть проверка $_POST['comment'], либо это, либо изменить линию на:

var dataString = '&name='+ name + '&email=' + email + '&bodytext=' + comment + '&post_id=' + post_id; 

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

+0

ничего себе, я не могу поверить, что я пропустил это !! Огромное спасибо!! –

1

Возможно, это не так, что $ _POST ['bodytext'] не установлен, что вызывает ошибку времени выполнения php. После исправления ошибки replacde

$content = $_POST['bodytext']; 

с

$content = isset($_POST['bodytext']) ? $_POST['bodytext'] : '';