Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL]zapytanie SQL z dwóch tabel
Forum PHP.pl > Forum > Przedszkole
morarz
Witam,

Jak mogę wykonać zapytanie z dwóch tabel ?

Bo chciałem oprócz danych z tabeli wyświetlić jeszcze obrazek, ale obrazek znajduje się w drugiej tabeli.

Mam tak :

tabela gi_awpcp_ads i gi_awpcp_adphoto

z pierwszej tabeli 'gi_awpcp_ads' wyciągam informację w ten sposób:

  1. <?php
  2. function awpcp_topics() {
  3. $connection = mysql_connect(localhost,"********","********") or die("Baza błąd");
  4. $db = mysql_select_db("**********",$connection) or die("Tabela błąd");
  5. $charset = mysql_client_encoding($connection);
  6. if ( $charset != 'utf8' ) {
  7. mysql_set_charset('utf8',$connection);
  8. }
  9. $sql = "select * from gi_awpcp_ads ORDER BY rand() LIMIT 5";
  10. $result = mysql_query($sql) or die("Zapytanie błąd");
  11.  
  12. for($x=1;$x<=5;$x++){
  13. $row = mysql_fetch_array($result);
  14. $row['ad_title'] = str_replace("ą","ą",$row['ad_title']);
  15. $row['ad_title'] = str_replace("ż","ż",$row['ad_title']);
  16. $row['ad_title'] = str_replace("ł","ł",$row['ad_title']);
  17. $row['ad_title'] = str_replace("ę","ę",$row['ad_title']);
  18. $row['ad_title'] = str_replace("ć","c",$row['ad_title']);
  19. $row['ad_title'] = str_replace("ń","ń",$row['ad_title']);
  20. $row['ad_title'] = str_replace("ź","ź",$row['ad_title']);
  21. $row['ad_title'] = str_replace("ś","ś",$row['ad_title']);
  22. $row['ad_title'] = str_replace("ć","ć",$row['ad_title']);
  23.  
  24. echo "<ul>";
  25. echo "<li><a href = \"http://www.***************/ogloszenia/ogloszenia/$row[ad_id]\"><img src ='http://***************/images/kropka.png'/> $row[ad_title]</a><br></li>";
  26. echo "</ul>";
  27.  
  28. }
  29. }
  30. mysql_close($connection);
  31.  
  32. ?>


I chciałem przed tekstem dodać zdjęcie, tabela gi_awpcp_adphoto wygląda tak, ad_id to numer id ogłoszenia :
key_id-- ad_id-- image_name------ disabled
12------ 7------ 1300574451_0.jpg------ 0


Jak mogę wykonać to zapytanie ? Bo nie wiem jak z dwóch tabel informacje wyciągnąć...
Z góry dzięki za odpowiedz.
ToAr
  1. SELECT a.ad_id, a.ad_title, b.image_name FROM gi_awpcp_ads AS a, gi_awpcp_adphoto AS b WHERE a.ad_id = b.ad_id
morarz
Robię tak i mam błąd zapytanie więc pewnie inaczej to zapytanie musi być wykonane :
  1. $sql = "SELECT a.ad_id, a.ad_title, b.image_name FROM gi_awpcp_ads AS a, gi_awpcp_adphoto AS b WHERE a.ad_id = b.ad_id ORDER BY rand() LIMIT 5";
  2. $result = mysql_query($sql) or die("Zapytanie błąd");
  3.  
  4. for($x=1;$x<=5;$x++){
  5. $row = mysql_fetch_array($result);
  6. echo "<ul>";
  7. echo "<li><a href = "http://www.xxxxxxxxxxxxx/gi/wp-content/uploads/awpcp/$row[ad_id]">$row[image_name]</a><a href = \"http://www.xxxxxxxxxxxx/gi/ogloszenia/ogloszenia/$row[ad_id]\"><img src ='http://xxxxxxxxxxxxx/gi/images/kropka.png'/> $row[ad_title]</a><br></li>";
  8. echo "</ul>";


W echo to pogrubione niebieski dodałem żeby wyświetlić zdjęcie. Wszystkie zdjęcia są w tym folderze awpcp.

Co robię źle ?
nospor
nie: die("Zapytanie błąd")
a: die(mysql_error())
Hpsi
  1. $sql = "SELECT a.ad_id, a.ad_title, b.image_name FROM gi_awpcp_ads AS a LEFT JOIN gi_awpcp_adphoto AS b ON a.ad_id = b.ad_id ORDER BY rand() LIMIT 5";
  2. $result = mysql_query($sql) or die("Zapytanie b??d");
  3.  
  4. while($r = mysql_fetch_array($result) {
  5. echo "<ul>";
  6. echo '<li><a href = "http://www.xxxxxxxxxxxxx/gi/wp-content/uploads/awpcp/'.$r['ad_id'].'">'.$['image_name']</a><a href ="http://www.xxxxxxxxxxxx/gi/ogloszenia/ogloszenia/'.$row['ad_id'].'"><img src ="http://xxxxxxxxxxxxx/gi/images/kropka.png"/>'.$row['ad_title'].'</a><br></li>';
  7. echo "</ul>";}


Zamiast WHERE a.ad_id = b.ad_id ON albo jak ja to zrobiłem USING(ad_id)
matino
Tak na marginesie funkcja str_replace może przyjmować jako drugi i trzeci argument tablicę, więc sugeruję zrobić coś takiego:
  1. ...
  2. $search = array('ą', 'ć', ....);
  3. $replace = array('a', 'c', ....);
  4. $row['ad_title'] = str_replace($search, $replace, $row['ad_title']);
morarz
Żadna z powyższych opcji nie działa.
Ja próbowałem w ten sposób :

  1. $sql = "select * from gi_awpcp_ads ORDER BY rand() LIMIT 5";
  2. $image_sql = "select * from gi_awpcp_adphotos where ad_id = " . $row['ad_id'] . " LIMIT 1";
  3. $Image_result = mysql_query($image_sql);
  4. $image_row = mysql_fetch_array($Image_result);
  5. $result = mysql_query($sql) or die("Zapytanie błąd");
  6.  
  7. for($x=1;$x<=5;$x++){
  8. $row = mysql_fetch_array($result);
  9. echo "<ul>";
  10. echo "<li><img src='http://xxxxxxxxx.xxx/gi/wp-content/uploads/awpcp/' . $image_row['image_name'] ./><a href = \"http://www.xxxxxxx.xxx/gi/ogloszenia/ogloszenia/$row[ad_id]\"><img src ='http://xxxxxxx.xxx/gi/images/kropka.png'/> $row[ad_title]</a><br></li>";
  11. echo "</ul>";


Ale nie działa. Jak mogę przerobić powyższy kod żeby zaczął działać ?

nospor napisał:
  1. nie: die("Zapytanie błąd")


OK jak się uporam z tym to dam tak. A jaka to różnica jest między tym co mam a tym co Ty proponujesz ?
nospor
Cytat
OK jak się uporam z tym to dam tak. A jaka to różnica jest między tym co mam a tym co Ty proponujesz ?

No przecież widać na pierwszy rzut oka.... zamiast nic nie mowiącego "Zapytanie błąd" dostaniesz tekst błędu który już coś będzie mówił.
morarz
Cytat
No przecież widać na pierwszy rzut oka.... zamiast nic nie mowiącego "Zapytanie błąd" dostaniesz tekst błędu który już coś będzie mówił.

A no tak ups smile.gif.

Hej HPSI,

Próbuję przerobić Twój kod żeby u mnie działało, ale nie działa.

Dlaczego używasz apostrofów ? U mnie tak nie działa.

Może to zapytanie jest coś nie tak bo mam błąd taki :

Table 'xxxxxxxxx.gi_awpcp_adphoto' doesn't exist wtf ?
Hpsi
Po pierwsze nie używam apostrofów tylko gravisów smile.gif wyglądają podobnie ale to nie to samo ( ten przycisk znajdziesz w tym samym miejscu co tylde )
gravis: ` -> apostrof ' (jak widać jeśli sie przyjrzysz jest róznica miedzy nimi)
to zrób z gravisem zapytanie a nie w apostrofie to powinno ci odszukac smile.gif
a dlaczego je używam, hmm raczej to jest głownie kwestia przyzwyczajenia smile.gif
morarz
Ok ale wiesz po skopiowaniu tego Twojego kodu ciągle są apostrofy, te gravisy w których miejscach wstawiasz,tylko pomiędzy np: [`ad_id`] ?
  1. echo '<li><a href = "http://www.xxxxxxxxxxxxx/gi/wp-content/uploads/awpcp/'.$r['ad_id'].'">'.$['image_name']</a><a href ="http://www.xxxxxxxxxxxx/gi/ogloszenia/ogloszenia/'.$row['ad_id'].'"><img src ="http://xxxxxxxxxxxxx/gi/images/kropka.png"/>'.$row['ad_title'].'</a><br></li>';
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.