Вставить текст с выпадающим в БД - PullRequest
0 голосов
/ 03 июня 2018

У меня есть таблица в базе данных, которая имеет 3 столбца, идентификатор первого столбца (PK), имя второго столбцаOfPerson и родительский столбец третьего ключа (ключ foriegn).Когда я ввел имя в текстовое поле и выбрал parent из выпадающего меню, я хочу вставить в базу данных имя в nameOfPerson и parent в parent.Почему в моем коде, когда я нажал "отправить", ничего не происходит?

Это моя таблица

id  nameOfPerson    parent
3   John             NULL
4   Michel            3
5   Husam             4
6   Khalaf            5
7   Mark              5
---------------------------- 

Это моя функция, чтобы получить, кто может быть родителем

    public function displayParent(){
     //$statment = $this->db->prepare("SELECT DISTINCT  person.nameOfPerson, b.nameOfPerson as name FROM person LEFT JOIN person b ON (person.parent = b.id)");
        $statment = $this->db->prepare("SELECT id, nameOfPerson FROM person");
        $statment->execute();
        $result = $statment->fetchAll();
        foreach($result as $output){
            echo "<option>" .$output['nameOfPerson']."</option>";
        }
 }

это моя функция для вставки данных в БД

    public function enterChild(){

        $statment = $this->db->prepare("INSERT INTO person (nameOfPerson, parent) VALUES(:name, :parent)");
        $statment->bindParam(':name',$_POST['name']);
        $statment->bindParam(':parent',$_POST['parent']);
        $statment->execute();
        $result = $statment->rowCount();
        if($result == "1")
        {
            $message = '<label>successfully</label>';
        }
            else
            {
                $message = '<label>Wrong</label>';
            }
    echo $message;
 }

, и это код индекса mu

<?php include_once('Family.php');
$object = new Family();
?>
<!DOCTYPE HTML>
<html>
<head>
<title>Family Tree</title>
</head>
<body>
<form method="post">
  Child Name: <input type ='text' name ='name' placeholder="Enter name here">
  <select name="parent" id="names" onchange="getSelectValue()">
  <option>--Select Parent--</option>
  <?php echo $object->displayParent() ?>
  </select>
    <br>
    <input type="submit" name="submit" value="Enter">
</form>

<script>
    //Get selected nema
    function getSelectValue(){

        var selectedValue = document.getElementById("names").value;
        console.log(selectedValue);
    }
</script>

<?php
    $object->GetFamilyTree();
    if(isset($_POST['submit'])){

        $name=  $_POST["name"];
        $parent= $_POST["parent"];
        $object->enterChild();
    }
?>


</body>
</html>

1 Ответ

0 голосов
/ 03 июня 2018

Ваш запрос не выполнен, поскольку столбец parent должен быть целым числом, когда вы отправляете строку.

Проблема заключается в том, как вы выводите поле выбора для родителей.

echo "<option>" .$output['nameOfPerson']."</option>";

Если вы опустите атрибут value, вместо него будет отправлен текст (в данном случае имя).

Добавьте id в качестве значения, и оно должно работать:

echo "<option value='{$outout['id']}'>" .$output['nameOfPerson']."</option>";

Теперь вместо имени будет отправлен идентификатор.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...