gawellus
7.07.2009, 14:42:35
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
7.07.2009, 14:47:56
<?php
$q = "SELECT * FROM tabela";
}
?>
edit: poprawiłem ;o
gawellus
7.07.2009, 14:52:52
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
7.07.2009, 14:59:28
<?php
echo $row['id'].' '.$row['nazwa']; ?>
gawellus
7.07.2009, 15:20:35
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
7.07.2009, 15:25:13
przeciez masz to w petli while, wiec wyswietli ci wszystkie wartosci. Jak ci to nie pasuje zamiast wyswietlac zapisz sobie do tablicy
<?php
$tab[] = $row;
}
?>
i wyświetl jak tylko chcesz
Pawel_W
7.07.2009, 15:28:06
<?php
function display($array)
{
$text = "";
for($i=0
,$c=count($array),$i<$c;$i++) {
$text.=$array[$i]." ";
}
return $text;
}
$q = "SELECT * FROM tabela";
echo display
($row)."<br>"; }
?>
gawellus
7.07.2009, 15:37:22
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
7.07.2009, 15:39:00
Może coś takiego ciebie zaspokoi
<?php
foreach($row as $value) echo $value.' '; }
?>
gawellus
7.07.2009, 15:42:07
o! to też bardzo piękne i krótkie i zrozumiałe!
dzięki!
Pawel_W
7.07.2009, 15:43:25
<?php
function display($array) // funkcja która zwróci ci zawartość tablicy
{
$text = ""; // deklarowanie zmiennej text
for($i=0
,$c=count($array),$i<$c;$i++) // $c = wielkość tablicy {
$text.=$array[$i]." "; // przypisywanie do $text kolejnych wartości z tablicy
}
return $text; // zwracanie $text
}
$q = "SELECT * FROM tabela"; // zapytanie do bazy
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 echo display
($row)."<br>"; // wywoływanie funkcji display z atrybutem $row }
?>
Wicepsik
7.07.2009, 15:46:28
<?php
for($i=0
,$c=count($array),$i<$c;$i++) // źle, po zliczeniu tablicy powinien być średnik a nie przecinek for($i=0
,$c=count($array);$i<$c;$i++) // dobrze ?>
Tyle kodu a można to zrobić pętlą foreach
Pawel_W
7.07.2009, 15:50:16
różnica paru liter, a efekt ten sam...