Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Usuwanie danych z bazy
Forum PHP.pl > Forum > Przedszkole
Molfer
Zaczynam dopiero uczyć się php i pisze mały skrypt tak dla wprawy. Niestety mam mały problem:
  1. <?
  2.  
  3.  
  4. require_once('funkcje.php');
  5.  
  6.  
  7. $db = db();
  8.  
  9. $wynik = $db->query($zapytanie1);
  10. $ile = $wynik->num_rows;
  11. echo '<p><b>W bazie jest ' .&#092;"$ile\". ' wykonawców</b></p>';
  12. echo &#092;"n\";
  13.  
  14. echo '<form method=\"post\" action=\"autor.php\"><br />'.&#092;"n\";
  15.  
  16. for($i=0; $i<$ile; $i++){
  17. $wynik_ile = $wynik->fetch_assoc();
  18.  
  19.  
  20. echo '<div class=\"checkbox\"><input type=\"checkbox\" name=\"';
  21. echo $wynik_ile['nazwa'];
  22. echo '\" value=\"1\" />';
  23. echo $wynik_ile['nazwa'];
  24. echo '</div>';
  25. echo &#092;"n\";
  26.  
  27.  
  28.  
  29. }
  30. echo '<input type=\"submit\" value=\"Usuń\" /><br />';
  31. echo '</form>'.&#092;"n\"; 
  32.  
  33. echo '<p><b>Pozycje usunięte:</b></p>';
  34.  
  35.  
  36. foreach( $_POST as $k => $w )
  37. {
  38.  if ( $w == '1' )
  39.  {
  40.  
  41.  echo $k.&#092;"<br /> n\";
  42.  
  43.  $wynik2 = $db->query($zapytanie2);
  44.  
  45.  }
  46.  
  47. }
  48.  
  49.  
  50.  
  51.  
  52.  
  53. ?>


funkcje.php
  1. <?php
  2.  
  3. define('HOST','localhost');
  4. define('NAZWA','teksty');
  5. define('UZYTKOWNIK','root');
  6. define('HASLO','');
  7.  
  8. function db()
  9. {
  10.  $lacz = new mysqli(HOST,URZYTKOWNIK,HASLO,NAZWA); 
  11.  if (!$lacz)
  12. throw new Exception('Połączenie z serwerem bazy danych nie powiodło się');
  13.  else
  14. return $lacz;
  15. }
  16.  
  17. $zapytanie1 = &#092;" SELECT * FROM autorzy \";
  18.  
  19. $zapytanie2 = &#092;" DELETE FROM autorzy WHERE nazwa='\".$k.\"' \";
  20.  
  21. ?>


Jego zadaniem jest wyświetlić pozycje z bazy danych razem z checkboxami, potem po zaznaczeniu odpowiednich pozycji ma je usuwać. No i niestety ich nie usuwa, nie wiem co robie żle bo nie wyświetla mi sie zaden komunikat sad.gif
Guest
URZYTKOWNIK popraw na UZYTKOWIK biggrin.gif
Molfer
Poprawiłem ale dalej nie działa. Pozatym rowniez wtedy skrypt pobierał wykonawcow z bazy ( nie wiem dlaczego smile.gif )
nospor
ale co teraz nie dziala? jakies errory?

poza tym robisz $zapytanie2 zależne od zmiennej k, ale najpierw robisz zapytanie a dopiero potem zmieniasz to zmienną. Ten numer nie przejdzie. $zapytanie 2 musisz generować w tej samej pętli co $k
Molfer
Wilekie dzięki juz jest dobrze.
  1. <?php
  2.  echo $k.&#092;"<br /> n\";
  3.  
  4.  $wynik2 = $db->query($zapytanie2);
  5. ?>

Te dwie linijki zamienilem miejscami i juz dziala biggrin.gif
Molfer
Jeszcze jedno pytanie. Gdy w bazie danych w nazwie wystepuje znak . (kropka) lub (odstęp) to w tym miejscu:
  1. <?php
  2.  
  3. foreach( $_POST as $k => $w )
  4. {
  5.  if ( $w == '1' )
  6.  {
  7.  
  8. $zapytanie2 = &#092;" DELETE FROM autorzy WHERE nazwa='\".$k.\"' \";
  9. echo $k.&#092;"<br /> n\";
  10. $wynik2 = $db->query($zapytanie2);
  11.  
  12.  
  13.  
  14.  }
  15.  
  16. }
  17.  
  18. ?>

Zamiast tych znaków jest znak _ (podkreślenia) przez co nie moge ich usunąć.
nospor
Znaczy się co? Wkładasz do tabeli w pole nazwa wartość 'ala ma.kota' a w tabelce jest 'ala_ma_kota'? A jakiego typu jest to pole? A może ty przxed włożeniem jakoś to konwertujesz? Bo jeśli pole jest typu tekstowego to bazka sama z siebie nie powinna nic konwertować
Guest
Jest tak:
W bazie jest wszystko dobrze, każdy znak jest taki jak chce.
Tak gdzie sa chceckboxy tez jest wszystko dobrze.
Ale w podanym fragmencie następuje zmiana tych znaków.

# np. tak wyglada jak chce usunac 'sdf sdfg'

[checkbox]sdf sdfg
[USUN]
Pozycje usunięte:
sdf_sdfg

No i niestety nie usuwa się bo takiej 'sdf_sdfg' pozycji w bazie nie ma
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.