apka webowa nie dodaje rekordu do bazy danych

0

Witam, tworzę sobie aplikacje webową i mam w niej taki o to problem: w bazie danych jest tabela "plants" z listą wszystkich dostępnych roślin, w apce dany użytkownik może sobie kliknąć przy takiej roślinie "przypisz" i powinno mu dodawać ten rodzaj rośliny do listy "własnych" roślin jednak lista cały czas jest pusta

tutaj kod który ma służyć do dodawania

<?php
session_start();
require_once ('..\config\config.php');

$user_id = $_SESSION['user_id'];
$plant_id = $_GET['id'];
$date_plant_grown = "0000-00-00";

$add = "INSERT INTO `users_plant`(`id`,`id_user`,`id_plant`,`date_plant_grown`) VALUES (NULL,'$user_id','$plant_id','$date_plant_grown')";
$db->query($add);

echo $add;

$query_plant = "SELECT * FROM users_plant where id_user like $user_id AND id_plant like $plant_id";
$result_plant = $db->query($query_plant);
$array_plant = $result_plant->fetch_assoc();
$plant_add = $array_plant['id'];

$add2 = "INSERT INTO `watering`(`id`,`id_user_plant`,`date_last_watering`) VALUES (NULL,'$plant_add','$date_plant_grown')";
$db->query($add2);

header('location: ..\view\plants_list.php');

$db->close();
exit();

tutaj fragment kodu z "view"

<?php
$plant_id = $array['id'];
$query_checkasi = "SELECT * FROM users_plant where id_user like '$user_id' AND id_plant like '$plant_id' ";
$result_checkasi = $db->query($query_checkasi);
$row_checkasi = $result_checkasi->num_rows;

if ($row_checkasi>0)
{ ?>
    <a class="btn btn-outline-secondary form-control col-12" href="../action/unassign_plant.php?id=<?php echo $array['id'];?>">Usuń</a>
    <?php
}
else
{
    ?>
    <a class="btn btn-outline-secondary form-control col-12" href="../action/assign_plant.php?id=<?php echo $array['id'];?>">Przypisz</a>
    <?php
}

?>
3
  1. Po pierwsze: @Pan Zimny: Dlaczego nie należy zamieszczać kodu w postaci obrazków Możesz wrzucić swój kod jako tekst?
  2. Po drugie, niby mówisz o kodzie w "view", ale tak na prawdę w całej Twojej apce interfejs jest połączony z logiką, persystencją i widokiem. Bardzo słaba jest architektura tego.
  3. Narażasz się na dużo błędów, sam kod assign_plant.php?id=<?php echo $array['id'];?> jest zły i to z conajmniej 3ech powodów. Po pierwsze XSS, po drugie UrlEncode, po trzecie budowanie linków w widoku.
  4. Narażasz sie na SQL Injection używając interpolacji stringów do budowania query. Gdyby w $plant_add znalazł się znak ', to klient mógłby dowolnie zmodyfikować Twoje query.
  5. Nie używaj exit().

Nie wiem skąd uczyłeś się pisać w PHP; ale na pewno ze słabego źródła.

1 użytkowników online, w tym zalogowanych: 0, gości: 1