Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] zerowy wynik zapytania...
Forum PHP.pl > Forum > Bazy danych > MySQL
detter
Witam!
Na wstepie bardzo przepraszam za (prawdopodobnie) glupie i proste pytanie, ale jestem poczatkujacy co do MySQLa, a prawde mowiac to nie wiele znalazlem na forum, wiec pisze..

Moj problem wyglada w ten sposob:

Mam relacje na 2 tabelach: uzytkownicy i zdjecia.

Z tabeli uzytkownicy pobierane jest pare info, miedzy innymi $id_usera.
Nastepnie na podstawie $id_usera wybieram z tabeli 'zdjecia' konkretny wiersz.

A teraz chcialbym aby jesli w tabeli zdjecia nie bedzie zadnego wiersza zawierajacego id usera, to zeby wykonac inna instrukcje niz by taki wiersz byl....

struktura tabeli 'zdjecia' wyglada tak:

[0] - id_zdjecia
[1] - id_usera
[2] - nazwa_pliku

a oto kod, ktory wykorzystuje:

  1. $zapytanie = "SELECT * FROM uzytkownicy ORDER BY data_rejestracji DESC LIMIT 5";
  2. $dzialaj=mysql_query($zapytanie);
  3. while ($pole = mysql_fetch_row($dzialaj))
  4. {
  5. print "<tr><TD valign=top width=120>";
  6. print "<div align=right><a href=strona_usera.php?id=$pole[0]><B>$pole[1]</B></a><br>";
  7. print "$pole[6]<br>";
  8. $wiek = $data_dzis - $pole[8];
  9. print "$wiek lat<br>";
  10. print "$pole[9]<br>";
  11. print "$pole[10]<br>";
  12. $id_foto = $pole[0];
  13. print "</td><td>";
  14.  
  15. $zapytani = "SELECT * FROM `zdjecia` WHERE `id_usera` = '$id_foto' LIMIT 1";
  16. $dziala=mysql_query($zapytani);
  17. while ($pole = mysql_fetch_row($dziala))
  18. {
  19. print "<img src=foto/$pole[2] width=110>";
  20. };
  21. print "</td></tr><tr height=20></tr>";
  22. };



Ma ktos jakis pomysl?

PS. Mam nadzieje ze nie zagmatwalem za bardzo biggrin.gif
PS2. wiem ze kod ten nie jest za bardzo poprawny i moze jest dosc "łopatologiczny" ale
jak wczesniej pisalem - jestem poczatkujacy...


No moze sprobuje to teoche bardziej wyjasnic:
Jesli mamy usera z tabeli 'uzytkownicy', to szukamy po jego ID w tabeli 'zdjecia' odpowiedniego wpisu.
Jesli takowy jest - wczytujemy go (i do tad udalo mi sie to zrobic)
Jesli natomiast takiego wpisu nie ma w tabeli 'zdjecia', to zamiast robic:
"
{
print "<img src=foto/$pole[2] width=110>";
};
"

to zeby zrobic cos takiego:

"
{
print "<img src=foto/brak.jpg width=110>";
};
"



mam nadzieje ze nie poplatalem jeszcze bardziej smile.gif

Jeszcze probuje mniej wiecej w ten sposob...

  1. $zapytani = "SELECT * FROM `zdjecia` WHERE `id_usera` = '$id_foto' LIMIT 1";
  2. $dziala=mysql_query($zapytani);
  3. while ($pole = mysql_fetch_row($dziala))
  4. {
  5. IF ($select == 'true'){ print "<img src=foto/$pole[2] width=110>"; }
  6. else { print "<img src=foto/brak.jpg width=110>"; }
  7. };
  8. print "</td></tr><tr height=20></tr>";
  9. };


Ale chyba troche przekombinowalem... :/

Chociaz moze troche Wam to rozjasni sprawe....
alex19
No to najpierw sprawdz czy jest takei zdjecie czy go nie ma:
  1. SELECT count(id_usera) FROM `zdjecia` WHERE `id_usera` = '$id_foto'

i teraz sprawdzasz czy bylo wieksze niz 0
  1. <?php
  2. $ilosc = mysql_fetch_assoc(mysql_query($zapytanie));
  3. if($ilosc['count(id_usera)'] > 0){
  4. $dziala=mysql_query("SELECT * FROM zdjecia WHERE id_usera = $id_foto LIMIT 1");
  5. $pole = mysql_fetch_assoc($dziala);
  6. echo "<img src="$pole[2]" width="110">";
  7. }
  8. else {
  9. print "<img src=foto/brak.jpg width=110>";
  10. }
  11. ?>
babejsza
mysql_num_rows" title="Zobacz w manualu php" target="_manual

czyli

  1. <?php
  2. if (mysql_num_rows($query) > 0){
  3.  ...
  4. }
  5. ?>
detter
hmmm..... troszke nie lapie.... :/
Chyba jestem jeszcze troche za ciemny... ale probowalem wkleic te kody w reszte, i same errory mi wywalalo...

Mogl by ktos to wkomponowac w to:

  1. $zapytani = "SELECT * FROM `zdjecia` WHERE `id_usera` = '$id_foto' LIMIT 1";
  2. $dziala=mysql_query($zapytani);
  3. while ($pole = mysql_fetch_row($dziala))
  4. {
  5. print "<img src=foto/brak.jpg width=110>"
  6. }
  7. };


Bo prawde mowiac to nie ogarniam tak skomplikowanych spraw...
thornag
Najprosciej bedzie z mysql_num_rows no i nie trzeba dwoch zapytan jak w przykladzie pierwszym

  1. <? $result = mysql_query(SELECT * FROM `zdjecia` WHERE `id_usera` = '$id_foto' LIMIT 1);
  2.  if(mysql_num_rows($result) == 0) {
  3.  echo ""<img src=foto/brak.jpg width=110>"";
  4.  } else {
  5.  echo "<img src=foto/".mysql_result($result,0, __NAZWA__POLA__W_TABELI)." width=110>";
  6.  }
  7. ?>
detter
Dziala zajebiscie smile.gif
wystarczylo ze select wsadzilem w cudzyslow i poprawilem codzyslow w echo... biggrin.gif

Bardzo wielkie dzieki!!!
Po raz kolejny (i zapewne nie ostatni smile.gif ) pomogliscie mi bardzo!!

Jeszcze raz dzieki i pozdrawiam!
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.