2013-07-25 58 views
-1

你好,我是一个初学者在PHP和卡住在这一刻。我找不到问题。注意:未定义的指数:post_id在

Notice: Undefined index: post_id in C:\XA\htdocs\Passie Blog\post.php on line 22

这是22行那里的问题应该是:

$id = $_POST['post_id'];

这是我的PHP代码

<?php 
if(!isset($_GET['id'])){ 
    header('Location: index.php'); 
    exit(); 
}else{ 
    $id = $_GET['id']; 
} 
include('includes/db_connect.php'); 
if(!is_numeric($id)){ 
    header('Location: index.php'); 
} 
$sql = "SELECT title, body FROM posts WHERE post_id='$id'"; 
$query = $db->query($sql); 
if($query->num_rows !=1){ 
    header('Location: index.php'); 
    exit(); 
} 
if(isset($_POST['submit'])){ 
    $email = $_POST['email']; 
    $name = $_POST['name']; 
    $comment = $_POST['comment']; 
    $id = $_POST['post_id']; 
    if($email && $name && $comment){ 
     // 
     $email = $db->real_escape_string($email); 
     $name = $db->real_escape_string($name); 
     $id = $db->real_escape_string($id); 
     $comment = $db->real_escape_string($comment); 
     if($addComment = $db->prepare("INSERT INTO comments(name, post_id, email_add, comment) VALUES (?,?,?,?)")){ 
      $addComment->bind_param('ssss', $id, $name, $email, $comment); 
      $addComment->execute(); 
      echo "Bedankt! uw bericht is toegevoegd"; 
      $addComment->close(); 

     } else{ 
      echo "Error"; 
     } 
    } else{ 
     echo "ERROR"; 
    } 
} 
?> 

,这是我的网页

其余
<div id="container"> 
    <div id="post"> 
     <?php 
      $row = $query->fetch_object(); 
      echo "<h2>".$row->title."</h1>"; 
      echo "<p>".$row->body."</p>"; 
     ?> 
    </div> 
    <hr /> 
    <div id="add-comments"> 
     <form action="<?php echo $_SERVER['PHP_SELF']."?id=$id"?>" method="post"> 
      <div> 
       <label>Email Adres</label><input type="text" name="email" /> 
      </div> 
      <div> 
       <label>Naam</label><input type="text" name="name" /> 
      </div> 
      <div> 
       <label>Commentaar</label><textarea name="comment"></textarea> 
      </div> 
      <input type="hidden" name="post_id" value="<?php echo $id?>" /> 
      <input type="submit" name="submit" value="Toevoegen"/> 
     </form> 
     </div> 
     <hr /> 
     <div id="comments"> 
     <?php 
      $query = $db->query("SELECT * FROM comments WHERE post_id='$id' ORDER BY comment_id DESC"); 
      while($row = $query->fetch_object()): 
     ?> 
      <div> 
       <h5><?php echo $row->name?></h5> 
       <blockquote><?php echo $row->comment?></blockquote> 
      </div> 
     <?php endwhile;?> 
     </div> 
</div> 
+1

您可以发布表单的HTML吗? –

+0

你有一个名为“post_id”的表单元素吗? – Sean

+0

虽然你可以使用$ _GET和$ _POST,也许坚持一个会更好 – 2013-07-25 23:29:30

回答

0

变量post_id未设置(无论如何都是后置)。我会改变这些

$email = $_POST['email']; 
$name = $_POST['name']; 
$comment = $_POST['comment']; 
$id = $_POST['post_id']; 

喜欢的东西

$email = !empty($_POST['email']) ? $_POST['email'] : ''; 
$name = !empty($_POST['name']) ? $_POST['name'] : ''; 
$comment = !empty($_POST['comment']) ? $_POST['comment'] : ''; 
$id = !empty($_POST['post_id']) ? $_POST['post_id'] : ''; 

这种方式,你有一个回退值,如果表格没有填写完整。

+0

完成这个! thx为此,我已将此代码放置到窗体中。 ”/>这有助于解决问题,但知道我没有看到网页上的任何评论有任何想法? – user2619538

1

没有名称为post_id的字段出现在您的表单中。但是,您需要通过表单操作中的网址手动传递ID。要获得ID,您可以使用$_GET['id']而不是$_POST['post_id']