Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> MySQL zapytanie usuwające wiersz o konkretnym id.
Peperoni
post
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 29.08.2019

Ostrzeżenie: (0%)
-----


Witam,
piszę stronkę na zaliczenie i mam w panelu administracyjnym tabelę z menu do której ładnie się dodaje i usuwa kiedy podam konkretne ID. Zrobiłem obok wiersza w tabeli html przycisk usuń i chciałbym żeby usuwał dokładnie ten wiersz do którego jest przypisany.

Tutaj kod tworzący tabelę i wypełniający ją danymi z bazy:

  1. require_once ('../db_connect.php');
  2.  
  3. if ($result = $polaczenie->query("SELECT * FROM jadlospis ORDER BY ID")){
  4. if($result->num_rows > 0) {
  5. echo '<div class="card mb-3">';
  6. echo '<div class="card-header">';
  7.  
  8. echo 'Jadłospis</div>';
  9. echo '<div class="card-body">';
  10. echo '<div class="table-responsive">';
  11.  
  12. echo '<table class="table table-bordered" id="dataTable" width="100%" cellspacing="0">';
  13. echo '<thead>';
  14. echo "<tr>
  15. <th>ID </th>
  16. <th>Dzień </th>
  17. <th>Śniadanie </th>
  18. <th>Obiad</th>
  19. <th>Podwieczorek</th>
  20. <th>Usuń/Popraw</th>
  21. </tr>";
  22.  
  23. echo '</thead>';
  24.  
  25. while($row = $result->fetch_object()){
  26. echo '<tbody>';
  27. echo "<tr>";
  28.  
  29. echo "<td>" . $row ->id . "</td>";
  30. echo "<td>" . $row ->dzien . "</td>";
  31. echo "<td>" . $row ->sniadanie . "</td>";
  32. echo "<td>" . $row ->obiad . "</td>";
  33. echo "<td>" . $row ->podwieczorek . "</td>";
  34.  
  35. echo "<td> <input type=submit class=btn btn-primary btn-block name=idusun value=usuń> </td>";
  36.  
  37.  
  38.  
  39. echo "</tr>";
  40. echo '<tbody>';
  41.  
  42. }
  43.  
  44. echo "</table>";



Zapytanie SQL pod Submita wygląda następujaco:

  1. if (isset($_POST['idusun']))
  2. {
  3.  
  4. //Udana walidacja
  5. $wszystko_OK=true;
  6.  
  7. $userid = $_SESSION['user'];
  8.  
  9.  
  10.  
  11. [sql]$delete = "DELETE FROM `jadlospis` WHERE `ID` = id";[/sql]
  12.  
  13. //Połączenie z bazą
  14.  
  15. require_once "../db_connect.php";
  16. mysqli_report(MYSQLI_REPORT_STRICT);
  17.  
  18. try
  19. {
  20. $polaczenie = new mysqli($host, $db_user, $db_password, $db_name);
  21. if ($polaczenie->connect_errno!=0)
  22. {
  23. throw new Exception(mysqli_connect_errno());
  24. }
  25. else
  26. {
  27.  
  28. if ($polaczenie->query($delete))
  29. {
  30. $_SESSION['udanezamowienie']=true;
  31. header('Location: form-basic.php');
  32. }
  33. else
  34. {
  35. throw new Exception($polaczenie->error);
  36. }
  37.  
  38. }
  39.  
  40. }
  41.  
  42. catch(Exception $e)
  43. {
  44. echo '<span style="color:red;">Coś się popsuło!</span>';
  45. echo '<br />Informacja developerska: '.$e;
  46. }
  47.  
  48. }


Niestety usuwa ono wszystkie wiersze, a chciałbym tylko jeden.
Proszę bardzo o pomoc.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
viking
post
Post #2





Grupa: Zarejestrowani
Postów: 6 381
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Ja to wiem ale przy okazji chciałem nauczyć żeby czasami sprawdzać wygenerowany kod czy zgadza się z tym co być powinno. I też pokazać że to co zrobił nijak ma się do mojej odpowiedzi. W tym kodzie nie było też żadnego formularza co jest niepoprawne.
Jeszcze kolejna rzecz. Rzutuj to id na int chyba że chcesz atak sql injection.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 17.10.2025 - 02:31