MySQL, web - vkladanie údajov: Rozdiel medzi revíziami

Z Kiwiki
Skočit na navigaci Skočit na vyhledávání
d
 
(4 medziľahlé úpravy od rovnakého používateľa nie sú zobrazené.)
Riadok 1: Riadok 1:
{{Skripta_dbs}} {{Draft}}  
+
{{Skripta_dbs}}  
 
Jednou z úloh, ktoré je treba v prostredí webu pri práci s databázou vyriešiť je vkladanie údajov do tabuliek. V tejto časti bude opísaný a názorne ukázaný spôsob ako z web stránky vložím do tabuľky nové údaje.  
 
Jednou z úloh, ktoré je treba v prostredí webu pri práci s databázou vyriešiť je vkladanie údajov do tabuliek. V tejto časti bude opísaný a názorne ukázaný spôsob ako z web stránky vložím do tabuľky nové údaje.  
 
Celý postup si rozdelíme na niekoľko jednoduchých krokov.  
 
Celý postup si rozdelíme na niekoľko jednoduchých krokov.  
  
V tejto časti budeme vkladať nové záznamy do tabuľky city, z databázy world.
+
Opäť budeme pracovať s tabuľkou ''city'', z databázy ''world''.
  
 
==Vkladanie údajov v aplikácii phpMyAdmin==
 
==Vkladanie údajov v aplikácii phpMyAdmin==
Najjednoduchší spôsob ako vložiť do tabuľky údaje je použiť nejaký softvér pre správu databází. Aj toto dokáže webová aplikácia phpMyAdmin. Po prihlásení sa do systému, vybratí databázy a vybratí tabuľky, do ktorej chceme údaje vkladať môžeme údaje vkladať pomocou jednoduchého formulára:
+
Najjednoduchší spôsob ako vložiť do tabuľky údaje je použiť nejaký softvér pre správu databáz. Aj toto dokáže webová aplikácia phpMyAdmin. Po prihlásení sa do systému, vybratí databázy a vybratí tabuľky, do ktorej chceme údaje vkladať môžeme údaje vkladať pomocou jednoduchého formulára:
  
[[Súbor:phpMyAdmin insert.png|frame|center]]
+
[[Súbor:phpMyAdmin insert.png|frame|center|Vkladanie údajov do tabuľky city v prostredí phpMyAdmin]]
  
Po odoslaní formulára, prostredie phpMyAdmin informuje o výsledkoch vloženia, výpíše SQL dotaz, ktorý sa o vloženie postaral a zobrazí tabuľku, do ktorej sme údaje vkladali. SQL dotaz, ktorý vloží do tabľuky city údaje z predchádzajúceho formulára je:
+
Po odoslaní formulára, prostredie phpMyAdmin informuje o výsledkoch vloženia, výpíše SQL dotaz, ktorý sa o vloženie postaral a zobrazí tabuľku, do ktorej sme údaje vkladali. SQL dotaz, ktorý vloží do tabuľky ''city'' údaje z predchádzajúceho formulára je:
 
<source lang="sql">
 
<source lang="sql">
 
INSERT INTO  `student`.`city` (
 
INSERT INTO  `student`.`city` (
Riadok 24: Riadok 24:
 
</source>
 
</source>
  
V informačnom bloku SQL dotazu sú možnosti: upraviť dotaz, zobraziť php kód. Keďže pracujeme v jazyku php, predchádzajúci SQL dotaz bude prepísaný do jazyka PHP nasledovne. Ešte poznamenajme, že sa stále jedná o SQL príkaz, ktorý sme uložili do premennej ''sql''. Týmto zápisomm v jazyku PHP nič nevložíme, dotaz obsiahnutý v premennej ''sql'' musíme ešte vykonať pomocou funkcie mysq_query.
+
V informačnom bloku SQL dotazu sú možnosti: upraviť dotaz, zobraziť php kód. Keďže pracujeme v jazyku php, predchádzajúci SQL dotaz bude prepísaný do jazyka PHP. Ešte poznamenajme, že sa stále jedná o SQL príkaz, ktorý sme uložili do premennej ''sql''. Týmto zápisom v jazyku PHP nič nevložíme, dotaz obsiahnutý v premennej ''sql'' musíme ešte vykonať pomocou funkcie ''mysq_query''.
 
<source lang="php">
 
<source lang="php">
 
$sql = "INSERT INTO `student`.`city` (`ID`, `Name`, `CountryCode`, `District`, `Population`)
 
$sql = "INSERT INTO `student`.`city` (`ID`, `Name`, `CountryCode`, `District`, `Population`)
Riadok 39: Riadok 39:
 
</source>
 
</source>
 
Značka <nowiki><form></nowiki> má 2 atribúty:
 
Značka <nowiki><form></nowiki> má 2 atribúty:
*action - adresa skriptu, ktorý bude spracovávať údaje z formulára. Ak neuvedieme nič, údaje bude spracovávať ten istý php skript z ktorého boli údaje odoslané.
+
*action - adresa skriptu, ktorý bude spracovávať údaje z formulára. Ak neuvedieme nič, údaje bude spracovávať ten istý php skript z ktorého boli údaje odoslané,
 
*method - metóda posielanie formulárových dát.
 
*method - metóda posielanie formulárových dát.
**get - všetky formulárové údaje sú pri odoslaní viditeľné v url adrese web stránky
+
**get - všetky formulárové údaje sú pri odoslaní viditeľné v url adrese web stránky,
 
**post - údaje sú posielané v hlavičke HTTP protokolu a štandardne sú neviditeľné.
 
**post - údaje sú posielané v hlavičke HTTP protokolu a štandardne sú neviditeľné.
  
  
'''... obsah formulára...'''
+
'''Obsah formulára'''
  
 
Obsah formulára budú jednotlivé vstupné textové polia. Pre krajšie zobrazenie, použijeme tabuľku na zarovnanie políčok.
 
Obsah formulára budú jednotlivé vstupné textové polia. Pre krajšie zobrazenie, použijeme tabuľku na zarovnanie políčok.
Riadok 81: Riadok 81:
 
[[Súbor:web formular1.png|frame|center|HTML formulár]]
 
[[Súbor:web formular1.png|frame|center|HTML formulár]]
  
Pre jednoduchosť vytváranie podobných formulárov je v časti "Na stiahnutie" pripravená pomocná funkcia ''formular''. Táto funkcia sa postará o kompletné vykreslenie formulára. Stačí jed predať informáciu o názvoch vstupných boxov (Name, CountryCode, ...) a popiskov, ktoré budú zobrazené v prvom stĺpci tabuľky. Predchádzajúcu tabuľku vytvoríme pomocou funkcie ''formular'' nasledovne:
+
Pre jednoduchosť vytvárania podobných formulárov je v časti 'Na stiahnutie' pripravená pomocná funkcia ''formular''. Táto funkcia sa postará o kompletné vykreslenie formulára. Stačí jej odovzdať informáciu o názvoch vstupných boxov (''Name'', ''CountryCode'', ...) a popiskov, ktoré budú zobrazené v prvom stĺpci tabuľky. Predchádzajúcu tabuľku vytvoríme pomocou funkcie ''formular'' nasledovne:
 
<source lang="php">
 
<source lang="php">
 
<?php
 
<?php
Riadok 101: Riadok 101:
 
To, či je formulár odoslaný, alebo nie veľmi jednoducho zistíme podľa url adresy:
 
To, či je formulár odoslaný, alebo nie veľmi jednoducho zistíme podľa url adresy:
 
*<nowiki>http://localhost/DBS/insert.php</nowiki>
 
*<nowiki>http://localhost/DBS/insert.php</nowiki>
*<nowiki>http://localhost/DBS/insert.php?Name=Myjava&CountryCode=SVK& District=Tren%C4%8Diansky&Population=32142</nowiki>
+
*<nowiki>http://localhost/DBS/insert.php?Name=Myjava&CountryCode=SVK...</nowiki>
  
V prvom prípade formulár nebol ešte odoslaný, v druhom prípade už áno. V url adrese sú rozoznateľné jednotlivé časti fomulára: Name, CountryCode, District a Population. Každej časti je pridelená určité hodnota. V našom prípade je to Name=Myjava, atď...
+
V prvom prípade formulár nebol ešte odoslaný, v druhom prípade už áno. V url adrese sú rozoznateľné jednotlivé časti formulára: ''Name'', ''CountryCode'', ''District'' a ''Population''. Každej časti je pridelená určité hodnota. V našom prípade je to Name=Myjava, atď...
  
Po odoslaní formulára sú tieto údaje uložené v špeciálnej premennej ''$_GET''. Premenná ''$_GET'' je vlastne pole, kde ako index poľa je použitý názov prvku formulára a hodnota na tomto indexe je hodnota, ktorú sa do formulára vpísali. To, či bol formulár odoslaný vieme teda jednoducho zistiť: ak je veľkosť premennej ''$_GET'' väčšia ako 1, tak bol formulár odoslaný:
+
Po odoslaní formulára sú tieto údaje uložené v špeciálnej premennej ''$_GET''. Premenná ''$_GET'' je vlastne pole, kde ako index poľa je použitý názov prvku formulára a hodnota na tomto indexe je hodnota, ktorú sme do formulára vpísali. To, či bol formulár odoslaný vieme teda jednoducho zistiť: ak je veľkosť premennej ''$_GET'' väčšia ako 1, tak bol formulár odoslaný:
 
<source lang="php">
 
<source lang="php">
 
<?php
 
<?php
Riadok 114: Riadok 114:
 
?>
 
?>
 
</source>
 
</source>
Ak teda zistíme, že formulár bol odoslaný, ak prvé sa spojíme s databázovým serverom a vyberieme vhodnú databázu.
+
Ak teda zistíme, že formulár bol odoslaný, ako prvé sa spojíme s databázovým serverom a vyberieme vhodnú databázu.
 
<source lang="php">
 
<source lang="php">
 
<?php
 
<?php
Riadok 126: Riadok 126:
 
?>
 
?>
 
</source>
 
</source>
Keďže s premmou $_GET sa pracuje trocha komplikovanejšie, použijeme pripravenú funkciu ''getUdaje'', ktorá nám bezpečne prečíta údaje z premennej $_GET. V nasledujúcom príklade je funkcia getUdaje použitá. Funkcia spracuje hodnoty v premennej $_GET a uloží ich do novej premennej ''udaje''. Formát premennej údaje je nasledujúci:
+
Keďže s premennou ''$_GET'' sa pracuje trocha komplikovanejšie, použijeme pripravenú funkciu ''getUdaje'', ktorá nám bezpečne prečíta údaje z premennej ''$_GET''. V nasledujúcom príklade je funkcia ''getUdaje'' použitá. Funkcia spracuje hodnoty v premennej ''$_GET'' a uloží ich do novej premennej ''udaje''. Formát premennej údaje je nasledujúci:
 
<source lang="php">
 
<source lang="php">
 
Array (  
 
Array (  
Riadok 135: Riadok 135:
 
)
 
)
 
</source>
 
</source>
Teda je to pole, ktorého indexy sú názvy atribútov v tabuľke city. Je tu priama súvislosť s poľom ''$polia'' z časti [[#Krok 1: Vytvorenie vstupného formulára]].  
+
Teda je to pole, ktorého indexy sú názvy atribútov v tabuľke ''city''. Je tu priama súvislosť s poľom ''$polia'' z časti [[#Krok 1: Vytvorenie vstupného formulára|Krok 1: Vytvorenie vstupného formulára]].  
 +
 
 
<source lang="php">
 
<source lang="php">
 
<?php
 
<?php
Riadok 155: Riadok 156:
 
   $sql='INSERT INTO city (Name, CountryCode, District, Population) VALUES ';
 
   $sql='INSERT INTO city (Name, CountryCode, District, Population) VALUES ';
 
</source>
 
</source>
V druhej časti budú samotné údaje, ktoré sme napísali do formulára. Tieto údaje sú uložené v premennej ''udaje''. Musíme pamätať na to, že ak vkladáme textové údaje, tak ich musíme vložiť do úvodzoviek. Tu sa nám ale práca značne skomplikuje, pretože úvodzovky sú v jazyku php špeciálny znak. Musíme byť teda patrný pri vytváraní druhej časti dotazu.
+
V druhej časti budú samotné údaje, ktoré sme napísali do formulára. Tieto údaje sú uložené v premennej ''udaje''. Musíme pamätať na to, že ak vkladáme textové údaje, tak ich musíme vložiť do úvodzoviek. Tu sa nám ale práca značne skomplikuje, pretože úvodzovky sú v jazyku php špeciálny znak. Musíme byť teda opatrní pri vytváraní druhej časti dotazu.
  
Informácie o meste, ktoré ideme vložiť sú v ''$udaje["Name"]'', kód krajiny je ''$udaje["CountryCode"]'', okres je ''$udaje["District"]'' a populácia ''$udaje["Population"]''. Všetky údaje okrem populácie musia byť uzatvorené v úvodzovkách. Kompletný SQL príkaz v jazyky php bude nasledujúci:
+
Informácie o meste, ktoré ideme vložiť sú v ''$udaje['Name']'', kód krajiny je ''$udaje['CountryCode']'', okres je ''$udaje['District']'' a populácia ''$udaje['Population']''. Všetky údaje okrem populácie musia byť uzatvorené v úvodzovkách. Kompletný SQL príkaz v jazyky php bude nasledujúci:
 
<source lang="php">
 
<source lang="php">
 
   $sql='INSERT INTO city (Name, CountryCode, District, Population) VALUES ';
 
   $sql='INSERT INTO city (Name, CountryCode, District, Population) VALUES ';
Riadok 172: Riadok 173:
 
   echo "</p>";
 
   echo "</p>";
 
</source>
 
</source>
Výsledok bude:
+
Výsledok predchádzajúceho výpisu premennej ''$sql'' bude:
<div style="background-color: lightBlue;border: 1px solid blue;padding: 20px;">
+
<source lang="sql">
INSERT INTO city (Name, CountryCode, District, Population) VALUES ( "Myjava", "SVK", "Trenčiansky", 32142)
+
  INSERT INTO city (Name, CountryCode, District, Population) VALUES ( 'Myjava', 'SVK', 'Trenčiansky', 32142)
</div>
+
</source>
 +
 
 
===Krok 3: Vykonanie SQL dotazu===
 
===Krok 3: Vykonanie SQL dotazu===
SQL dotaz máme pripravený v premennej ''$sql''. Pomocou funkcie mysql_query SQL príkaz pošleme na databázový server, kde sa vykoná. Ak pomocou funkcie mysql_query posielame SQL príkaz  INSERT, UPDATE, DELETE alebo DROP funkcia vráti hodnotu false alebo true. Podľa tejto hodnoty môžeme vypísať informáciu, či sa vloženie údajov podarilo alebo nie:
+
SQL dotaz máme pripravený v premennej ''$sql''. Pomocou funkcie ''mysql_query'' SQL príkaz pošleme na databázový server, kde sa vykoná. Ak pomocou funkcie ''mysql_query'' posielame SQL príkaz  INSERT, UPDATE, DELETE alebo DROP funkcia vráti hodnotu ''false'' alebo ''true''. Podľa tejto hodnoty môžeme vypísať informáciu, či sa vloženie údajov podarilo alebo nie:
 
<source lang="php">
 
<source lang="php">
 
$vklad=mysql_query($sql);
 
$vklad=mysql_query($sql);
Riadok 191: Riadok 193:
 
         mysql_close($link);
 
         mysql_close($link);
 
</source>
 
</source>
V prípade neúspechu ešte vypíšeme chybu, ako ju vypíše databáza mySQL - pomocou funkcie mysql_error().
+
V prípade neúspechu ešte vypíšeme chybu tak, ako ju vypíše databáza MySQL - pomocou funkcie ''mysql_error()''.
Na koniec ešte ukončíme spojenie s databázovým serverom - mysql_close($link).
+
Na koniec ešte ukončíme spojenie s databázovým serverom - ''mysql_close($link)''.
  
 
===Listingy pomocných funkcií===
 
===Listingy pomocných funkcií===
Riadok 233: Riadok 235:
 
</source>
 
</source>
 
==Súbory na stiahnutie==
 
==Súbory na stiahnutie==
http://subory.fmtnuni.sk/ki_files/databazy/dbs2.zip
+
http://subory.fmtnuni.sk/ki_files/databazy/dbs2.zip,
*index.php - súbor obsahujúci základnú (domovskú) stránku
+
*index.php - súbor obsahujúci základnú (domovskú) stránku,
*insert.php - súbor obsahujúci samotnú HTML stránku pre vloženie údajov. Kód php treba doplniť.
+
*insert.php - súbor obsahujúci samotnú HTML stránku pre vloženie údajov (kód php treba doplniť),
*funkcie.php - súbor s pomocnými funkciami pre uľahčenie práce
+
*funkcie.php - súbor s pomocnými funkciami pre uľahčenie práce,
*dbs_styl.css - súbor s definíciou zobrazenia HTML stránky
+
*dbs_styl.css - súbor s definíciou zobrazenia HTML stránky.

Aktuálna revízia z 10:16, 18. január 2011

Jednou z úloh, ktoré je treba v prostredí webu pri práci s databázou vyriešiť je vkladanie údajov do tabuliek. V tejto časti bude opísaný a názorne ukázaný spôsob ako z web stránky vložím do tabuľky nové údaje. Celý postup si rozdelíme na niekoľko jednoduchých krokov.

Opäť budeme pracovať s tabuľkou city, z databázy world.

Vkladanie údajov v aplikácii phpMyAdmin

Najjednoduchší spôsob ako vložiť do tabuľky údaje je použiť nejaký softvér pre správu databáz. Aj toto dokáže webová aplikácia phpMyAdmin. Po prihlásení sa do systému, vybratí databázy a vybratí tabuľky, do ktorej chceme údaje vkladať môžeme údaje vkladať pomocou jednoduchého formulára:

Vkladanie údajov do tabuľky city v prostredí phpMyAdmin

Po odoslaní formulára, prostredie phpMyAdmin informuje o výsledkoch vloženia, výpíše SQL dotaz, ktorý sa o vloženie postaral a zobrazí tabuľku, do ktorej sme údaje vkladali. SQL dotaz, ktorý vloží do tabuľky city údaje z predchádzajúceho formulára je:

INSERT INTO  `student`.`city` (
  `ID` ,
  `Name` ,
  `CountryCode` ,
  `District` ,
  `Population`
)
VALUES (
  NULL ,  'Trnava',  'SVK',  'Trnavský',  '533123'
  );

V informačnom bloku SQL dotazu sú možnosti: upraviť dotaz, zobraziť php kód. Keďže pracujeme v jazyku php, predchádzajúci SQL dotaz bude prepísaný do jazyka PHP. Ešte poznamenajme, že sa stále jedná o SQL príkaz, ktorý sme uložili do premennej sql. Týmto zápisom v jazyku PHP nič nevložíme, dotaz obsiahnutý v premennej sql musíme ešte vykonať pomocou funkcie mysq_query.

$sql = "INSERT INTO `student`.`city` (`ID`, `Name`, `CountryCode`, `District`, `Population`)
        VALUES (NULL, \'Trnava\', \'SVK\', \'Trnavský\', \'533123\');";

Vkladanie údajov do tabuľky v php aplikácii

Krok 1: Vytvorenie vstupného formulára

Pre vytvorenie formulára v jazyku HTML existuje značka <form>. Použitie je nasledovné:

   <form action="" method="get">
       ... obsah formulára...
   </form>

Značka <form> má 2 atribúty:

  • action - adresa skriptu, ktorý bude spracovávať údaje z formulára. Ak neuvedieme nič, údaje bude spracovávať ten istý php skript z ktorého boli údaje odoslané,
  • method - metóda posielanie formulárových dát.
    • get - všetky formulárové údaje sú pri odoslaní viditeľné v url adrese web stránky,
    • post - údaje sú posielané v hlavičke HTTP protokolu a štandardne sú neviditeľné.


Obsah formulára

Obsah formulára budú jednotlivé vstupné textové polia. Pre krajšie zobrazenie, použijeme tabuľku na zarovnanie políčok.

<table>
<tr>
    <td>Názov mesta</td>
    <td>
		<input name="Name" type="text">
    </td>
</tr>
<tr>
	<td>Kód krajiny</td>
	<td>
		<input name="CountryCode" type="text">
	</td>
</tr>
<tr>
	<td>Kraj</td>
	<td>
		<input name="District" type="text">
	</td>
</tr>
<tr>
	<td>Počet obyvateľov</td>
	<td>
		<input name="Population" type="text">
	</td>
</tr>
</table>
<input type="submit" value="Uložiť">

Výsledkom bude nasledujúci formulár:

HTML formulár

Pre jednoduchosť vytvárania podobných formulárov je v časti 'Na stiahnutie' pripravená pomocná funkcia formular. Táto funkcia sa postará o kompletné vykreslenie formulára. Stačí jej odovzdať informáciu o názvoch vstupných boxov (Name, CountryCode, ...) a popiskov, ktoré budú zobrazené v prvom stĺpci tabuľky. Predchádzajúcu tabuľku vytvoríme pomocou funkcie formular nasledovne:

<?php
	$polia=array(
			"Name"=>"Názov mesta",
			"CountryCode"=>"Kód krajiny",
			"District"=>"Kraj",
			"Population"=>"Počet obyvateľov"
			);
	
	formular($polia);
?>

Zmenou hodnôt v premennej polia, môžeme vytvoriť ľubovoľný formulár.

Krok 2: Vytvorenie SQL dotazu

Údaje môžeme do tabuľky vkladať až po odoslaní formulára. Inak povedané, až keď odošleme formulár, môžeme údaje vkladať. Pretože o vkladanie údajov sa bude starať ten istý php súbor (insert.php) v ktorom je aj formulár na pridávanie údajov, treba rozlíšiť či bol formulár odoslaný (v tom prípade sa pokúsime údaje vložiť) alebo ešte nebol odoslaný a vkladanie údajov ešte nebudeme riešiť.

To, či je formulár odoslaný, alebo nie veľmi jednoducho zistíme podľa url adresy:

  • http://localhost/DBS/insert.php
  • http://localhost/DBS/insert.php?Name=Myjava&CountryCode=SVK...

V prvom prípade formulár nebol ešte odoslaný, v druhom prípade už áno. V url adrese sú rozoznateľné jednotlivé časti formulára: Name, CountryCode, District a Population. Každej časti je pridelená určité hodnota. V našom prípade je to Name=Myjava, atď...

Po odoslaní formulára sú tieto údaje uložené v špeciálnej premennej $_GET. Premenná $_GET je vlastne pole, kde ako index poľa je použitý názov prvku formulára a hodnota na tomto indexe je hodnota, ktorú sme do formulára vpísali. To, či bol formulár odoslaný vieme teda jednoducho zistiť: ak je veľkosť premennej $_GET väčšia ako 1, tak bol formulár odoslaný:

<?php
   if(sizeof($_GET)>0)
   {
      //vloženie formulárových údajov do databázy
   }
?>

Ak teda zistíme, že formulár bol odoslaný, ako prvé sa spojíme s databázovým serverom a vyberieme vhodnú databázu.

<?php
   if(sizeof($_GET)>0)
   {
      $link=mysql_connect("db.server","login","heslo") or die("Nespojene");
      mysql_query("SET NAMES 'utf8'") or die("charset");
      mysql_select_db("student") or die("Nevybrana DB");	
      //vloženie formulárových údajov do databázy
   }
?>

Keďže s premennou $_GET sa pracuje trocha komplikovanejšie, použijeme pripravenú funkciu getUdaje, ktorá nám bezpečne prečíta údaje z premennej $_GET. V nasledujúcom príklade je funkcia getUdaje použitá. Funkcia spracuje hodnoty v premennej $_GET a uloží ich do novej premennej udaje. Formát premennej údaje je nasledujúci:

Array ( 
   [Name] => Myjava 
   [CountryCode] => SVK 
   [District] => Trenčiansky 
   [Population] => 32142
)

Teda je to pole, ktorého indexy sú názvy atribútov v tabuľke city. Je tu priama súvislosť s poľom $polia z časti Krok 1: Vytvorenie vstupného formulára.

<?php
   if(sizeof($_GET)>0)
   {
      $link=mysql_connect("db.server","login","heslo") or die("Nespojene");
      mysql_query("SET NAMES 'utf8'") or die("charset");
      mysql_select_db("student") or die("Nevybrana DB");
      //pomocna funkcia pre precitanie udajov odoslanych cez formular
      $udaje=getUdaje($_GET);	
      //vloženie formulárových údajov do databázy
   }
?>

V premennej udaje sú teda údaje, ktoré chceme vložiť do tabuľky. Pre vloženie údajov existuje SQL príkaz INSERT.

Prvá časť SQL príkazy v jazyku php bude:

   $sql='INSERT INTO city (Name, CountryCode, District, Population) VALUES ';

V druhej časti budú samotné údaje, ktoré sme napísali do formulára. Tieto údaje sú uložené v premennej udaje. Musíme pamätať na to, že ak vkladáme textové údaje, tak ich musíme vložiť do úvodzoviek. Tu sa nám ale práca značne skomplikuje, pretože úvodzovky sú v jazyku php špeciálny znak. Musíme byť teda opatrní pri vytváraní druhej časti dotazu.

Informácie o meste, ktoré ideme vložiť sú v $udaje['Name'], kód krajiny je $udaje['CountryCode'], okres je $udaje['District'] a populácia $udaje['Population']. Všetky údaje okrem populácie musia byť uzatvorené v úvodzovkách. Kompletný SQL príkaz v jazyky php bude nasledujúci:

   $sql='INSERT INTO city (Name, CountryCode, District, Population) VALUES ';
   $sql.='( "'.$udaje["Name"].'", 
            "'.$udaje["CountryCode"].'",
	    "'.$udaje["District"].'",
             '.$udaje["Population"].'
         )';

Pre kontrolu si môžeme SQL príkaz vypísať:

   echo "<p class='dotaz'>";
   echo $sql;
   echo "</p>";

Výsledok predchádzajúceho výpisu premennej $sql bude:

   INSERT INTO city (Name, CountryCode, District, Population) VALUES ( 'Myjava', 'SVK', 'Trenčiansky', 32142)

Krok 3: Vykonanie SQL dotazu

SQL dotaz máme pripravený v premennej $sql. Pomocou funkcie mysql_query SQL príkaz pošleme na databázový server, kde sa vykoná. Ak pomocou funkcie mysql_query posielame SQL príkaz INSERT, UPDATE, DELETE alebo DROP funkcia vráti hodnotu false alebo true. Podľa tejto hodnoty môžeme vypísať informáciu, či sa vloženie údajov podarilo alebo nie:

	$vklad=mysql_query($sql);
	if($vklad==true)
	{
		echo "Záznam sa podarilo vložiť";		
	}
	else
	{
		echo "Záznam nebol vložený. MySQL hlási:<br/>";
		echo mysql_error();
	}
        mysql_close($link);

V prípade neúspechu ešte vypíšeme chybu tak, ako ju vypíše databáza MySQL - pomocou funkcie mysql_error(). Na koniec ešte ukončíme spojenie s databázovým serverom - mysql_close($link).

Listingy pomocných funkcií

Uvádzame výpisy zdrojových kódov pomocných funkcií formular a getUdaje.

<?php
function formular($polia)
{
	$atributy=array_keys($polia);
	$hodnoty=array_values($polia);
	$n=sizeof($hodnoty);
		echo "<form action=\"\" method=\"get\">";
			echo "<table>";
			for($i=0;$i<$n;$i++)
			{
				echo "<tr>";
					echo "<td class=\"nazvy\">$hodnoty[$i]</td>";
					echo '<td><input type="text" name="'.$atributy[$i].'" /></td>';
				echo "</tr>";
			}
			echo "</table>";
			echo '<input type="submit" value="Uložiť" />';
		echo "<form>";
}

function getUdaje($get)
{
	$atributy=array_keys($get);
	$n=sizeof($atributy);	
	for($i=0;$i<$n;$i++)
	{
		if(isset($get[$atributy[$i]]))
			$udaje[$atributy[$i]]=$get[$atributy[$i]];
		else
			$udaje[$atributy[$i]]="";
	}
	return $udaje;
}
?>

Súbory na stiahnutie

http://subory.fmtnuni.sk/ki_files/databazy/dbs2.zip,

  • index.php - súbor obsahujúci základnú (domovskú) stránku,
  • insert.php - súbor obsahujúci samotnú HTML stránku pre vloženie údajov (kód php treba doplniť),
  • funkcie.php - súbor s pomocnými funkciami pre uľahčenie práce,
  • dbs_styl.css - súbor s definíciou zobrazenia HTML stránky.