Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL] Pobieranie danych z dwóch róznych tab
Forum PHP.pl > Forum > Przedszkole
Manifested01
mam taki kod wyświetla on dane z tabeli `locations`

  1. <?
  2.         $polaczenie = mysql_connect(DB_HOST,DB_USER,DB_PASS) or die("Nie mogę połączyć się MySQL-em!");
  3.           $baza = mysql_select_db(DB_NAME, $polaczenie) or die("Nie mogę wybrać bazy danych!");
  4.  
  5.           $sql = "SELECT * FROM `locations` WHERE `loc_city`= '$_POST[loc_city]' AND `loc_type`= '$_POST[loc_type]' ";
  6.           $result = mysql_query($sql, $polaczenie)    or die("brak odpowiedzi z zapytania");
  7.           while ($row = mysql_fetch_array($result))
  8.                      {
  9.               $loc_name = $row['loc_name'];
  10.               $loc_id = $row['loc_id'];
  11.  
  12.              
  13.  
  14. echo $loc_name;
  15. echo "<br/>";
  16.  
  17.  
  18. }
  19.  
  20.               ?>


ale potrzebuje też żeby wyświetlił coś z tabelii events pod takim warunkiem

  1. <?php
  2. $sql = "SELECT * FROM `events` WHERE `event_id`= TUTAJ MUSZE JAKOS WSTAWIC loc_id z tego co jest na gorze ";
  3. ?>


Więc prosze kogoś żeby powiedział mi gdzie mam wstawic drugie zapytanie $sql2 i jak edytowac ten warunek na gorze

z góry dziekuje za pomoc
bełdzio
http://dev.mysql.com/doc/refman/4.1/en/join.html
trike
w petli while(), ktora masz juz napisana wloz zapytanie do drugiej tabeli, z tego co rozumiem do kazdego loc_id musisz pobrac cos z events
Manifested01
nic z tego nie wyszło :/

  1. <?php
  2. $sql2 = "SELECT * FROM `events` WHERE `event_id`=$loc_id; ";
  3.           $result2 = mysql_query($sql2, $polaczenie)    or die("brak odpowiedzi z zapytania");
  4.           while ($row2 = mysql_fetch_array($result2))
  5. ?>


musze gdzieś to wstawić a i pewnie
w "`event_id`=$loc_id;" jest błąd
trike
Cytat(Manifested01 @ 14.03.2009, 20:55:11 ) *
nic z tego nie wyszło :/

  1. <?php
  2. $sql2 = &#092;"SELECT * FROM `events` WHERE `event_id`=$loc_id; \";
  3.           $result2 = mysql_query($sql2, $polaczenie)    or die(&#092;"brak odpowiedzi z zapytania\");
  4.           while ($row2 = mysql_fetch_array($result2))
  5. ?>


musze gdzieś to wstawić a i pewnie
w "`event_id`=$loc_id;" jest błąd


sprobuj tak:
event_id = '".$loc_id."'
Manifested01
dzieki trike ale mozesz wstawic ten 2 kod do tego 1 bo jak wstawiałem do pętli while tak jak powiedziales to był error (pewnie wstawiłem zle...)
trike
  1. <?php
  2. $sql = "SELECT * FROM `locations` WHERE `loc_city`= '".$_POST[loc_city]."' AND `loc_type`= '".$_POST[loc_type]."'";
  3. $result = mysql_query($sql)    or die("brak odpowiedzi z zapytania");
  4.       while ($row = mysql_fetch_array($result)){
  5.               $loc_name = $row['loc_name'];
  6.               $loc_id = $row['loc_id'];
  7.          
  8.               $sql2 = "SELECT * FROM `events` WHERE `event_id`='".$loc_id."'";
  9.               $result2 = mysql_query($sql2)    or die("brak odpowiedzi z zapytania");
  10.               //jesli jestes pewny ze bedzie tylko jeden wiersz jako odpowiedz z bazy danych to mozesz dac bez petli
  11.               $row2 = mysql_fetch_array($result2)              
  12.  
  13.               echo $loc_name."<br />";
  14.      }
  15. ?>
Manifested01
  1. <?php
  2.  
  3.  
  4.         $polaczenie = mysql_connect(DB_HOST,DB_USER,DB_PASS) or die("Nie mogę połączyć się MySQL-em!");
  5.           $baza = mysql_select_db(DB_NAME, $polaczenie) or die("Nie mogę wybrać bazy danych!");
  6.          
  7. $sql = "SELECT * FROM `locations` WHERE `loc_city`= '".$_POST[loc_city]."' AND `loc_type`= '".$_POST[loc_type]."'";
  8. $result = mysql_query($sql)    or die("brak odpowiedzi z zapytania");
  9.      while ($row = mysql_fetch_array($result)){
  10.              $loc_name = $row['loc_name'];
  11.              $loc_id = $row['loc_id'];
  12.  
  13.              $sql2 = "SELECT * FROM `events` WHERE `event_id`='".$loc_id."'";
  14.              $result2 = mysql_query($sql2)    or die("brak odpowiedzi z zapytania");
  15.              $row2 = mysql_fetch_array($result2)
  16.              $event_name = $row2['event_name'];
  17.  
  18.              echo $loc_name;
  19.              echo "<br/>";
  20.              echo $event_name;
  21.              echo "<br/>";
  22.  
  23.     }
  24. ?>


Parse error: syntax error, unexpected T_VARIABLE in /home/users/sobolczyk_edp/www/vars.php on line 19

19 to $row = ....
trike
brakuje srednika po $row2 = mysql_fetch_array($result2);
Manifested01
ok dzięki teraz działa tylko jeszcze mam pytanie
  1. <?php
  2. echo $loc_name;
  3.              echo "<br/>";
  4.              echo $event_name;
  5.              echo "<br/>";
  6.  
  7.     }
  8. ?>


$loc_name jest jedno zawsze
ale $even_name moze być kilka a teraz sie wyswietla tylko 1 co mam zrobic zeby sie wyswietlaly wszystkie?
trike
czyli robisz kolejna petle, zamiast $row2 = mysql_fetch_array($result2) wstawiasz:
  1. <?php
  2. while ($row2 = mysql_fetch_array($result2)) {
  3. $event_name = $row2['event_name'];
  4. echo $event_name."<br />";
  5. }
  6. ?>
Manifested01
dzięki wielkie nie wiem co bym bez Ciebie zrobił smile.gif)
mozna zamknąć
zelu
Według mnie pobieranie kolejnych danych z bazy przy każdym kroku pętli jest bez sensu. Jest to bardzo nieoptymalne. W tym przypadku najlepiej skorzystać z JOIN. Wtedy wystarczy tylko jedno zapytanie, a nie tyle ile jest rekordów w bazie. Takie zapytanie powinno wyglądać mniej więcej tak:
  1. <?php
  2. $sql = "SELECT *
  3. FROM `locations`
  4. JOIN `events` ON `locations`.`loc_id` = `events`.`event_id`
  5. WHERE `locations`.`loc_city`= '$_POST[loc_city]' AND `locations`.`loc_type`= '$_POST[loc_type]'; ";
  6. ?>


Do tego odpowiednia pętla while i sprawa załatwiona winksmiley.jpg

Pzdr
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.