Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL]Zapytanie w pętli innego zapytania do bazy
Forum PHP.pl > Forum > Bazy danych > MySQL
demolka666
Witam,
Chcialabym zrobić następującą rzecz (i niestety ciągle mi nie wychodzi sad.gif ). Mam stworzoną tabelę, są w niej pola: id, place, title, content i date. Chciałabym, aby w polu place numery następowały po sobie. Czy np gdy mając 10 rekordów skasuję piąty, wszystkie inne przesuną się o jeden: szósty stanie się piątym, siódmy stanie się szóstym i tak dalej aż do dziesiątego, który staje się dziewiątym. Napisałam w tym celu poniższy skrypt. Wpisy się fajnie kasują, ale niestety ich numer 'place' pozostaje bez zmian. Nie potrafię znaleźć błędu. Problematyczny fragment oznaczyłam pogrubieniem.

  1. if(isset($_GET['d']) && $_GET['action'] == "delete"){
  2. $d = $_GET['d'];
  3. //pobranie miejsca
  4. $zapytanie3 = "SELECT * FROM content WHERE id=$d";
  5. $wynik3 = mysql_query($zapytanie3) OR DIE(mysql_error());
  6. while ($row = mysql_fetch_array($wynik3)){
  7. $place = $row['place'];
  8. }
  9. //wykasowanie wpisu
  10. $zapytanie4 = "DELETE FROM content WHERE id = $d ";
  11. mysql_query($zapytanie4) OR DIE (mysql_error());
  12.  
  13. [b]//zmiana miejsc
  14. $zapytanie5 = "SELECT * FROM content WHERE place > $place ORDER BY place ASC";
  15. $wynik5 = mysql_query($zapytanie5) or DIE(mysql_error());
  16. while ($row = mysql_fetch_array($wynik5)){
  17. echo $row['page'];
  18. $d = $row['id'];
  19. $place++;
  20. echo $place;
  21. echo $d;
  22. mysql_query("UPDATE content SET place = '$place' WHERE ID = '$d'") OR DIE(mysql_error());[/b]
  23. }
  24.  
  25.  
  26. //echo ("<script language=\"JavaScript\" type=\"text/javascript\">window.location.href = \"panel.php?id=pozycja\"</script>");
  27. }


Czy można w ten sposób zagnieżdżać zapytania? W zagadnieniach MySQL i PHP nie jestem jeszcze zbyt zaawansowana więc proszę o wyrozumiałość winksmiley.jpg.
Pozdrawiam.
Mchl
A może by tak:
Kod
UPDATE content SET place = place - 1 WHERE place > $place


(jako $zapytanie5)
demolka666
Dzięki! Twój post podsunął mi rozwiązanie. Prawidłowy kod powinien wyglądać tak:
  1. while ($row = mysql_fetch_array($wynik5)){
  2. $d = $row['id'];
  3. mysql_query("UPDATE content SET place = '$place' WHERE ID = '$d'") OR DIE(mysql_error());
  4. $place++; //tutaj właśnie tkwił problem
  5. }


pozdrawiam winksmiley.jpg
Mchl
No niby tak, ale moje zapytanie powinno to zrobić bez pętli winksmiley.jpg
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.