Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]Problem z kodem
Forum PHP.pl > Forum > Przedszkole
Loped
Witam. O to mój kod:

  1. <?php
  2. $id=intval($_GET["usun"]);
  3. $odbiorca = $user->id;  
  4.  
  5. if($_GET["usun"]){
  6.  
  7. if (usun_list($id, $odbiorca)) {
  8.          echo 'Usunięto.<br />';
  9.        }else{
  10.          echo 'Nie udało się.<br />';
  11.      }  
  12. }
  13. ?>


I funkcja usuń_list();

  1. <?php
  2. function usun_list($id, $odbiorca)
  3. {
  4.    $lacz = lacz_bd();
  5.  if (!$lacz->query("delete from wiadomosci
  6.                     where wiad_id='$id' and wiad_do='$odbiorca' and wiad_czyj=0"))
  7.    throw new Exception('Usunięcie listu nie powiodło się.');
  8. return true;  
  9. }
  10. ?>


Wiadomość usuwa się dobrze jeśli jest to odbiorca listu. Jednak kiedy w linku wpisze np. ?usun=1 (nie mój list) to listu nie usuwa ale pisze "usunięto wiadomość".
Fifi209
Jeżeli rzucasz wyjątkami to musisz je łapać. winksmiley.jpg

Poczytaj o blokach try {}catch() {}
Loped
A no tak.. zapomniałem tongue.gif Dałem teraz tak:

  1. <?php
  2. try
  3.   {
  4. if($_GET["usun"]){
  5.  
  6.  
  7. if (usun_list($id, $odbiorca)) {
  8.          echo 'Usunięto.<br />';
  9.        }else{
  10.          echo 'Nie udało się.<br />';
  11.      }  
  12. }
  13. }
  14. catch (Exception $e)
  15.   {
  16.     echo $e->getMessage();
  17.     exit;
  18.   }
  19. ?>


i nadal piszę "usunięto"
Fifi209
usun_list zwraca true lub rzuca wyjątek...

Więc spróbuj tu if (usun_list($id, $odbiorca)) dać == true winksmiley.jpg
Loped
  1. <?php
  2. if (usun_list($id, $odbiorca) == TRUE) {
  3.         echo 'Usunięto.<br />';
  4.       }else{
  5.         echo 'Nie udało się.<br />';
  6.     }
  7. ?>


Niestety nadal pisze usunięto.
Fifi209
Spróbuj zamiast rzucania wyjątku zwrócić po prostu false...
Loped
Ale jeśli np. dam:

  1. <?php
  2. if (strlen($id)<4)
  3.     {
  4.        throw new Exception('Podaj 4 znaki!');
  5.     }
  6. ?>


To wszytko ładnie się wyświetla i jak dam co najmniej 4 znaki to wyjątku nie ma ;P Popróbuje jeszcze z tym... może wyjdzie.
michaJlS
Cytat(Loped @ 30.07.2009, 15:51:55 ) *
Witam. O to mój kod:

  1. <?php
  2. $odbiorca = $user->id;  
  3. /* ... */
  4. if (usun_list($id, $odbiorca))  
  5. /* ... */
  6. ?>


I funkcja usuń_list();

  1. <?php
  2. function usun_list($id, $odbiorca)
  3. {
  4. /* ... */
  5. $lacz->query("delete from wiadomosci
  6.                     where wiad_id='$id' and wiad_do='$odbiorca' and wiad_czyj=0"))
  7. /* ... */
  8. ?>


Wiadomość usuwa się dobrze jeśli jest to odbiorca listu. Jednak kiedy w linku wpisze np. ?usun=1 (nie mój list) to listu nie usuwa ale pisze "usunięto wiadomość".


Przecież w usuń_list() podajesz odbiorcę, który przy usuwaniu jest sprawdzany. Więc jeśli usuwasz nie swój list to zamiast $odbiorca = $user->id; z początku kodów musisz wpisać coś innego. (zakładam, że $user to przeglądający witrynę).
Loped
$user->id; To id zalogowanego usera. I jeśli nie jestem odbiorcą czyli np. moje id: 1 to nie mogę usunąć i tak się dzieje, problem w tym, ze i tak wyswietla 'usunięto' zamiast 'nie udało sie'
michaJlS
Cytat(Loped @ 30.07.2009, 16:36:40 ) *
$user->id; To id zalogowanego usera. I jeśli nie jestem odbiorcą czyli np. moje id: 1 to nie mogę usunąć i tak się dzieje, problem w tym, ze i tak wyswietla 'usunięto' zamiast 'nie udało sie'

Połączenie z bazą jest w porządku, zapytanie jest poprawne i się wykonuje prawidłowo, więc query zwraca true (czy coś w tym stylu) - bo nic innego nie może. Musiałbyś sprawdzić liczbę przetworzonych wierszy, żeby wykryć "błąd".
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.