PHP pre začiatočníkov - Výpis dát z databázy, 13.diel

PHP pre začiatočníkov - Výpis dát z databázy, 13.diel

Ak už viete zapisovať dáta do databázy určite vám láme hlavou myšlienka ako ich dostať von resp. ako ich vypísať na stránku. Po prečítaní článku to zistíte.
Hlavnou funkciou pre výpis záznamov je mysql_fetch_array(). Vracia jeden riadok dát v ľubovolnom formáte. Funkcia, ktorá bude vypisovať dáta s databázy by mala mať nasledujúci formát:
$data = mysql_fetch_array($sql);
Do hodnoty premennej $sql uložíme označenie dát s databázy pomocou príkazu select a funkcie mysql_query().
$sql = mysql_query("SELECT * FROM tabulka");

$data = mysql_fetch_array($sql);
Funkcia mysql_fetch_array() má aj nepovinné argumenty. Označujú nám výber polí s databázy resp. či je pole asociatívne, indexové alebo oboje. V dieli kde som písal o poliach som vysvetlil aké sú to asociatívne aj indexové ale ak si to nepamätáte, tak nevadí. Asociatívne nám budú odkazovať na nejaký stĺpec v tabuľke, čo bude mať tento tvar:
$data = mysql_fetch_array($sql, MYSQL_ASSOC);

$nick = $data["nick"];

$email = $data["email"];
Naopak indexové nebudú odkazovať na stĺpec v tabuľke ich menom ale ich poradím. Indexovanie sa bude začínať od čísla 0, tak ako to bolo u polí. Zápis do premenných bude vyzerať takto:
$data = mysql_fetch_array($sql, MYSQL_NUM);

$nick = $data["1"];

$email = $data["2"];
Argument MYSQL_BOTH môže využívať všetky s uvedených možností a tak jeho použitie uvádzať asi nemusím. Taktiež môžete namiesto funkcie mysql_fetch_array použiť aj funkcie, ktoré budú vyhradené iba pre jeden s argumentov.
mysql_fetch_array($sql, MYSQL_NUM) mysql_fetch_row()
mysql_fetch_array($sql, MYSQL_ASSOC) mysql_fetch_assoc()
V tejto tabuľke vidíte oproti sebe stojace funkcie, ktoré sú si podobné a majú aj podobný efekt. Samozrejme je najlepšie používať funkciu mysql_fetch_array() a vyberať si výpis dát s argumentmi alebo aj bez nich. Výpis dát v php bude vyzerať takto:
<?php

require_once("mysql.php");

while ($data = mysql_fetch_array($sql, MYSQL_BOTH)){

$nick = $data["nick"];

$email = $data["email"];

echo "Nickname: $nick | Email: $email<br />n";

}

?>
Na výpis dát sme použili cyklus while. Pomocou tohto cyklu sa nám dáta budú vypisovať dovtedy až kým sa nenačítajú a nenapíšu všetky. Je to vhodné ak v tabuľke máte viac ako len jeden záznam. Teraz sú dáta načítané a vypísané.

V nasledujúcej časti si ukážeme ako vypísať počet záznamov s databázy.
Alternatívne verzie: Text PDF Voice
Autor: PaBi3 · Kategória: Programovanie · Dátum: 13.05.2005 14:53

Komentáre

#1 gorgeous007 E-mail
21.07.2007 17:49
Čo mám urobiť aby sa mi vypisovali dáta, ktoré boli naposledy pridané, navrchu a nie na spodku ako mi to vždy robí?

#2 admin Web E-mail
23.07.2007 02:33
admin [1] gorgeous007, dáta sa zoraďujú na strane MySQL, čiže je nutné na koniec SQL príkazu napísať niečo ako ORDER BY id DESC alebo ORDER BY id ASC. Stĺpec id som uviedol iba ako príklad.

#3 miro E-mail
27.08.2007 17:32
zdravim,

akým príkazom sa dá vypísať len jedno pole? napriklad stlpec MENO a riadok v tabulke 5?

dakujem

#4 spectrus Web E-mail
01.01.2008 19:33
zdravim napriklad ked robim komentare hodilo by sa mi urcit datum kedy bol komentar napisany, lenze ked to dam ako vypis funkciou date, napise vzdy aktualny cas
heelp :)

#5 admin Web E-mail
01.01.2008 20:45
admin [4] spectrus, prečo to vypisujete funkciou date()? Ak máte v tabuľke stĺpec, ktorý je predpokladám typu DATETIME (ale nemusí byť) a volá sa napríklad datum, stačí keď ho normálne vypíšete tak ako je uvedené v príklade, teda echo $data["datum"].

#6 spectrus Web E-mail
25.01.2008 10:03
ahoj, ja mam na servery vypnute register globals, a neviem ako to mam osetrit aby to slo, prosim spravis navod aj na register globals? vdaka

#7 admin Web E-mail
25.01.2008 16:01
admin [6] spectrus, čo to má spoločné s register_globals? Každý normálny server to má predsa vypnuté.

#8 Laco E-mail
23.02.2008 21:05
Ako vypisem len prvych 10 zaznamov
$nick = $data["nick"];
$email = $data["email"];
?

#9 admin Web E-mail
24.02.2008 15:45
admin $sql = mysql_query("SELECT * FROM tabulka LIMIT 10");

#10 Martin Palkovič E-mail
20.09.2008 19:09
Nevieš mi prosím ťa poradiť, ako mám vypísať údaje z databázy, ale tak, aby sa prvý riadok vynechal. Chcem vypisovať údaje ale aby sa zobrazil len druhý a ďalší záznam.

#11 admin Web E-mail
20.09.2008 21:38
admin SELECT * FROM tabulka LIMIT 10 OFFSET n
Číslo n definuje počet údajov, ktoré budú vynechané.

#12 peter h E-mail
05.10.2008 16:18
zdravim vas popisali sa asi vsetko kombinacie vypisovania z tabulky ale ja by som potreboval vypisat nejaky riadok na zaklade "id", snazim sa dostat to php a mysql a predstavujem si to tak ze by som cez adresu /index.php?id=1 vypisal clanok z databzy ktory je na tom riadku tabulka ma tri stlpci ID, NADPIS, TEXT...pomozete mi?

#13 Fero E-mail
30.01.2009 20:28
podla mna takto ale neskusal som:
$result=mysql_query("SELECT * FROM tabulka WHERE ID='$id'");
$row=mysql_fetch_array($result);
echo $row['ID'];
echo $row['NADPIS'];
echo $row['TEXT'];

#14 Kenny.vt Web E-mail
22.06.2009 16:32
Zdravim. Mam otázku. Aký je rozdiel medzi "include" "require" a "require_once"???
čo viem tak všetký robia tu istú funkciu ale potom prečo ich je viac na jednu funkciu?

#15 admin Web E-mail
23.06.2009 01:56
admin require - ak sa nenájde súbor, stránka sa ukončí (vyhodí fatal error).
include - ak sa nenájde súbor, stránka pokračuje (vyhodí warning).

Sufix _once slúži nato, aby bol súbor zahrnutý iba jeden krát.

#16 WladinQ E-mail
10.04.2015 11:12
Zdravim ako vypisem zaznamy z DB tak aby ukazovalo vsetky ID okrem ID prihlaseneho uzivatela? Pricom ID prihlaseneho je $my_id? Vdaka

Osobné údaje
Captcha
Odpíšte text z obrázku. Rozlišujú sa malé a veľké písmená.
Obsah
Možnosti