Данные не вставляются mysql

#php #mysql #content-management-system

#php #mysql #content-management-system

Вопрос:

Я создаю собственную CMS для себя, и все идет отлично, но по какой-то причине система не вставляет определенное поле, называемое категориями. У меня есть таблица под названием categories, и я могу вставить эти категории без проблем. На моем addnewpost.php страница У меня есть это поле формы, которое позволяет мне выбрать добавленную категорию..

 <select name="Category" id="categorytitle" class="form-control">
 <?php 
   $sql = "SELECT id,title FROM category";
   $stmt = $conn->query($sql);
   while ($DataRows = $stmt->fetch()){
     $id = $DataRows["id"];
     $CategoryName = $DataRows["title"];
 ?>
   <option value=""><?php echo $CategoryName; ?></option>
 <?php } ?>
</select>
  

прежде всего, у меня есть это, чтобы вставить данные в базу данных в таблицу с именем posts…

 <?php
if(isset($_POST["Submit"])){
  $posttitle  = $_POST["posttitle"];
  $Category   = $_POST["Category"];
  $image      = $_FILES["image"]["name"];
  $target     = "../uploads/".basename($_FILES["image"]["name"]);
  $posttext   = $_POST["postdescription"];
  $admin      = "phillip";

  date_default_timezone_set("Europe/London");
  $CurrentTime=time();
  $DateTime=strftime("%B-%d-%Y %H:%M:%S",$CurrentTime);

  if(empty($posttitle)){
    $_SESSION["ErrorMessage"] = "Post title cannot be empty";
    redirect_to("addnewpost.php");
  } elseif (strlen($posttitle)<10){
    $_SESSION["ErrorMessage"] = "Post title should be greater than 10 characters";
    redirect_to("addnewpost.php");
  } else {
    //All is good insert into the database
    $sql = "INSERT INTO posts(datetime,title,category,author,image,post)";
    $sql .= "VALUES(:dateTime,:postTitle,:categoryName,:adminName,:imageName,:postDescription)";
    $stmt = $conn->prepare($sql);
    $stmt->bindValue(':dateTime',$DateTime);
    $stmt->bindValue(':postTitle',$posttitle);
    $stmt->bindValue(':categoryName',$Category);
    $stmt->bindValue(':adminName',$admin);
    $stmt->bindValue(':imageName',$image);
    $stmt->bindValue(':postDescription',$posttext);

    $Execute=$stmt->execute();
    move_uploaded_file($_FILES["image"]["tmp_name"],$target);

    if($Execute){
      $_SESSION["SuccessMessage"]="Post with id : ".$conn->lastInsertId()." Added Successfully";
      redirect_to("addnewpost.php");
    } else {
      $_SESSION["ErrorMessage"]="Something went wrong. Try again";
      redirect_to("addnewpost.php");
    }
  }
}
?>
  

Вот скриншот, показывающий, что поля категории пусты. У меня включены ошибки отображения, но ни одна из них не отображается. Любые мысли приветствуются…

введите описание изображения здесь

Комментарии:

1. <option value=""> не должно быть <option value="$id"> ?

2. Более вероятно <option value="<?php echo $id; ?>">

Ответ №1:

Спасибо Найджелу и Фелиппе. Я просто убрал значение параметра, так что вместо этого это просто…

 <option><?php echo $CategoryName; ?></option>
  

Это заставило все это работать отлично. Я тоже смотрел на это часами.
Спасибо вам обоим.

Ответ №2:

    <select name="Category" id="categorytitle" class="form-control">
     <?php 
       $sql = "SELECT id,title FROM category";
       $stmt = $conn->query($sql);
       while ($DataRows = $stmt->fetch()){
         $id = $DataRows["id"];
         $CategoryName = $DataRows["title"];
     ?>
       <option value="<?php echo $CategoryName; ?>"><?php echo $CategoryName; ?></option>
     <?php } ?>
    </select>
  

Это больше похоже на это