Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] wyświetlanie wszystkicg rekordów
Forum PHP.pl > Forum > Przedszkole
gawellus
Mam głupi problem, otóż od niedawna bawię się PHP/MySQL i zrobiłem już kilka ciekawych rzeczy a nie potrafię zrobić najprostszej.
Otóż jak wyświetlić wszystkie rekordy z tabeli MySQL ?
Prawidłowo łączę się z bazą, prawidłowo wysyłam zapytanie (select * ..), ale jak wyświetlić rezultat zapytania na stronę?

Na razie doszedłem do takiego wyniku:
array(2) { ["id"]=> string(1) "1" ["nazwa"]=> string(10) "Białystok" }

wolałbym, żeby pokazywał tylko samo id i nazwę, bez typu zmiennych, itd.
wiem, że można wypisywać po każdej kolumnie osobno (np. echo $wiersz['id'])
ale nie chcę za każdym razem wpisywać którą kolumnę ma wyświetlić, chodzi o to, żeby jednym poleceniem wyświetlił to co wyświetla polecenie "select * from .." w mysql, bez podawania poszczególnych kolumn. przecież jak chcę wyświetlić tablę, która mam kolumn np. 12, to pisząc w php kod na wyświetlenie każdej osobno jest co najmniej stratą czasu :/

Proszę o pomoc! :/
Pawel_W
  1. <?php
  2. $q = "SELECT * FROM tabela";
  3. $r = mysql_query($q);
  4. while($row = mysql_fetch_array($r)){
  5. print_r($row);
  6. }
  7. ?>


edit: poprawiłem ;o
gawellus
sprawdziłem ten kod i teraz wyświetlaw tym stylu:

Array ( [id] => 1 Białystok )

a można zrobić to bardziej elegancko?
bez Array, bez ( [id] => i bez [nazwa] => ?
czyli żeby podał same wartości pól id i nazwa. w tym przypadku:

1 Białystok
Pawel_W
  1. <?php
  2. echo $row['id'].' '.$row['nazwa'];
  3. ?>
gawellus
no ale o to właśnie mi NIE chodzi, żeby wypisywać nazwy wszystkich kolumn po kolei, tylko żeby jednym poleceniem zostały wyświetlone wszystkie
zordon
przeciez masz to w petli while, wiec wyswietli ci wszystkie wartosci. Jak ci to nie pasuje zamiast wyswietlac zapisz sobie do tablicy



  1. <?php
  2. while($row = mysql_fetch_array($r)){
  3. $tab[] = $row;
  4. }
  5. ?>


i wyświetl jak tylko chcesz
Pawel_W
  1. <?php
  2. function display($array)
  3. {
  4. $text = "";
  5. for($i=0,$c=count($array),$i<$c;$i++)
  6. {
  7. $text.=$array[$i]." ";
  8. }
  9. return $text;
  10. }
  11. $q = "SELECT * FROM tabela";
  12. $r = mysql_query($q);
  13. while($row = mysql_fetch_row($r)){
  14. echo display($row)."<br>";
  15. }
  16. ?>
gawellus
o to właśnie chodziło!
jeśli mógłbyś jeszcze wytłumaczyć jak to działa dokładnie, to byłbym niezmiernie wdzięczny!
Wicepsik
Może coś takiego ciebie zaspokoi
  1. <?php
  2. while($row = mysql_fetch_array($r, MYSQL_NUM)){
  3.    foreach($row as $value) echo $value.' ';
  4.    echo '<br />';
  5. }
  6. ?>
gawellus
o! to też bardzo piękne i krótkie i zrozumiałe!
dzięki!
Pawel_W
  1. <?php
  2. function display($array) // funkcja która zwróci ci zawartość tablicy
  3. {
  4. $text = ""; // deklarowanie zmiennej text
  5. for($i=0,$c=count($array),$i<$c;$i++) //  $c = wielkość tablicy
  6. {
  7. $text.=$array[$i]." "; // przypisywanie do $text kolejnych wartości z tablicy
  8. }
  9. return $text; // zwracanie $text
  10. }
  11. $q = "SELECT * FROM tabela"; // zapytanie do bazy
  12. $r = mysql_query($q); // wykonywanie zapytania
  13. while($row = mysql_fetch_row($r)){ // pętla while (oznacza to, że będzie się wykonywać dopóki warunek jest spełniony), mysql_fetch_array() zwróci ci tablicę z wartościami z bazy
  14. echo display($row)."<br>"; // wywoływanie funkcji display z atrybutem $row
  15. }
  16. ?>
Wicepsik
  1. <?php
  2. for($i=0,$c=count($array),$i<$c;$i++) // źle, po zliczeniu tablicy powinien być średnik a nie przecinek
  3. for($i=0,$c=count($array);$i<$c;$i++) // dobrze
  4. ?>

Tyle kodu a można to zrobić pętlą foreach
Pawel_W
różnica paru liter, a efekt ten sam...
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.