Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wyświetlenie określonej liczby rekordów
Forum PHP.pl > Forum > Przedszkole
damiandamian

Pytanie jak sprawić żeby wyświetlało wyniki dla tylu rekordów ile odnalazło polecenie SELECT ,bo kopiowanie20 razy <tr></tr> ma sensu i napewno jest jakiś prostszy sposób np pętla tylko nie wiem jak tego użyć . Jeśli jest jakiś prostszy sposób wyświetlenia wszystkich odnalezionych rekordów w tabeli byłbym wdzięczny



  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  2. <html>
  3. <head>
  4. <title>Serwis ABC</title>
  5. <meta http-equiv=content-type content="text/html; charset=iso-8859-2">
  6. <meta http-equiv="Content-Language" content="pl">
  7. </head>
  8.  
  9. <body>
  10. <?php
  11.  
  12.  
  13. require_once "connect.php" ;
  14.  
  15. $polaczenie = @new mysqli($host, $db_user, $db_password, $db_name);
  16.  
  17. if ($polaczenie->connect_errno!=0)
  18. {
  19. echo "ERROR";
  20. }
  21. else
  22. {
  23.  
  24. $sql= "SELECT uczniowie.iducznia, uczniowie.user, uczniowie.nr, oceny.biologia, oceny.polski, oceny.wf, oceny.fizyka, oceny.angielski, oceny.historia, oceny.religia, oceny.technika, oceny.niemiecki, oceny.chemia, oceny.informatyka, oceny.geografia, oceny.plastyka, oceny.matematyka FROM uczniowie, oceny WHERE klasa='1a' AND uczniowie.iducznia = oceny.iducznia ORDER BY uczniowie.nr ASC" ;
  25.  
  26.  
  27. if ($rezultat = @$polaczenie->query($sql))
  28. {
  29. $wiersz = $rezultat->fetch_assoc();
  30. $id = $wiersz['iducznia'];
  31. $nr = $wiersz['nr'];
  32. $polski = $wiersz ['polski'];
  33. $matematyka = $wiersz['matematyka'];
  34. $wf = $wiersz['wf'];
  35. $fizyka = $wiersz['fizyka'];
  36. $angielski = $wiersz['angielski'];
  37. $historia = $wiersz['historia'];
  38. $religia = $wiersz['religia'];
  39. $technika = $wiersz['technika'];
  40. $niemiecki = $wiersz['niemiecki'];
  41. $chemia = $wiersz['chemia'];
  42. $informatyka = $wiersz['informatyka'];
  43. $geografia = $wiersz['geografia'];
  44. $plastyka = $wiersz['plastyka'];
  45.  
  46.  
  47.  
  48. echo "<p>";
  49. echo "<table boder=\"1\"><tr>";
  50.  
  51.  
  52.  
  53. echo "<td bgcolor=\"ffff99\"><strong>id</strong></td>";
  54. echo "<td bgcolor=\"ffff99\"><strong>nr</strong></td>";
  55. echo "<td bgcolor=\"ffff99\"><strong>POLSKI</strong></td>";
  56. echo "<td bgcolor=\"ffff99\"><strong>Matematyka</strong></td>";
  57. echo "<td bgcolor=\"ffff99\"><strong>WF</strong></td>";
  58. echo "<td bgcolor=\"ffff99\"><strong>Fizyka</strong></td>";
  59. echo "<td bgcolor=\"ffff99\"><strong>Angielski</strong></td>";
  60. echo "<td bgcolor=\"ffff99\"><strong>Historia</strong></td>";
  61. echo "<td bgcolor=\"ffff99\"><strong>Religia</strong></td>";
  62. echo "<td bgcolor=\"ffff99\"><strong>Technika</strong></td>";
  63. echo "<td bgcolor=\"ffff99\"><strong>Niemiecki</strong></td>";
  64. echo "<td bgcolor=\"ffff99\"><strong>Chemia</strong></td>";
  65. echo "<td bgcolor=\"ffff99\"><strong>Informatyka</strong></td>";
  66. echo "<td bgcolor=\"ffff99\"><strong>Geografia</strong></td>";
  67. echo "<td bgcolor=\"ffff99\"><strong>Plastyka</strong></td>";
  68.  
  69. echo "</tr>";
  70.  
  71.  
  72.  
  73.  
  74.  
  75. echo "</tr> <tr>";
  76.  
  77. echo "<td bgcolor=\"ffff00\">" . $id . "</td>";
  78. echo "<td bgcolor=\"ffff00\">" . $nr . "</td>";
  79. echo "<td bgcolor=\"ffff00\">" . $polski . "</td>";
  80. echo "<td bgcolor=\"ffff00\">" . $matematyka . "</td>";
  81. echo "<td bgcolor=\"ffff00\">" . $wf . "</td>";
  82. echo "<td bgcolor=\"ffff00\">" . $fizyka . "</td>";
  83. echo "<td bgcolor=\"ffff00\">" . $angielski . "</td>";
  84. echo "<td bgcolor=\"ffff00\">" . $historia . "</td>";
  85. echo "<td bgcolor=\"ffff00\">" . $religia . "</td>";
  86. echo "<td bgcolor=\"ffff00\">" . $technika . "</td>";
  87. echo "<td bgcolor=\"ffff00\">" . $niemiecki . "</td>";
  88. echo "<td bgcolor=\"ffff00\">" . $chemia . "</td>";
  89. echo "<td bgcolor=\"ffff00\">" . $informatyka . "</td>";
  90. echo "<td bgcolor=\"ffff00\">" . $geografia . "</td>";
  91. echo "<td bgcolor=\"ffff00\">" . $plastyka . "</td>";
  92.  
  93. echo "</table>";
  94.  
  95.  
  96.  
  97.  
  98.  
  99. $rezultat->free_result();
  100.  
  101.  
  102. }
  103. }
  104. ?>
  105. </body>
  106. </html>
Kshyhoo
Przenoszę.
viking
query zwraca http://php.net/manual/en/class.mysqli-result.php na którym z kolei możesz wykonać http://php.net/manual/en/mysqli-result.fetch-assoc.php a ten dane, które możesz iterować dowolną pętlą jak w dokumentacji.

Bez sensu jest tabela oceny.
damiandamian
Niewiele z tego rozumiem . Potrzebuję kawałek kodu który wyświetli wszystkie odnalezione rekordy w formie takiej właśnie tabeli .

  1. while ($row = mysqli_fetch_assoc($result)) {
  2. printf ("%s (%s)\n", $row["id"], $row["nr"]);
  3. }


id oraz numer wczytuje tablica asocjacyjna lecz nic się nie pojawia
Chodzi Ci o to żeby zamiast 2 tabel stworzyć 1 uczniowie i w nich dodać oceny ?
kapslokk
  1. while ($row = $result->fetch_assoc()) {

Tam gdzie result wstawiasz wynik $polaczenie->query($sql) czyli $rezultat.
W środku petli wstawiasz

  1. echo "<tr>";
  2. echo "<td bgcolor=\"ffff00\">" . $id . "</td>";
  3. echo "<td bgcolor=\"ffff00\">" . $nr . "</td>";
  4. echo "<td bgcolor=\"ffff00\">" . $polski . "</td>";
  5. echo "<td bgcolor=\"ffff00\">" . $matematyka . "</td>";
  6. echo "<td bgcolor=\"ffff00\">" . $wf . "</td>";
  7. echo "<td bgcolor=\"ffff00\">" . $fizyka . "</td>";
  8. echo "<td bgcolor=\"ffff00\">" . $angielski . "</td>";
  9. echo "<td bgcolor=\"ffff00\">" . $historia . "</td>";
  10. echo "<td bgcolor=\"ffff00\">" . $religia . "</td>";
  11. echo "<td bgcolor=\"ffff00\">" . $technika . "</td>";
  12. echo "<td bgcolor=\"ffff00\">" . $niemiecki . "</td>";
  13. echo "<td bgcolor=\"ffff00\">" . $chemia . "</td>";
  14. echo "<td bgcolor=\"ffff00\">" . $informatyka . "</td>";
  15. echo "<td bgcolor=\"ffff00\">" . $geografia . "</td>";
  16. echo "<td bgcolor=\"ffff00\">" . $plastyka . "</td>";
  17. echo "</tr>";

i zamieniasz $id na $row['id'] itd.

i tak jak napisal @viking - tabela oceny jest bez sensu. Powinna wygladac tak:
id_ucznia | przedmiot | ocena

damiandamian
Jeżeli zrobię tabele oceny id_ucznia | przedmiot | ocena to wydaje mi się że będe mógł każdemu uczniowi dodać tylko 1 przedmiot i tylko 1 ocene . Do tego mam zamiar dodać formularz dodający oceny każdemu uczniowi danej klasy i danego przedmiotu :/ Za chwilę dam znać czy Twój kod zadziała smile.gif
viking
Masz tabele http://sqlfiddle.com/#!9/5c52c7/3

Tabele powinny być typu InnoDb i zawierać klucze obce jeszcze. Doczytaj w dokumentacji mysql.
damiandamian
Zaimportowałem Twoją tabelę i dodałem do uczniów user, pass ( do logowania ) , oraz klasę i nr. Próbowałem zmienić polecenie select ale chyba coś pomieszałem
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  2. <html>
  3. <head>
  4. <title>Serwis ABC</title>
  5. <meta http-equiv=content-type content="text/html; charset=iso-8859-2">
  6. <meta http-equiv="Content-Language" content="pl">
  7. </head>
  8.  
  9. <body>
  10. <?php
  11.  
  12.  
  13. require_once "connect.php" ;
  14.  
  15. $polaczenie = @new mysqli($host, $db_user, $db_password, $db_name);
  16.  
  17. if ($polaczenie->connect_errno!=0)
  18. {
  19. echo "ERROR";
  20. }
  21. else
  22. {
  23.  
  24. $sql= "SELECT uczniowie.id, uczniowie.user, uczniowie.nr, uczniowie.klasa, przedmioty.przedmiot, oceny.ocena, FROM uczniowie, oceny, przedmioty WHERE klasa='1a' AND uczniowie.id = oceny.id_ucznia, przedmioty.id = oceny.id_przedmiotu ORDER BY uczniowie.nr ASC" ;
  25.  
  26.  
  27. if ($rezultat = @$polaczenie->query($sql))
  28. {
  29.  
  30.  
  31.  
  32. while ($row = $rezultat->fetch_assoc()) {
  33.  
  34.  
  35.  
  36.  
  37. echo "<tr>";
  38. echo "<td bgcolor=\"ffff00\">" . $row['id'] . "</td>";
  39. echo "<td bgcolor=\"ffff00\">" . $nr . "</td>";
  40. echo "<td bgcolor=\"ffff00\">" . $polski . "</td>";
  41. echo "<td bgcolor=\"ffff00\">" . $matematyka . "</td>";
  42.  
  43. echo "</tr>";
  44.  
  45.  
  46. echo "<p>";
  47.  
  48.  
  49.  
  50. $rezultat->free_result();
  51.  
  52. }
  53. }
  54. }
  55. ?>
  56. </body>
  57. </html>
viking
Przecież ci napisałem zapytanie specjalnie. Zamiast * wstaw tylko swoje kolumny.
Nie wiem jak zrobiłeś klasę ale powinna być klasy: id, nazwa i w uczniach id_klasy.
damiandamian
Widzę ale nie wiem jak to wszytko posklejać żeby działało


  1. $sql= "SELECT uczniowie.id, uczniowie.user, uczniowie.nr, uczniowie.klasa, przedmioty.przedmiot, oceny.ocena, FROM uczniowie, oceny, przedmioty WHERE klasa='1a' AND uczniowie.id = oceny.id_ucznia, przedmioty.id = oceny.id_przedmiotu ORDER BY uczniowie.nr ASC" ;
  2.  
  3.  
  4. if ($rezultat = @$polaczenie->query($sql))
  5. {
  6.  
  7. while ($row = $rezultat->fetch_assoc()) {
  8.  
  9.  
  10. echo "<tr>";
  11. echo "<td bgcolor=\"ffff00\">" . $row['id'] . "</td>";
  12.  
  13. echo "</tr>";
  14.  
  15.  


taki kod również nie działa mimo że w select dałem wszystkie kolumny ...
viking
Po pierwsze nie ukrywaj błędów tylko w trybie deva je wyświetlaj to będziesz wiedział co jest nie tak. Po drugie, co robi ten przecinek w WHERE?
damiandamian
Dzięki za próby wytłumaczenia mi ale niestety nie jestem w stanie zrozumieć tego php sad.gif Muszę zrobić tą strone żeby zaliczyć praktyki. Gdybyś mógł zrobić tak żeby ten kod działał to byłbym wdzięczny bo Tobie to zajmie z 15 minut a mi ten php już sie śni po nocach :/
viking
Prac domowych nie odrabiamy. Naprawdę nie rozumiem jaki masz problem zrobić kopiuj wklej zapytania działającego i go dostosować i dodać jedno,jak rozumiem z twojego kodu, pole - klasę. W dodatku podałeś je na sztywno.
damiandamian
A ja nie rozumiem jak to zrobić żeby działało . Gdybym rozumiał to zrobiłbym to 3 dni temu ;0 . Nie jest to praca domowa bo plików tego dziennika mam już 10 wink.gif a brakuje mi tylko kilku o które po wielu próbach poprosiłem na forum .
ps dalej nie działa a cały czas próbuje smile.gif


Przy próbie wysłania zapytania do bazy
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'FROM uczniowie, oceny, przedmioty WHERE klasa='1a' AND uczniowie.id = oceny.id_u' at line 1
tylko nie wiem gdzie tu jest błąd

  1. $sql= "SELECT uczniowie.id, uczniowie.user, uczniowie.nr, uczniowie.klasa, przedmioty.przedmiot, oceny.ocena, FROM uczniowie, oceny, przedmioty WHERE klasa='1a' AND uczniowie.id = oceny.id_ucznia przedmioty.id = oceny.id_przedmiotu ORDER BY uczniowie.nr ASC
  2. INNER JOIN oceny o ON (u.id = o.id_ucznia)
  3. INNER JOIN przedmioty p ON (p.id = o.id_przedmiotu) ";
  4.  
  5.  
  6.  
  7.  
  8. if ($rezultat = $polaczenie->query($sql))
  9. {
  10.  
  11.  
  12.  
  13. while ($row = $rezultat->fetch_assoc()) {
  14.  
  15.  
  16.  
  17.  
  18. echo "<tr>";
  19. echo "<td bgcolor=\"ffff00\">" . $row['id'] . "</td>";
  20.  
  21. echo "</tr>";
  22.  
  23.  
  24. $rezultat->free_result();
viking
Patrzymy zatem na http://dev.mysql.com/doc/refman/5.7/en/select.html oraz http://dev.mysql.com/doc/refman/5.7/en/join.html i na pewno nie widać tam składni SELECT WHERE JOIN. Jak już to SELECT JOIN WHERE. A FROM u mnie też nie tak wyglądał.
damiandamian
Dobra bo rozumiem coraz mniej ;D Poddaje sie
viking
Ale czego nie rozumiesz? Że zapytanie ma mieć określoną kolejność jaką widzisz w dokumentacji a wstawiłeś jak popadnie i jeszcze przecinek przed FROM.
damiandamian
Taki kod mam tylko nie wiem co dalej
  1. <html>
  2. <?php
  3.  
  4. if (!isset($_SESSION['zalogowany']))
  5. {
  6. header('Location: index.php');
  7. exit();
  8. }
  9.  
  10. ?>
  11. <head>
  12. <meta charset="utf-8" />
  13. </head>
  14. <body bgcolor="black">
  15. <div id="wyloguj">
  16. <?php
  17.  
  18. echo "<p>Witaj ".$_SESSION['user'].'! [ <a href="logout.php">Wyloguj się!</a> ]</p>';
  19.  
  20. $rezultat = @$polaczenie->query ("SELECT uczniowie.id, uczniowie.klasa, uczniowie.nr, przedmioty.Polski, Przedmioty.Matematyka FROM uczniowie, oceny WHERE klasa='1a' AND uczniowie.id = oceny.id_ucznia przedmioty.id = idprzedmiotu ORDER BY uczniowie.nr ASC
  21. INNER JOIN oceny o ON (u.id = o.id_ucznia)
  22. INNER JOIN przedmioty p ON (p.id = o.id_przedmiotu)"; )
  23.  
  24.  
  25.  
  26. if ($rezultat = $polaczenie->query($sql))
  27. {
  28.  
  29.  
  30.  
  31. while ($row = $rezultat->fetch_assoc())
  32. echo "<tr>";
  33. echo "<td bgcolor=\"ffff00\">" . $row['id'] . "</td>";
  34.  
  35. echo "</tr>";
  36.  
  37.  
  38. $rezultat->free_result();
  39. }
  40. }
  41.  
  42.  
  43. ?>
  44.  
  45.  
  46. </body>
  47. </html>
  48.  
  49. </body>
  50. </html>


  1. SELECT uczniowie.id, uczniowie.klasa, uczniowie.nr, przedmioty.przedmiot, przedmioty.Polski, przedmioty.Matematyka FROM uczniowie, oceny WHERE klasa='1a' AND uczniowie.id = oceny.id_ucznia przedmioty.id = oceny.id_przedmiotu ORDER BY uczniowie.nr ASC )
  2. INNER JOIN oceny o ON (u.id = o.id_ucznia)
  3. INNER JOIN przedmioty p ON (p.id = o.id_przedmiotu)
  4.  
  5. #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'przedmioty.id = oceny.id_przedmiotu ORDER BY uczniowie.nr ASC
  6.  
  7. Taki błąd zwraca SQL
viking
http://sqlfiddle.com/#!9/ed328/1
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.