Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Przeszukiwanie tablicy z explode
Forum PHP.pl > Forum > Przedszkole
Maciek316
Witam, mam taki problem:
Robie system polubien, cos ala facebook.
Mam komórke w bazie danych gdzie trzymam id uzytkownikow którzy polubili dane zdjecie i jest to zapisywane w formie:
71;21;93;103 (numerki to id uzytkownika)
Potem funkcja explode to rozdzielam:
  1. $polubienia = explode(';',$tablica->polubienia);

Nastepnie zliczam count'em.
Wszystko jest super, ale jak sprawdzic czy dany uzytkownik juz polubil to zdjecie?
Trzeba przeszukac $tablice, tylko w jaki sposob?

PS. Czy obralem w miare dobre rozwiazanie?
nospor
Rozwiazanie jest beznadziejne. Polubienia powinny byc w dodatkowej tabeli z polami
ID_CZEGO_POLUBIL
ID_KTO_POLUBIL
Maciek316
Zrobiłem tak jak jak powiedziales i natrafilem na kolejny blad:
Wyciagam i zliczam polubienia(dziala)
  1. $polubienia = all("select * from polubienia where id_car =".$tablica_zdjecia->id);
  2. if($polubienia) $zlicz = count($polubienia);
  3. else $zlicz = 0;

Nastepnie chce sprawdzic czy juz to polubilem:
  1. function zlajkowane($id, $user)
  2. {
  3. $zlajkowane = query("select * from polubienia where id_car = ".$id." AND id_user = ".$user."") or die("Cannot execute SELECT query.");
  4. if($zlajkowane) echo "Juz to zlajkowales";
  5. zlajkowane($tablica_zdjecia->id,$player->user);
  6. }
  7.  

I nie działa, zapytanie sprawdzalem juz kilka razy i na pewno jest dobre ohmy.gif
nospor
1) Zliczanie liczby rekordow robi sie w mysql poprzez count() a nie w php poprzez pobranie wszystkich rekordow i zliczenie ich liczby :/

2) Zebys jeszcze uraczyl nas kodem query() to by bylo milo. Bo teraz moge jedynie wrozyc:
query() zwraca wynik czy sie zapytanie powiodlo czy nie. A jak nie ma rekordu to zapytanie tez sie powiodlo wiec wynikiem teze jest true, stad niezaleznie czy masz rekord czy nie to zawsze dostajesz true.
Maciek316
query() to zwykle mysql_query:
  1. function query($sql){ mysql_query($sql); }


Czyli jak sprawdzic czy juz dane zdjecie polubilem?
Dziekuje za podpowiedzi :/
nospor
Cytat
Dziekuje za podpowiedzi :/
I po co tam krzywa mina na koncu?

Jak sprawdzic czy twoj wpis juz jest? Albo zliczyc liczbe rekordow z twoim wpisem przez count(), pobrac rekord i sprawdzi te liczbe, albo pobrac pierwszy rekord z twojego zapytania sprawdzajacego. Jak jest rekord, znaczy ze jest twos wpis. Jak nie ma rekordu, znaczy ze nie ma wpisu.
Maciek316
Stosujac sie do drugiej opcji:
  1. $zlajkowane = mysql_query("select * from polubienia where id_car = ".$id." AND id_user = ".$user."") or die("Cannot execute SELECT query."); // nie dziala

to zapytanie nie zwraca mi zadnego rekordu, a jest ich kilka. Kiedy dam echo $id badz $user pokazuje mi dobre dane, w bazie danych sa takie same, wiec teoretycznie echo $zlajkowane['id_car'] powinno cos pokazac, a tu nic.
nospor
Przeciez w tym kodzie nigdzie nie pobierasz rekordu... Ile razy mozna mowic, ze mysql_query jedynie wykonuje zapytanie? Do pobrania rekordu z wykonanego zapytania masz przeciez inne funkcje, ktore notabene juz uzywasz w innych czesciach kodu.
Maciek316
Wlasnie dlatego byla minka :/, nic nie moge zapamietac smile.gif
W kazdym badz razie teraz juz wszystko dziala, wiec temat mozna zamknac.
Dziekuje za pomoc!
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.