Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] [mysql] Problem z wykonaniem zapytania i wyświetleniem danych
Forum PHP.pl > Forum > Przedszkole
pioch
witam
czy mógłby ktoś spojrzeć fachowym okiem na moje zapytanie i powiedziec/wytłumaczyć gdzie jest bład

  1. <?php
  2.  
  3. $nazwabazydanych = "serwis_oe";
  4.  
  5. $link = mysql_connect("localhost", "root", "krasnal")
  6. or die("BَD: nie można się połączyć z serverem mySQL");
  7.  
  8. $result = mysql_select_db ($nazwabazydanych);
  9. sprawdz_czy_nie_bylo_bledu($result, __LINE__);
  10.  
  11. $query = '
  12.  
  13. SELECT
  14.  m.id, k1.nazwa, k2.nazwa
  15. FROM
  16. mecz as m, druzyny as k1, druzyny as k2
  17. WHERE
  18.  '.(!empty($_GET['id']) ? ('m.id='.((int)$_GET['id']).' AND ') : '') .'
  19. k1.id = m.gospodarz AND
  20. k2.id = m.przeciwnik 
  21. ORDER BY
  22. m.id, k1.nazwa, k2.nazwa
  23.  
  24. ';
  25.  
  26.  
  27.  
  28.  
  29.  
  30. $result = mysql_query($query);
  31. sprawdz_czy_nie_bylo_bledu($result, __LINE__);
  32.  
  33. while ($row = mysql_fetch_array($result)) {
  34.  
  35. $meczid  = $row[0]; 
  36. $gospodarz = $row[1];
  37. $przeciwnik = $row[2];
  38.  
  39. echo " $gospodarz - $przeciwnik ";
  40.  
  41.  
  42. $query2 = '
  43.  
  44. SELECT
  45. imie, nazwisko, rodzaj
  46. FROM
  47. sklady, pilkarze
  48. WHERE
  49.  
  50. sklady.meczid="$meczid" AND
  51.  sklady.klubid = "$gospodarz" AND
  52. pilkarze.id = sklady.pilkarzid AND
  53. (sklady.rodzaj = "P" OR sklady.rodzaj = "Z")
  54.  
  55. ';
  56.  
  57. $result2 = mysql_query($query2);
  58. sprawdz_czy_nie_bylo_bledu($result2, __LINE__);
  59.  
  60. echo '<TABLE border="1">' .
  61.  '<TR><TD><STRONG>Imię</STRONG></TD>' .
  62.  '<TD><STRONG>Nazwisko</STRONG></TD>' .
  63.  '<TD><STRONG>Rodzaj</STRONG></TD></TR>';
  64.  
  65. while ($row2 = mysql_fetch_array($result2)) {
  66.  
  67. $imie = $row2['imie'];
  68. $nazwisko = $row2['nazwisko'];
  69. $rodzaj = $row2['rodzaj'];
  70.  
  71. echo "<TR><TD>$imie</TD>";
  72. echo "<TD>$nazwisko</TD>";
  73. echo "<TD>$rodzaj</TD></TR>";
  74. }
  75. echo '</TABLE>';
  76. }
  77.  
  78.  
  79.  
  80. ?>


Dlaczego mi nie pobiera z tabeli sklady imienia, nazwiska i rodzaj , powstaje pusta tabela?
Gdzie jest błąd
legorek
Poczytaj o różnicy między ' (apostrof) a " (cudzysłów) i będziesz wiedział jaki masz błąd w $query2.
pioch
poproawiłem nawiasy i nadal nie działa , nie wyświetla żadnego błedu....
pojawia sie tylko tabela Imię Nazwisko Rodzaj i nie ma graczy z tabeli sklady ...

prosze o pomoc
Balas
w query2 popraw:

"$meczid"

na

"'.$meczid.'"


i analogicznie do reszty smile.gif
pioch
  1. <?php
  2. $query2 = '
  3.  
  4. SELECT
  5. imie, nazwisko, rodzaj
  6. FROM
  7. sklady, pilkarze
  8. WHERE
  9.  
  10. sklady.meczid="'.$meczid.'" AND
  11.  sklady.klubid = "'.$gospodarz.'" AND
  12. pilkarze.id = sklady.pilkarzid AND
  13. (sklady.rodzaj = "P" OR sklady.rodzaj = "Z")
  14.  
  15. ';
  16. ?>


poproawiłem i dalej nie wyświetla graczy ( składu) , nie wiem w czym jest rzecz. Mecz pokazuje ale b ez składów...

Prosze o pomoc
skowron-line
  1. <?php
  2. while ($row = mysql_fetch_array($result)) {
  3.  
  4. $meczid  = $row[0]; 
  5. $gospodarz = $row[1];
  6. $przeciwnik = $row[2];
  7. ?>


zmien $row[0] na odpowiadajace pola w tabeli
pioch
Gdy zmieniłem
  1. <?php
  2. while ($row = mysql_fetch_array($result)) {
  3.  
  4. $meczid  = $row['m.id']; 
  5. $gospodarz = $row['k1.nazwa'];
  6. $przeciwnik = $row['k2.nazwa'];
  7.  
  8. echo " $meczid = $gospodarz - $przeciwnik ";
  9. ?>


to przestało działać wszystko ....
wipo
pioch poczytaj dokładnie jak to powinno wyglądać

nie $row['m.id'] tylko $row['id']
nazwy tabel są tylko widoczne dla sql-a - no chyba że sam nazwiesz tak pole
Jak masz kilka pól id to wywołaj to tak SELECT m.id as id_meczu, itd.....
i potem $row['id_meczu'];
pioch
problem pojawia sie z
  1. <?php
  2. $gospodarz = $row[1];
  3. $przeciwnik = $row[2;
  4. ?>


ponieważ są w jednej tabeli dryzyny.... mają te same id , dlatego
  1. <?php
  2. $query = '
  3. SELECT
  4.  m.id, k1.nazwa, k2.nazwa
  5. FROM
  6. mecz as m, druzyny as k1, druzyny as k2
  7. WHERE
  8.  '.(!empty($_GET['id']) ? ('m.id='.((int)$_GET['id']).' AND ') : '') .'
  9. k1.id = m.gospodarz AND
  10. k2.id = m.przeciwnik 
  11. ORDER BY
  12. m.id, k1.nazwa, k2.nazwa
  13.  
  14. ';
  15. ?>

myślałem ze sprawa się rozwiąze poprzez te zapytanie...


Oczywiście ze tak się stało, pobiera kazdej druzyny osobno id i moge wyświetlić sobie poprzez $_GET id meczu, druzyny sie zmieniają prawidłowo....

Ale dlaczego te zapytanie nie chce pobrac mi iddruzyny= $gospodarz

  1. <?php
  2. $query2 = '
  3.  
  4. SELECT
  5. imie, nazwisko, rodzaj
  6. FROM
  7. sklady, pilkarze
  8. WHERE
  9.  
  10. sklady.meczid="$meczid" AND
  11.  sklady.klubid = "$gospodarz" AND
  12. pilkarze.id = sklady.pilkarzid AND
  13. (sklady.rodzaj = "P" OR sklady.rodzaj = "Z")
  14.  
  15. ';
  16.  
  17. $result2 = mysql_query($query2);
  18. sprawdz_czy_nie_bylo_bledu($result2, __LINE__);
  19. ?>


sam juz nie wiem..... Może mi ktoś to wytłumaczy , pomoże aby nie robić prostych błędów echss
wipo
  1. SELECT
  2. m.id, k1.nazwa AS nazwa1, k2.nazwa AS nazwa2
  3. FROM mecz AS m, druzyny AS k1, druzyny AS k2
  4. WHERE '.(!empty($_GET['id']) ? ('m.id='.((int)$_GET['id']).' AND ') : '') .'
  5. k1.id = m.gospodarz AND k2.id = m.przeciwnik
  6. ORDER BY m.id, k1.nazwa, k2.nazwa
  7. ';


a wyświetlach $row['nazwa1'] lub $row['nazwa2']
pioch
  1. <?php
  2. $query = '
  3.  
  4. SELECT
  5. m.id, k1.nazwa as nazwa1, k2.nazwa as nazwa2
  6. FROM mecz as m, druzyny as k1, druzyny as k2
  7. WHERE '.(!empty($_GET['id']) ? ('m.id='.((int)$_GET['id']).' AND ') : '') .'
  8. k1.id = m.gospodarz AND k2.id = m.przeciwnik
  9. ORDER BY m.id, k1.nazwa, k2.nazwa
  10.  
  11. ';
  12.  
  13.  
  14.  
  15.  
  16.  
  17. $result = mysql_query($query);
  18. sprawdz_czy_nie_bylo_bledu($result, __LINE__);
  19.  
  20.  
  21. while ($row = mysql_fetch_array($result)) {
  22.  
  23. $meczid = $row['id'];
  24. $gospodarz = $row['nazwa1'];
  25. $przeciwnik = $row['nazwa2'];
  26.  
  27.  
  28. echo " $meczid $gospodarz - $przeciwnik ";
  29.  
  30. $query2 = '
  31.  
  32. SELECT
  33. imie, nazwisko, rodzaj
  34. FROM
  35. sklady, pilkarze
  36. WHERE
  37.  
  38. sklady.meczid="$meczid" AND
  39. sklady.klubid ="$gospodarz" AND
  40. pilkarze.id = sklady.pilkarzid 
  41.  
  42. ';
  43.  
  44. $result2 = mysql_query($query2);
  45. sprawdz_czy_nie_bylo_bledu($result2, __LINE__);
  46.  
  47. echo '<TABLE border="1">' .
  48.  '<TR><TD><STRONG>Imię</STRONG></TD>' .
  49.  '<TD><STRONG>Nazwisko</STRONG></TD>' .
  50.  '<TD><STRONG>Rodzaj</STRONG></TD></TR>';
  51.  
  52. while ($row2 = mysql_fetch_array($result2)) {
  53.  
  54. $imie = $row2['imie'];
  55. $nazwisko = $row2['nazwisko'];
  56. $rodzaj = $row2['rodzaj'];
  57.  
  58. echo "<TR><TD>$imie</TD>";
  59. echo "<TD>$nazwisko</TD>";
  60. echo "<TD>$rodzaj</TD></TR>";
  61. }
  62. echo '</TABLE>';
  63. }
  64. ?>


wipo nic nie pomogło , dalej to samo

prawidłowo wyświetla id meczu , gospodarz i przeciwnika oraz początek tabeli mianowicie
imie nazwisko rodzaj

nie wiem dlaczego nie działa....

dodam ze pod $gospodarz i $przeciwnik kryje się id druzyny
wipo
A przetestuj to pokolei
Najpierw zobacz czy $row się poprawnie wyświetla. Dopiero potem rób kolejne zapytania
pioch
wiem , tak robie

wszystko sie prawidłowo wyświetla do 2 zapytania

wyglada tak jakby nie pobierało id meczu , oraz id druzyny
wipo
Ale ty nie pobiersz id meczy ani id drużyny
pioch
hmm

pobieram
tabeli mecz mam id(meczu) , gospodarz ( id druzyny ) , przeciwnik ( id druzyny )
tabela druzyna id, nazwa


czy moze inaczej to trzeba pobrać , sam juz nie wiem....

coś jest nie tak z tym drugim zapytaniem
prosze o pomoc bo sam juz nie wiem....co jest źle
wipo
W podanym ptrzykładzie pobierasz tylko ich nazwy, dopisz też ID i bedzie działać
pioch
  1. <?php
  2. $query = '
  3.  
  4. SELECT
  5. m.id, k1.nazwa as nazwa1, k2.nazwa as nazwa2, k1.id as id1, k2.id as id2
  6. FROM mecz as m, druzyny as k1, druzyny as k2
  7. WHERE '.(!empty($_GET['id']) ? ('m.id='.((int)$_GET['id']).' AND ') : '') .'
  8. k1.id = m.gospodarz AND k2.id = m.przeciwnik
  9. ORDER BY m.id, k1.nazwa, k2.nazwa
  10.  
  11. ';
  12.  
  13.  
  14.  
  15.  
  16.  
  17. $result = mysql_query($query);
  18. sprawdz_czy_nie_bylo_bledu($result, __LINE__);
  19.  
  20. //przetwarzamy kolejne mecze
  21. while ($row = mysql_fetch_array($result)) {
  22.  
  23. $meczid = $row['id'];
  24. $gospodarz = $row['nazwa1'];
  25. $przeciwnik = $row['nazwa2'];
  26.  $gospodarzid = $row['id1'];
  27. $przeciwnikid = $row['id2'];
  28.  
  29.  
  30. echo " $meczid $gospodarz ($gospodarzid ) - $przeciwnik ($przeciwnikid ) ";
  31.  
  32. //ustalamy piłkarzy, którzy są z zadanej drużyny i grali w zadanym meczu
  33. $query2 = '
  34.  
  35. SELECT
  36. imie, nazwisko, rodzaj
  37. FROM
  38. sklady, pilkarze
  39. WHERE
  40.  
  41. sklady.meczid="$meczid" AND
  42. sklady.klubid ="$gospodarzid" AND
  43. pilkarze.id = sklady.pilkarzid 
  44.  
  45. ';
  46. ?>


dalej nie działa
może większa podpowiedz.. święta idą smile.gif
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.