PHP, MYSQL проблема с <select>и финальная вставка внутри <php>действия - PullRequest
0 голосов
/ 10 января 2020

У меня проблема с кодом, я не могу понять, как заставить работать мой скрипт. Я хотел сделать на своем HTML сайте, выбрать выпадающий список, чтобы выбрать родителей для ребенка, который импортирует данные из моей базы данных, и это работает, я могу видеть перечисленные вещи.

Это код для подключения БД и определить $resultimie

<?php
$con=mysqli_connect('localhost','root','','aplikacja_kolonijna');
    if(!$con)
    {
        echo 'Data base not found';
    }

    $resultimie=$con->query("select concat(imie_opiekun,' ',nazwisko_opiekun) as full_name_opiekun from opiekun");


?>

И это для показа переменных в качестве параметров в select, это работает. НО .. проверьте ниже

Opiekun Prawny:<select id="text_box_od" name="fullname_opiekun" >
  <?php
      while($rows = $resultimie->fetch_assoc())
    {
         $full_name_opiekun = $rows['full_name_opiekun'];
         echo "<option value='.$full_name_opiekun'>$full_name_opiekun</option>";            
    }
  ?>
</select>

Но также сделал форму для загрузки информации о "KID", а также включил внешний ключ для Parent ID, поэтому я сделал действие в php, я не буду его публиковать, потому что это действительно долго, все, что я могу сказать, это то, что подобная форма (вставка) работала на всех других сайтах, которые я сделал, но не на этой с этой опцией выбора.

Это мое действие, которое я использую для FORM.


<?php

    $con=mysqli_connect('localhost','root','','aplikacja_kolonijna');
    if(!$con)
    {
        echo 'Data base not found';
    }

    $imie_dziecko = $_POST['imie_dziecko'];
    $nazwisko_dziecko = $_POST['nazwisko_dziecko'];
    $pesel_dziecko = $_POST['pesel_dziecko'];
    $data_urodzenia_dziecko = $_POST['data_urodzenia_dziecko'];
    $nr_kontaktowy_dziecko = $_POST['nr_kontaktowy_dziecko'];
    $miejscowosc_zamieszkania_dziecko = $_POST['miejscowosc_zamieszkania_dziecko'];
    $ulica_zamieszkania_dziecko = $_POST['ulica_zamieszkania_dziecko'];
    $kod_pocztowy_dziecko = $_POST['kod_pocztowy_dziecko'];
    $diety_dziecko = $_POST['diety_dziecko'];
    $choroby_dziecko = $_POST['choroby_dziecko'];
    $lekarstwo_dziecko = $_POST['lekarstwo_dziecko'];
    $fullname_opiekun = $_POST['fullname_opiekun'];

    $choose_opiekun = "(SELECT id_opiekun FROM opiekun where concat(imie_opiekun,' ',nazwisko_opiekun) like '%$fullname_opiekun%')";

    $sql = "Insert into 'dziecko' (id_opiekun,imie_dziecko,nazwisko_dziecko,pesel_dziecko,data_urodzenia_dziecko,nr_kontaktowy_dziecko,miejscowosc_zamieszkania_dziecko,ulica_zamieszkania_dziecko,kod_pocztowy_dziecko,diety_dziecko,choroby_dziecko_dziecko,lekarstwa_dziecko) values ('$choose_opiekun','$imie_dziecko','$nazwisko_dziecko','$pesel_dziecko','$data_urodzenia_dziecko','$nr_kontaktowy_dziecko','$miejscowosc_zamieszkania_dziecko','$ulica_zamieszkania_dziecko','$kod_pocztowy_dziecko','$diety_dziecko','$choroby_dziecko','$lekarstwo_dziecko')";
    mysqli_query($con,$sql);

    if(!$sql)       
        echo 'nie dodano wpisu'


?>

<script type="text/javascript">
    alert('Dodano wpis!');
    </script>

<?php
header("refresh:0.1; url=add_dziecko_admin.php");
mysqli_close($con);
?>

Есть $chose_opiekun, где я объявил select для определения ID родителя (opiekun) через Concat имени и фамилии, в phpmy admin этот select работает и показывает ID, поэтому я не знаю почему это не работает в $sql query. Нет ошибки (даже если я изменю «refre sh» на 10). Там написано, что все работает, также появляется всплывающее окно с тем, что данные были введены в базу данных ... но это не так, новой записи нет.

Так что мой вопрос ... Что я могу сделать? , чтобы эта форма работала, это действительно важно для меня.

Спасибо за каждый ответ. PS Я также попытался без $choose_opiekun, и вставьте его непосредственно в запрос вставки, как значение id_opiekun.

Ответы [ 2 ]

0 голосов
/ 10 января 2020

Хорошо, я обнаружил, что мой путь тоже был хорош, но проблема была ...

Opiekun Prawny:<select id="text_box_od" name="fullname_opiekun" >
  <?php
      while($rows = $resultimie->fetch_assoc())
    {
         $full_name_opiekun = $rows['full_name_opiekun'];
         echo "<option value='.$full_name_opiekun'>$full_name_opiekun</option>";            
    }
  ?>
</select>

Перед $ full_name_opiekun было ".", И он искал в моей БД ".name фамилия "вместо 'name фамилия', так что это всегда было плохое значение взамен, потому что не было такой записи, начинающейся с точки.

0 голосов
/ 10 января 2020

Это совсем не лучший подход, но он дает вам концепцию.

  1. Выполните отдельный SELECT для получения необходимого идентификатора;
  2. Выполните INSERT и JS alert () только при наличии идентификатора:
<?php
    // do SELECT
    $sql = "SELECT id_opiekun FROM opiekun where concat(imie_opiekun,' ',nazwisko_opiekun) like '%$fullname_opiekun%'";
    $result = mysqli_query($con, $sql) or die(mysqli_error($con));
    if (mysqli_num_rows($result) > 0) {
        $row = mysqli_fetch_assoc($result);
        $choose_opiekun = $row['id_opiekun'];

        //do INSERT
        $sql = "Insert into 'dziecko' (id_opiekun,imie_dziecko,nazwisko_dziecko,pesel_dziecko,data_urodzenia_dziecko,nr_kontaktowy_dziecko,miejscowosc_zamieszkania_dziecko,ulica_zamieszkania_dziecko,kod_pocztowy_dziecko,diety_dziecko,choroby_dziecko_dziecko,lekarstwa_dziecko) values ('$choose_opiekun','$imie_dziecko','$nazwisko_dziecko','$pesel_dziecko','$data_urodzenia_dziecko','$nr_kontaktowy_dziecko','$miejscowosc_zamieszkania_dziecko','$ulica_zamieszkania_dziecko','$kod_pocztowy_dziecko','$diety_dziecko','$choroby_dziecko','$lekarstwo_dziecko')";
        mysqli_query($con, $sql) or die(mysqli_error($con));
        ?>

        <script type="text/javascript">
            alert('Dodano wpis!');
        </script>
        <?php
    }
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...