Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Problem z usuwaniem rekordu
Forum PHP.pl > Forum > Przedszkole
yoshinobi
Witam!

Mam następujący problem:
W bazie danych znajdują się dwie tabele: www i kategoria.
Problem polega na tym, że kod który odpowiedzialny jest za usuwanie danej kategorii nie działa dobrze.
Idea jest taka aby po naciśnięciu "usuń" funkcja sprawdzała czy do danej kategorii nie jest przypisana żadna strona, jeśli jest to pokazuje się odpowiedni komunikat, jeśli zaś nie, kategoria zostaje usunięta.

Oto kod który ma być odpowiedzialny za usuwanie kategorii:
  1. echo "<a href=\"ekategoria.php?a=del&id={$r['idK']}\"><img src=\"img/del.gif\"></a><a href=\"ekategoria.php?b=edit&amp;id={$r['idK']}\"><img src=\"img/edit.gif\"></a>";
  2. if($a == 'del' and !empty($id)) {
  3. $zap = mysql_query("SELECT w.idK, k.idK FROM www AS w INNER JOIN kategoria AS k ON k.idK=w.idK WHERE w.idK=k.idK");
  4. if(mysql_num_rows($zap) > 0){
  5. echo '<div class="erroralert"></div><div class="alercik"><b>Istnieją strony w tej kategorii!<br>Usuń je aby móc usunąć tę kategorie!</b><br><br><a href="ekategoria.php"><img src="img/back2.gif"></a></div>';
  6. }
  7. else {
  8. mysql_query("DELETE FROM $tabela WHERE idK='$id'") or die('Błąd zapytania: '.mysql_error());
  9. echo '<div class="erroralert"></div><div class="alercik"><b>Rekord został usunięty!</b><br><br><br><a href="ekategoria.php"><img src="img/back2.gif"></a></div>';
  10. }
  11. }


Za wszelką pomoc, bądź wskazówki będę bardzo wdzięczny.
Valker
  1. echo "<a href=\"ekategoria.php?a=del&id={$r['idK']}\"><img src=\"img/del.gif\"></a><a href=\"ekategoria.php?b=edit&id={$r['idK']}\"><img src=\"img/edit.gif\"></a>";
  2. if($a == 'del' and !empty($id))
  3. {
  4. $CategoryID = (int) $id;
  5.  
  6. $zap = mysql_query('SELECT idK FROM www WHERE idK='.$CategoryID);
  7. if(mysql_num_rows($zap) > 0)
  8. {
  9. echo '<div class="erroralert"></div><div class="alercik"><b>Istnieją strony w tej kategorii!<br>Usuń je aby móc usunąć tę kategorie!</b><br><br><a href="ekategoria.php"><img src="img/back2.gif"></a></div>';
  10. }
  11. else
  12. {
  13. mysql_query('DELETE FROM kategoria WHERE idK='.$CategoryID) or die('Błąd zapytania: '.mysql_error());
  14. echo '<div class="erroralert"></div><div class="alercik"><b>Rekord został usunięty!</b><br><br><br><a href="ekategoria.php"><img src="img/back2.gif"></a></div>';
  15. }
  16. }


Spróbuj tak.
Poza tym następnym razem filtruj jakoś dane, które masz od użytkownika, bo inaczej szybko się pozbędziesz danych z bazy ;>
modern-web
1. Wers 2; czytelniejszy zapis (wg mnie):
  1. if($a == 'del' && $id != NULL) {

2. Wers 3; stosuj cudzysłowie...
  1. $zap = mysql_query("SELECT `w.idK`, `k.idK` FROM `www` AS 'w' INNER JOIN `kategoria` AS 'k' ON `k.idK` = 'w.idK' WHERE `w.idK` = 'k.idK'");

3. Wers 8; wywalamy przy okazji obsługę błędów... (zablokuj wyświetlanie błędów z zapytań - patrz `tłumienie błędów`)
  1. mysql_query("DELETE FROM '$tabela' WHERE `idK` = '$id'");


Na pierwszy rzut oka to by było na tyle... Wprowadź poprawki, pokaż powstały kod i będziemy myśleć dalej smile.gif

Edit:
@up pytanie; skąd wiesz, że tego nie robi (filtrowanie danych). przecież błąd nie leży w owym temacie, a skoro nie podał całego kodu to po co mamy rozpatrywać wszystkie przypadki, hm? ...
yoshinobi
Valker: Dziękuję za pomoc, teraz wszystko działa ;]
modern-web: Dziękuje za cenne porady, postaram się stosować.
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.