Dnes si vytvoríme novú databázu s tabuľkou plnou údajov a ukážeme, ako si ju pomocou funkcie mysql_fetch_array vypísať. Ukážeme si dva spôsoby, jeden so smyčkou while a druhý s cyklom for.
Ešte pred tým, ako sa vrhneme na prvé spojenie s našou databázou, chcem upozorniť, že by ste mali mať základné znalosti s programovaním v PHP a vedieť pracovať s databázou MySQL. A aby som nezabudol, mali by ste mať správne nakonfigurovaní PHP server.
V prvom rade budeme potrebovať vytvoriť tabuľku s údajmi, najlepšie v novej databáze. Takže C:\mysql\bin\mysql.exe – spustíme mysql.
Poďme si vytvoriť databázu hlavné mestá a tabuľku mestá, kde si uložíme nejaké krajiny s ich hlavnými mestami a samozrejme aj počtom obyvateľov.
mysql> CREATE DATABASE hlavne_mesta;
mysql> CREATE TABLE mesta(
-> stat VARCHAR(30),
-> hlavne_mesto VARCHAR(35),
-> pocet_obyvatelov INT,
-> ID INT NOT NULL AUTO_INCREMENT,
-> PRIMARY KEY(ID));
mysql> INSERT INTO mesta VALUES(
-> 'Slovensko',
-> 'Bratislava',
-> '5500000',
-> '');
mysql> INSERT INTO mesta VALUES(
-> 'Cesko',
-> 'Praha',
-> '10000000',
-> '');
mysql> INSERT INTO mesta VALUES(
-> 'Madarsko',
-> 'Budapest',
-> '10344000',
-> '');
mysql> INSERT INTO mesta VALUES(
-> 'Rakusko',
-> 'Wien',
-> '7813000',
-> '');
mysql> SELECT * FROM mesta;
Takto nejako by vyzeral výpis dát v Mysql.
+-----------+--------------+------------------+----+
| stat | hlavne_mesto | pocet_obyvatelov | ID |
+-----------+--------------+------------------+----+
| Slovensko | Bratislava | 5500000 | 1 |
| Cesko | Praha | 10000000 | 2 |
| Madarsko | Budapest | 10344000 | 3 |
| Rakusko | Wien | 7813000 | 4 |
+-----------+--------------+------------------+----+
My si ho ale vypíšeme pomocou PHP.
Vytvoríme si nový PHP súbor, ktorý si nazveme hlavne_mesta.php.
Hlavné Mestá
".__LINE__."");
//Teraz vyberieme nasu databazu v pripade chyby nechame si vypísat čislo riadku na ktorej sa chyba nacháza aj s popisom
$db=@mysql_select_db("hlavne_mesta",$connect) or die ("Chyba v pripojení K databázy na riadku číslo :".__LINE__."");
//Validný SQL dotaz ktory vyberie vsetky dáta s DB a zobrazi ich
$sql="SELECT * FROM mesta ORDER BY ID";
//Položím query poziadavku na DB
$mysql_query=@mysql_query($sql,$connect);
//Zístim ci sa v nej nieco nacháza teda pocet riadkov
$rows=@mysql_num_rows($mysql_query);
//Ak je prázdna tak vypisem a ukončím
if($rows=="0") {echo "V databáze sa nenachádzajú žiadne informácie";exit;}
//Zaciatok tabulky kde si nechám vypísať naše udaje z DB
echo "\n";
echo "\n";
echo "Štát \n";
echo "Hlavné Mesto \n";
echo "Počet Obyvateľov \n";
echo "ID \n";
echo " \n";
//Pomocou smycky while vypisem nase udaje a priradim ich k premenným
while($vysledok=@mysql_fetch_array($mysql_query)) {
//premenna=pomocna_premenna["nazov stlpca"];
$stat=$vysledok["stat"];
$hlavne_mesto=$vysledok["hlavne_mesto"];
$pocet_obyvatelov=$vysledok["pocet_obyvatelov"];
$ID=$vysledok["ID"];
//Vypísem dáta
//POZOR, ak ich chcem vypisať vsetky, musia byť vnorené este v týchto zátvorkách {}, teda v smycke while.
echo "\n";
echo "".$stat." \n";
echo "".$hlavne_mesto." \n";
echo "".$pocet_obyvatelov." \n";
echo "".$ID." \n";
echo " \n";
}
//Ukončím tabulku
echo "
\n" ;
//Ukončím spojenie s MySQL
@mysql_close($connect);
?>
Pokiaľ sme všetko spravili správne, tak výsledok by mal vyzerať v našom prehliadači po zadaní stránky http://localhost/hlavne_mesta.php nejak takto:
Snažil som sa popísať, ako to pracuje priamo v PHP kóde, takže myslím, že by ste nemali mať problém sa v tom zorientovať.
Teraz Vám ukážem, ako by sme mohli vypísať tieto isté dáta pomocou cyklu for. Nebudem vypisovať celý zdrojový kód zbytočne 2krát, ale ukážem Vám len požadovaný cyklus.
Jediné teda, čo zmeníme, je od začiatku slova while ($vysledok
... {až po koniec zátvorky};.
Kód:
$vysledok=@MySQL_Num_Rows($mysql_query);
for($i=0;$i<$vysledok;$i++)
{
$stat = MySQL_Result($mysql_query, $i, "stat");
$hlavne_mesto = MySQL_Result($mysql_query, $i, "hlavne_mesto");
$pocet_obyvatelov = MySQL_Result($mysql_query, $i, "pocet_obyvatelov");
$ID = MySQL_Result($mysql_query, $i, "ID");
//Vypísem dáta
//POZOR, ak ich chcem vypisať vsetky, musia byť vnorené este v týchto zátvorkách {}, teda v cykle for.
echo "\n";
echo "".$stat." \n";
echo "".$hlavne_mesto." \n";
echo "".$pocet_obyvatelov." \n";
echo "".$ID." \n";
echo " \n";
}
?>
Tu vidíme tú krásu PHPčka, mám na mysli výsledný zdrojový kód, ktorý je interpretovaní klientovi. Ten uvidí len tabuľku, v ktorej sú napísane mestá, a nemá páru, či sú to údaje z DB. Samy sa môžete pozrieť na zdrojový kód:
Hlavné Mestá
Štát
Hlavné Mesto
Počet Obyvateľov
ID
Slovensko
Bratislava
5500000
1
Cesko
Praha
10000000
2
Madarsko
Budapest
10344000
3
Rakusko
Wien
7813000
4
Samotný script tiež prikladám ako txt súbor, ktorý si môžete stiahnúť.
Zhrnutie
Dnes sme sa naučili, ako môžeme vypísať naše dáta z databázy MySQL. Na začiatok, myslím, by to aj stačilo. V ďalšej lekcii by som Vás chcel naučiť vkladať dáta do tabuliek prostredníctvom formulára.