Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]Usuwanie rekordu wybranego z formularza
Forum PHP.pl > Forum > Przedszkole
maestro20
Witam jestem poczatkujacy w tworzeniu strony ale male pojecie mam winksmiley.jpg Wiec przechodze do konkretow
Mam storzony formularz w którym za pomoca listy rozwijanej pobieram id z bazy danych i teraz napotkalem problem, a mianwicie ze nie potrafie usunac wybranego rekordu z bazy. Czy mogl by mi ktos pomodz jak to zrobic. Bardzo zalezy mi na tym .
Oto kod
wyborpyt.php
  1. <?php $link = mysql_connect("localhost", "maestro", "Passw0rd") or die('Blad: Nie mozna polaczy´c z MySQL!');
  2.  
  3. mysql_select_db("test2") or die('Blad: Nie mozna wybraz bazy danych!');
  4.  
  5. $zapytanie = mysql_query ("SELECT id FROM test where 1");
  6.  
  7. echo '<select name="dane">';
  8.  
  9. echo '<option value="">Wybierz Pytanie</option>';
  10.  
  11. while($option = mysql_fetch_assoc($zapytanie)) {
  12.  
  13. echo '<option value="'.$option['id'].'">'.$option['id'].'</option>';
  14. //$id = $_POST['id'];
  15. }
  16. echo '$option';
  17. echo '</select>';
  18.  
  19. ?>
  20. <form action="usuniecie.php" method="post" enctype= "multipart/form-data">
  21. <input type="submit" value="usun" />
  22. <form action="usuniecie.php" method="post">
  23. <input type="submit" value="wyswietl" />


usuniecie.php
  1. <?php
  2. function lacz_bd()
  3. {
  4. $db = new mysqli('localhost','maestro','Passw0rd', 'test2');
  5. if (! $db)
  6. return false;
  7. $db->autocommit(TRUE);
  8. return $db;
  9. }
  10. $db = lacz_bd();
  11. $option = $_POST['id'];
  12. $zapytanie = "delete from pracownicy where id='$id'";
  13. $wynik = $db->query($zapytanie);
  14. if($wynik)echo 'Usunięto rekord';
  15. else echo 'Błąd podczas usówania';
  16. ?>

Jak dam zeby usunelo wybrany rekord z bazy to pisze mi ze usunieto rekord a rekord dalej niestety pozostaje w bazie i tu mam najwiekszy problem bo bez tego cala moja strona lezy na plecach i nie moge dalej isc. Licze na szybka odpowedz smile.gif Pozdrawiam
EarthCitizen
Pole select masz poza <form></form> dlatego nie przekazuje zmiennej z listy, poza tym w kodzie masz kilka błędów...

  1. <?php
  2. $link = mysql_connect("localhost", "maestro", "Passw0rd") or die('Blad: Nie mozna polaczy´c z MySQL!');
  3. mysql_select_db("test2") or die('Blad: Nie mozna wybraz bazy danych!');
  4.  
  5. $zapytanie = mysql_query ("SELECT id FROM test where 1");
  6. ?>


I tutaj już musisz mieć <form> przed <select> (atrybut enctype jest niepotrzebny w tym formularzu)

  1. <form action="usuniecie.php" method="post">
  2. <select name="id">
  3. <option value="0">Wybierz Pytanie</option>


Później robisz pętlę i wypisujesz wszystkie opcje z zapytania

  1. <?php
  2. while($option = mysql_fetch_assoc($zapytanie)) {
  3.    echo '<option value="'.$option['id'].'">etykieta</option>';
  4. }
  5. ?>


Następnie zamykasz listę i kończysz formularz

  1. <input type="submit" value="usun" />
  2. </form>



  1. <?php
  2. function lacz_bd()
  3. {  
  4. $db = new mysqli('localhost','maestro','Passw0rd', 'test2');  
  5. if (! $db)
  6.      return false;
  7.   $db->autocommit(TRUE);
  8.   return $db;
  9. }
  10. $db = lacz_bd();
  11.  
  12. //poniżej radzę rzutować na inta
  13.  
  14. $option = (int)$_POST['id'];
  15.        $zapytanie = "delete from pracownicy where id='$option'";
  16.        $wynik = $db->query($zapytanie);
  17. // poniżej jak sprawdzasz $wynik to masz true bo zapytanie się wykonało tylko warunek nie został spełniony, ale było prawidłowe
  18. // więc zamień warunek:
  19. // if($wynik)echo 'Usunięto rekord';
  20. // na:
  21. if ($db->affected_rows) { // czyli jeżeli usuniętych rekordów jest więcej niż 0 (pamiętaj aby $db->affected_rows użyć przed następnym zapytaniem)
  22.    echo 'Usunięto: ' . $db->affected_rows . ' rekordów';
  23. } else {
  24.    'Błąd podczas usówania';
  25. }
  26. ?>
maestro20
Wielkie dzieki za pomoc po malych przerobkach i odpowiednim wpisaniu nazw wszystko dzala bez zarzutow wielkie dzieki smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.