Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SQL][php] Problem z wyciagnieciem z bazy odpowiednich rekordow
Forum PHP.pl > Forum > Przedszkole
Beton2006
Witam wszystkich,mam kolejny - dosc banalny - problem.
Otoz mam dwie tabele:

1.Miasta:
-------------------------------
--id----nazwa_miasta------
--1-----Opole---------------
--2-----Wroclaw------------
--3-----Warszawa----------
--4-----Poznan-------------
------------------------------

2.Pociagi (linie)
---------------------------------------------
--numer------odjazd-----przyjazd------
----1-------------1------------2-----------
----2-------------3------------4-----------
----3-------------1------------3-----------
--------------------------------------------


W tabeli pociagi numery odjazd/przyjazd sa to miasta z tabeli "Miasta".

Chcialbym kolejno wyswietlic: Numer linii,Miasto odjazdu(nazwa nie numer) i miasto przyjazdu(nazwa nie numer). No i mam z tym dosc duzy klopot - nie potrafie sformulowac odpowiedniego zapytania.

Tyle zrobilem jak dotad:
  1. <?php
  2.  
  3.  require ("include/config.inc.php");
  4.  
  5.  echo("<table border='2'><tr><th>Codice linea</th><th>Citta di partenza</th><th>Citta di arrivo</th><th>Posti rimasti</th></tr>");
  6.  
  7.  
  8.  $sql= "SELECT *
  9.  FROM linie AS L,miasta AS M
  10.  WHERE L.odjazd=M.Id";
  11.  $result = mysql_query($sql,$db);
  12.  $result2 = mysql_query($sql2,$db);
  13.  if(!$result){
  14.  echo $sql;
  15.  echo mysql_error($db);
  16.  exit;
  17.  }
  18.  
  19.  while($row = mysql_fetch_assoc($result)) {
  20. echo("<tr><td>".$row['id']."</td><td>".$row['nazwa_miasta']."</td><td>");
  21.  
  22.  }
  23.  
  24.  echo("<tr><td><input type='submit' value='ordina' /></td></tr>");
  25.  echo("</table>");
  26.  
  27. ?>


No i wyswietla kolejno numer linii,nazwa miasta odjazdu ale za cholere nie wiem jak wyswietlic takze NAZWE(nie numer) miasta przyjazdu.
Mam nadzieje,ze wyrazilem sie dosc jasno.....
maryaan
pewnie jest jakis lepszy sposob, ale ja robilem cos takiego, po prostu dopisuje kolejna tabele ze zmieniona "lokalna" nazwa
  1. <?php
  2. $sql= "SELECT *
  3.  FROM linie AS L,miasta AS M, miasta AS M2
  4.  WHERE L.odjazd=M.Id AND L.przyjazd=M2.Id";
  5. ?>


//edit niewlasciwy tag tongue.gif
matlas
  1. SELECT L.id , O.nazwa, P,nazwa
  2. FROM linie AS L INNER JOIN miasta AS O ON L.odjazd=O.Id
  3. INNER JOIN miasta AS P ON L.przyjazd=P.id


powinno byc oki
Beton2006
Ok, dzieki chlopaki ale jak teraz odczytac wynik w moim przypadku z $row questionmark.gif?

Bo query chyba dziala:D

EDIT: query maryana wypisuje np. Opole -> Opole itd. sad.gif
maryaan
  1. <?php
  2. $sql= "SELECT L.numer as numer, M.nazwa_miasta as odjazd, M2.nazwa_miasta as przyj
    azd
  3.  FROM linie AS L,miasta AS M, miasta AS M2
  4.  WHERE L.odjazd=M.Id AND L.przyjazd=M2.Id";
  5. ?>


tylko przy wyswietlaniu zmien nazwa_miasta na odjazd i dodaj przyjazd
Beton2006
chlopaki probuje,probuje i szlak mnie trafia...cos nie dziala.
Wkleje dokladny opis tabel (sa one po Wlosku), moze przez to moglem was zmylic jezeli chodzi o nazwy pol:

1. Tabela "citta" czyli miasta:


codice_citta int(11) No auto_increment kod
desc_citta varchar(100) nazwa


2. Tablea "linee" czyli linie:

codice_linea int(11) No auto_increment kod
posti_rimasti int(11) No 0 nie wazne:)
citta_partenza int(11) No 0 miasto odjazdu
citta_arrivo int(11) No 0 miasto przyjazdu
maryaan
probuj, jesli beda jakies bledy to je tu wklej, nie da rady w ciemno smile.gif
  1. <?php
  2.  
  3.  require ("include/config.inc.php");
  4.  
  5.  echo("<table border='2'><tr><th>Codice linea</th><th>Citta di partenza</th><th>Citta di arrivo</th><th>Posti rimasti</th></tr>"); 
  6.  
  7.  
  8.  $sql= "SELECT L.codice_linea as idLinii, C.desc_citta as miastoStart, C2.desc_citt
    a as miastoKoniec
  9. FROM linee AS L, citta AS C, citta AS C2
  10. WHERE L.citta_partenza = C.codice_citta AND L.citta_arrivo = C2.codice_citta;"
  11.  
  12.  $result = mysql_query($sql,$db);
  13.  $result2 = mysql_query($sql2,$db); 
  14.  if(!$result){
  15.  echo $sql;
  16.  echo mysql_error($db);
  17.  exit;
  18.  }
  19.  
  20.  while($row = mysql_fetch_assoc($result)) {
  21. echo("<tr><td>".$row['idLinii']."</td><td>".$row['miastoStart']."</td><td>".$row['miastoKoniec'].'</td></tr>');
  22.  
  23.  }
  24.  
  25.  echo("<tr><td><input type='submit' value='ordina' /></td></tr>");
  26.  echo("</table>");
  27.  
  28. ?>
Beton2006
Dziaaaaaaaallllaaaaaaaaaaaa, naprawde bardzo mi pomogles (chyba bym nie zasnal jak bym tego do konca nie doprowadzil).

Dzieki wielkie

A jak chcialbym powiedzmy wyswietlic informacje o danej linii ,tzn majac dane miasto powiedzmy chcialbym wyswietlic wszystkie linie ,powiedzmy odjazdy.

Inaczej -> klikam na miasto a wyswietla mi linie "odjazdy" (tzn nazwa wybranego miasta i nazwa miasta przyjazd).

Da sie zrobic cos takiego z poziomu SQL-a?
maryaan
jesli dobrze zrozumialem to chodzi o to:
  1. SELECT L.codice_linea AS idLinii, C.desc_citta AS miastoStart, C2.desc_citta AS miastoKoniec
  2. FROM linee AS L, citta AS C, citta AS C2
  3. WHERE L.citta_partenza = C.codice_citta AND L.citta_arrivo = C2.codice_citta AND L.citta_partenza = id_jakiegos_miasta

po prostu dodajesz warunek, zeby miasto "startowe" bylo okreslonym id, analogicznie mozna zrobic liste przyjazdow do okreslonego miasta, tylko citta_partenza zmienisz na citta_arrivo
Beton2006
Dzieki, maryaan - poprobuje.

EDIT -> OK,dziala ale jest jeden problem. Teraz wyswietla mi np.

( [kod_linii] => 1 [kod_miasta] => 2 [odjazd] => Tokyo [przyjazd] => New York ),

i jest git. Ale co jak np. z Tokyo jest wiecej linii ,np Tokyo=>NewYork,TOkyo=>Warszawa i chce wyswietlic je wszystkie?questionmark.gif

OK, poradzilem sobie.....wielkie dzieki za naprowadzenie
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.