Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MYSQL]Wyciągnięcie paru rekordów w jednym
SzymonNegle
post
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 27.12.2008

Ostrzeżenie: (0%)
-----


Mam bazę pracownikow którzy obslugują parę miejscowośi. np. Jan Nowak obsługuje Poznań, Warszawe i Białystok i nie umiem tego pokazac:( Mam taką bazę:

  1. CREATE TABLE PRACOWNIK(
  2. IDPracownika int NOT NULL AUTO_INCREMENT PRIMARY KEY,
  3. Nazwachar(500) NOT NULL
  4. );
  5. CREATE TABLE MIASTA(
  6. IDMiasta int NOT NULL AUTO_INCREMENT PRIMARY KEY,
  7. NazwaMiasta char(50) NOT NULL
  8. );
  9. CREATE TABLE MIASTO_PRACOWNIK (
  10. IDMia_Pra int NOT NULL AUTO_INCREMENT PRIMARY KEY,
  11. MPmiasto int NOT NULL,
  12. MPpracownik int NOT NULL
  13. );


w tabeli MIASTO_PRACOWNIK przechowuje połączenia między pracwonikiem a miastem. Aby to wyświetlic zrobiłem coś takiego:

  1. <?php
  2. $result=@mysql_query("SELECT NazwaPracownika FROM PRACOWNIK ");
  3.  
  4. while ($row = mysql_fetch_array($result)) {
  5.  
  6. echo '<td width="100">' .$row['NazwaPracownika'] . ' </td> ';
  7.  
  8. echo '<td>';
  9. $result_pra=@mysql_query("SELECT MIASTA.NazwaMiasta AS NazwaMiasta FROM MIASTA,  MIASTO_PRACOWNIK WHERE MIASTA.IDMiasta=MIASTO_PRACOWNIK.MPmiasto AND MIASTO_PRACOWNIK.P_Pracownik=3");
  10. while ($row1 = mysql_fetch_array($result_pra)) {
  11. echo ''.row1['NazwaMiasta']).''; 
  12. }
  13. echo '</td>';
  14.  
  15. }
  16. ?>


Każde z zapytań osobno pokazuje wzystko razem. Ale jak chce to połączyc zeby pokazywalo razem to nawet sie nie odpala strona:( A może tam trzeba zrobic jakieś podzapytanie. 

Umiał by to ktoś rozwiązac??
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
skowron-line
post
Post #2





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

Ostrzeżenie: (0%)
-----


@SzymonNegle wywal @ sprzed query i daj sobie echo mysql_error(); i bedziesz wiedział jak błąd się pokaże.
Go to the top of the page
+Quote Post
SzymonNegle
post
Post #3





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 27.12.2008

Ostrzeżenie: (0%)
-----


Dzięki skowron-line. Niestety nic niechce sie ukazac, strona w ogóle niechce sie załadowac, nawet jak zrobie tak jak napisałeś. Natomiast jeśli zakomentuje

//echo ''.row1['NazwaMiasta']).''; 

To i sie wyświetla, ale bez tych miast (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)  
Go to the top of the page
+Quote Post
kefirek
post
Post #4





Grupa: Zarejestrowani
Postów: 781
Pomógł: 256
Dołączył: 29.06.2008

Ostrzeżenie: (0%)
-----


Zobacz tak

  1. <?php
  2. $wynik = mysql_query("SELECT pm.*, m.*, p.* FROM MIASTO_PRACOWNIK pm
  3. LEFT JOIN MIASTA m ON pm.MPmiasto=m.IDMiasta
  4. LEFT JOIN PRACOWNIK p ON pm.IDPracownika=p.MPpracownik");
  5. while($r = mysql_fetch_assoc($wynik)) {
  6. echo "Nazwa pracownika ".$r['Nazwa']." Miasto ".$r['NazwaMiasta']."";  
  7. }
  8. ?>
Go to the top of the page
+Quote Post
SzamanGN
post
Post #5





Grupa: Zarejestrowani
Postów: 94
Pomógł: 14
Dołączył: 11.10.2007

Ostrzeżenie: (0%)
-----


Nie jestem pewien czy to zadziała, ale możesz sprawdzić:

  1. <?php
  2. $result=@mysql_query("SELECT IDPracownika, NazwaPracownika FROM PRACOWNIK");
  3. while ($row = mysql_fetch_array($result))
  4.  {
  5.  echo '<td width="100">'.$row['NazwaPracownika'].'</td>';
  6.  echo '<td>';
  7.  $result_pra=@mysql_query('SELECT MIASTA.NazwaMiasta AS NazwaMiasta FROM MIASTA, MIASTO_PRACOWNIK WHERE MIASTA.IDMiasta=MIASTO_PRACOWNIK.MPmiasto AND MIASTO_PRACOWNIK.MPpracownik='.$row['IDPracownika']);
  8.  while ($row1 = mysql_fetch_array($result_pra))
  9.   {
  10.   echo row1['NazwaMiasta']).'<br>';
  11.   }
  12.  echo '</td>';
  13.  }
  14. ?>





W twoim kodzie PHP w linii 11 masz chyba błąd P_Pracownik powinno być MPpracownik
Go to the top of the page
+Quote Post
skowron-line
post
Post #6





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

Ostrzeżenie: (0%)
-----


Cytat(SzymonNegle @ 28.12.2008, 11:56:55 ) *
Dzięki skowron-line. Niestety nic niechce sie ukazac, strona w ogóle niechce sie załadowac, nawet jak zrobie tak jak napisałeś. Natomiast jeśli zakomentuje

//echo ''.row1['NazwaMiasta']).''; 

To i sie wyświetla, ale bez tych miast (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)  


a ten nawias to od czego to jest (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) Jeżeli pracujesz na serwerze produkcyjnym to on generuje błąd bo sprawidziłem że nie ma otwarcia a błąd się nie wyświetla bo spada do logów.

Ten post edytował skowron-line 28.12.2008, 15:13:02
Go to the top of the page
+Quote Post
SzymonNegle
post
Post #7





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 27.12.2008

Ostrzeżenie: (0%)
-----


Wielkie dzieki chłopaki!! Zrobiłem i dziala:) Jakby ktoś potrzebowal takiego rozwiązania to zapodaje kod:

  1. <?php
  2. $result=@mysql_query("SELECT IDPracownika, Nazwa FROM PRACOWNIK");
  3. while ($row = mysql_fetch_array($result))
  4.  {
  5.  echo '<td width="100"><b>'.$row['Nazwa'].'</b> <br></td>';
  6.  echo '<td>';
  7.  $IDpra = $row['IDPracownika'];
  8.  echo '<br>Zmianna pracownika ta z row ='.$row['IDPracownika'].'<br> natomiast zmienna z solarem równa sie '.$IDpra.'';
  9.  $result_pra=@mysql_query("SELECT MIASTA.NazwaMiasta AS NazwaMiasta 
  10.                            FROM  MIASTA, MIASTO_PRACOWNIK 
  11.                         WHERE MIASTA.IDMiasta=MIASTO_PRACOWNIK.MPmiasto 
  12.                               AND MIASTO_PRACOWNIK.MPpracownik=$IDpra");
  13. while ($row1 = mysql_fetch_array($result_pra))
  14.  {
  15.  echo '<td width="100"><br> - '.$row1['NazwaMiasta'].'<br></td>';
  16.  echo '<td>';
  17. }
  18.  echo '<br><br></td>';
  19. ?>


Wszytko ładnie śmiga i jest wynik taki jaki chciałem. Linie 9 dałem dla wyjaśnienia(mi takie wyświetlanie dużo pomaga więc go nie usuwalem, może nie jest to prof, ale mi jest lepiej to skumac:) ).

Jeszcze raz wielkie dzięki za pomoc!!



A może dalej pomożecie? Jak wyciągnąc wszystkich pracowników obslugujących np miasto Poznań? Dla ułatwienia podaje wypełnioną bazę:

  1. CREATE TABLE PRACOWNIK(
  2. IDPracownika int NOT NULL AUTO_INCREMENT PRIMARY KEY,
  3. Nazwa char(500) NOT NULL
  4. );
  5. CREATE TABLE MIASTA(
  6. IDMiasta int NOT NULL AUTO_INCREMENT PRIMARY KEY,
  7. NazwaMiasta char(50) NOT NULL
  8. );
  9. CREATE TABLE MIASTO_PRACOWNIK (
  10. IDMia_Pra int NOT NULL AUTO_INCREMENT PRIMARY KEY,
  11. MPpracownik int NOT NULL,
  12. MPmiasto int NOT NULL
  13. );
  14. INSERT INTO PRACOWNIK VALUES 
  15.   ('','Kowalski');
  16. INSERT INTO PRACOWNIK VALUES 
  17.   ('','Nowak');
  18. INSERT INTO MIASTA VALUES 
  19.   ('','Poznan');
  20. INSERT INTO MIASTA VALUES 
  21.   ('','Warszawa');
  22. INSERT INTO MIASTA VALUES 
  23.   ('','Katowice');
  24. INSERT INTO MIASTA VALUES 
  25.   ('','Łódź');
  26. INSERT INTO MIASTO_PRACOWNIK VALUES 
  27.   ('','1','1');
  28. INSERT INTO MIASTO_PRACOWNIK VALUES 
  29.   ('','1','2');
  30. INSERT INTO MIASTO_PRACOWNIK VALUES 
  31.   ('','1','3');
  32. INSERT INTO MIASTO_PRACOWNIK VALUES 
  33.   ('','2','1');
  34. INSERT INTO MIASTO_PRACOWNIK VALUES 
  35.   ('','2','3');
  36. INSERT INTO MIASTO_PRACOWNIK VALUES 
  37.   ('','2','4');


Podpowie ktoś(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)  
Go to the top of the page
+Quote Post
kefirek
post
Post #8





Grupa: Zarejestrowani
Postów: 781
Pomógł: 256
Dołączył: 29.06.2008

Ostrzeżenie: (0%)
-----


Cytat(SzymonNegle @ 28.12.2008, 16:37:07 ) *
A może dalej pomożecie? Jak wyciągnąc wszystkich pracowników obslugujących np miasto Poznań? Dla ułatwienia podaje wypełnioną bazę:


  1. SELECT u.*, p.* FROM MIASTO_PRACOWNIK p LEFT JOIN PRACOWNIK u ON p.MPpracownik=u.IDPracownika WHERE MPmiasto='1';
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 04:27