Editácia dát v databáze

Na tejto prednáške budeme pokračovať so zavádzaním najpoužívanejších operácii s databázou do praxe a ukážeme si, ako dáta v databáze upravovať. Keďže vieme na našej stránke pridávať používateľov do našej tabuľky a aj si ich zobrazujeme a vieme medzi nimi aj vyhľadávať, teraz si ukážeme, ako dané záznamy upraviť.

 

Systém upravovania jednotlivých položiek by mohol vyzerať asi takto. V našej tabuľke pribudne ešte jeden stĺpec, v ktorom sa na každom riadku bude nachádzať tlačítko s názvom napríklad upraviť položku. Po kliknutí na tento odkaz nás presmeruje na inú stránku (novú), na ktorej sa bude nachádzať rovnaký formulár, aký máme na domovskej stránke a bude obsahovať už existujúce dáta o danom zázname. Tieto dáta bude možné samozrejme upravovať a po odoslaní editačného formulára sa naše dáta prepíšu a načítajú sa už upravené dáta daného záznamu.

 

Na naprogramovanie tejto funkcionality netreba žiadne nové vedomosti, už by ste to mohli zvládnuť, kľudne sa s tým skúste potrápiť. Začneme teda pridaním odkazu pre editovanie do každého riadka a vytvorením nového súboru (stránky) pre editovanie. Súbor si nazveme uprava-zaznamu.php. Pre odkaz musíme zabezpečiť, aby sa po presmerovaní vedelo, ktorý záznam chceme editovať, takže si v parametre cez url prepošleme id záznamu pre úpravu. V novom súbore si zatiaľ iba vypíšeme zachytený parameter. Mohlo by to teda vyzerať takto:

 


index.php (zmena výpisu tabuľky):


for($i=0; $i<count($data); $i++){
    echo '<tr>';
        foreach($data[$i] as $index => $value){
            echo '<td>'.$value.'</td>';
        }

        echo '<td><a href="uprava-zaznamu.php?id_user='.$data[$i]['id'].'">Upraviť záznam</a></td>';

    echo '</tr>';
}


uprava-zaznamu.php:

<!DOCTYPE html>

<html lang="sk">
    <head>
        <link rel="stylesheet" type="text/css" href="global.css">
    </head>

    <body>
        <div class="main">

            <?php include "header.php";?>

            <div class="content">

                <?php include "menu.php";?>

                <div class="main-content right">
                    <h1>Editácia používateľa</h1>
                    <div class="line"></div>

                    <?php
                        $id_user = $_GET['id_user'];

                        echo "ID User : ".$id_user;
                    ?>
                </div>

                <div class="clear"></div>
            </div>

            <?php include "footer.php";?>

        </div>

    </body>
</html>

 


Ako vidíte, túto sekciu systému (našej webstránky) nebudeme pridávať do menu, používateľ sa na ňu môže dostať len cez odkaz v zozname používateľov. Nová stránka neobsahuje nič, iba kostru našej stránky a výpis zachyteného parametra – id používateľa, ktorého ideme upravovať. Všimnite si najmä, ako sme vytvorili odkaz pre editáciu v tabuľke. Pridali sme nový stĺpec do zoznamu hlavičkových buniek s názvom akcie a do obsahu bunky sme umiestnili odkaz (za výpis všetkých hodnôt stĺpcov pomocou cyklu foreach sme natvrdo pridali poslednú bunku s odkazom). Toto všetko sa generuje v cykle, ktorým prechádzame všetky záznamy v tabuľke, takže sme použili ako výpis parametra prvok id aktuálnej premennej (záznam v aktuálnom kroku cyklu). Keď sa myšou prejdete postupne cez odkazy v jednotlivých riadkoch, v ľavom dolnom rohu prehliadača vidíte url adresu, na ktorú sa po kliknutí prekliknete. Ako idete smerom od hora dole vidíte, že id parameter v url sa vždy mení podľa toho, na akom zázname sme.

Teraz si len skopírujeme formulár do novej stránky a podľa parametra, ktorý nám prišiel, si načítame dáta o danom zázname z databázy. Tieto dáta následne zobrazíme vo formulári, aby boli predvyplnené na editáciu. Malo by to vyzerať asi takto:

 


uprava-zaznamu.php:

<?php 
    $id_user = $_GET['id_user'];

    //PRIPOJENIE DO DB
    $server_name = "localhost";
    $db_user_name = "root";
    $password = "root";
    $dbname = "zapr_db_1";

    $connection = mysqli_connect($server_name, $db_user_name, $password, $dbname);

    if (!$connection) {
        echo '<p class="error">Spojenie s databázou sa nepodarilo nadviazať.</p>';
    }

//NACITANIE DAT O USEROVI
    if($id_user){
        $sql_query = "SELECT * FROM users WHERE id=".$id_user.";";

        $result = mysqli_query($connection, $sql_query);

        if (mysqli_num_rows($result) > 0) {

            $data = mysqli_fetch_all($result, MYSQLI_ASSOC);
            $user_name = $data[0]['user_name'];
            $user_surname = $data[0]['user_surname'];
            $age = $data[0]['age'];
            $role = $data[0]['role'];


        ?>

        <!-- Formular pre editovanie usera -->
        <form class="contact_form" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="post">
            <label for="user_name">Meno</label>
            <input type="text" name="user_name" id="user_name" value="<?php echo $user_name;?>">

            <label for="user_surname">Priezvisko</label>
            <input type="text" name="user_surname" id="user_surname" value="<?php echo $user_surname;?>">

            <label for="age">Vek</label>
            <input type="text" name="age" id="age" value="<?php echo $age;?>">

            <label for="role">Rola</label>
            <input type="text" name="role" id="role" value="<?php echo $role;?>">

            <input type="submit" name="edit_user_form" value="Odoslať">
        </form>

        <?php


        }else{
            echo '<p class="error">Nepodarilo sa načítať dáta pre editovanie.</p>';
        }


    }else{
        echo '<p class="error">Parameter používateľa pre editáciu sa nepodarilo načítať.</p>';
    }

?>

 


Ako vidíte, na stránke sa nám teraz zobrazí formulár s vyplnenými dátami používateľa, ktoré chceme editovať. V kóde sme sa najprv rovnakým spôsobom pripojili na databázu a následne načítali dáta o konkrétnom používateľovi ($sql_query = "SELECT * FROM users WHERE id=".$id_user.";";). Po načítaní dát sme si tieto dáta priradili do premenných, ktoré máme vytvorené pre hodnoty v položkách formulára (pre atribút value). Ako vidíte, pri priradené sme použili index 0 na premennú data, pretože by sme mali dostať pri selecte podľa id vždy len jeden záznam (keďže to je unique) a tento záznam by mal v poli data ako prvý, preto index 0.

 

Poďme ale ďalej v našej úlohe, kde nám už stačí len napísať (naprogramovať), čo sa má stať po odoslaní formulára. V podstate si iba skopírujeme kód zo stránky index.php, kde sme po odoslaní formulára dáta ukladali do databázy ako nový záznam s tým, že teraz nebudeme vykonávať príkaz INSERT INTO ale UPDATE, kde budeme musieť špecifikovať, ktorý záznam sa má editovať (s našim ID) a budeme tiež musieť upraviť troška zloženie query. Pri skladaná query (lepenie stringu cez .= a postupné pridávanie názvov stĺpcov na menienie a hodnlt) si môžete dať print_r na vypísanie query a za tým exit, aby sa vám query nevykonávalo a aby ste videli, čo sa má vykonať, resp. ako ste zlepili query, kým to nebudete mať tak, ako treba. V prípade zle zadaných parametrov sa zobrazí rovnako hláška o zle zadaných dátach. V prípade správne zadaných dát sa záznam v DB upraví (vykoná sa query s UPDATE) a dáta sa načítajú už zmenené. Aby to takto bolo, riešenie odoslania formulára umiestnime v kóde pred načítanie dát o danom zázname. Mohlo by to vyzerať asi takto:

 


uprava-zaznamu.php (pridané za pripojenie do DB pred nacitanie dat o userovi:

...
//SPRACOVANIE ODOSLANIA FORMULARA
if($_SERVER['REQUEST_METHOD'] == 'GET' && $_GET['edit_user_form']){
    $user_name = $_GET['user_name'];
    $user_surname = $_GET['user_surname'];
    $age = $_GET['age'];
    $role = $_GET['role'];

    if(preg_match('#^.{0,50}$#', $user_name) &&
       preg_match('#^.{1,50}$#', $user_surname) &&
       preg_match('#^.{0,20}$#', $role) &&
       preg_match('#^[0-9]{0,3}$#', $age)){

        //KOREKTNE DATA

        //ulozenie do DB
        $sql_query = "UPDATE users SET user_name=";

        //otestovanie ci prisli parametre, inak vkladame NULL
        if($user_name){
            $sql_query .= "'".$user_name."',";
        }else{
            $sql_query .= "NULL,";
        }

        $sql_query .= "user_surname='".$user_surname."',age=";
        
        if($age){
            $sql_query .= $age.",";
        }else{
            $sql_query .= "NULL,";
        }

        $sql_query .= "role=";

        if($role){
            $sql_query .= "'".$role."'";
        }else{
            $sql_query .= "NULL";
        }

        $sql_query .= " WHERE id=".$id_user.";";

        $result = mysqli_query($connection, $sql_query);

        if($result){
            echo '<p class="success">Položka bola úspešne uložená.</p>';
        }else{
            echo '<p class="error">Pri ukladaní dát do databázy sa vyskytla chyba.</p>';
        }


    }else{
        //CHYBNE DATA
        echo '<p class="error">Položka nebola uložená - nesprávne vyplnené dáta vo formulári. </p>';
    }
}

<input type="hidden" name="id_user" value="<?php echo $id_user;?>">
...

 

 


Ako sme povedali, iba sme skopírovali kód pre spracovanie formulára z index.php a následne spravili pár zmien. Zmenili sme názov formulára, ktorý sa odoslal, čiže hodnota tlačítka submit (edit_user_form) a celé odoslanie sme zmenili z POST na GET. Ako vieme, kľúčová vec pre túto stránku je parameter id_user, ktorý nám príde, ak sa na túto stránku preklikneme zo sekciu domov. Tu si ale musíme dať pozor na jednu vec a to je to, že ak sa odošle formulár, tak ako vieme, prídu nám iba tie parametre, ktoré sa nachádzajú vo formulári ako položky. Tým pádom je náš parameter po odoslaní formulára a načítaní stránky stratený!

 

Preto sme do formulára, ako vidíte na konci kódu (hocikde do formu, napríklad pred submit button), pridali skrytý prvok (hidden), ktorý nesie názov id_user a hodnotu, ktorá nám prišla na začiatku. Týmto sme zabezpečili, že sa po odoslaní formu bude v url nachádzať aj parameter id_user, ktorý potrebujeme (táto finta sa využíva veľmi často). Posledná vec, čo sme zmenili, je troška komplikovanejšie vyskladanie query pre príkaz UPDATE. Všimnite si, že sme museli dávať pozor, aby sa nám medzi stĺpcami a hodnotami nachádzali čiarky a na konci sme museli pridať WHERE klauzulu.

 

Daný kód skutočne pekne funguje, podarilo sa nám teda spraviť aj systém upravovania položiek v databáze. Ako vidíte, po odoslaní formulára dostaneme úspešnú hlášku a dáta vo formulári sú už zmenené. Ak sa prekliknete po editovaní naspäť do sekcie domov, v tabuľke už budú dána naozaj zmenené. Ak ale stále neveríte a chcete si naozaj overiť, že či ste spravili skutočne systém cez web, ktorý mení dáta, pozrite sa do databázy cez phpMyAdmin:) Pomaly sa naša webstránka stáva riadnym informačným systémom, pomocou ktorého vieme spravovať dáta v našej databáze (v tabuľke users). Dúfam, že ste všetko pochopili a poďme našu správu tabuľky v databáze skompletizovať.

Máte nejakú otázku alebo Vám niečo nie je jasné? Napíšte nám na info@zacni-programovat.sk a poradíme!

Obsah súborov projektu po tejto prednáške

1 - footer.php

<div class="footer">
</div>

2 - fotogaleria.php

<!DOCTYPE html>

<html lang="sk">
<head>
<title>Vitajte na našej prvej skutočnej webstránke!</title>

<meta charset=“UTF-8“>
<meta name="description" content="Ponúkame vám lekcie jazykov HTML, CSS, PHP a mnoho ďalších užitočných rád pri programovaní">
<meta name="keywords" content="programovanie, html, css, php, webstranka, web, tvorba webu, web developer, ucenie programovania, ako programovat">

<link rel="stylesheet" type="text/css" href="global.css">
</head>

<body>
<?php $actual_page = "fotogaleria";?>
<div class="main">

<?php include "header.php";?>

<div class="content">

<?php include "menu.php";?>

<div id="gallery-content" class="main-content right">
<h1>Fotogaléria</h1>
<div class="line"></div>

<?php

$pictures = array();

for($i = 0; $i < 30; $i++){
$pictures[] = 'images/placeholder.jpg';
}

//zadefinovanie maximalneho poctu pre jednu stranku a nacitanie parametra (urcenie aktualnej stranky)
$countPerPage = 12;
if($_GET['page']){
$page = $_GET['page'];
}else{
$page = 1;
}

//vypocet od ktorej po ktoru fotku zobrazujeme galeriu
$start = ($page-1)*$countPerPage;
$end = $page*$countPerPage;

echo '<ul id="gallery">';
for($i = $start; $i < $end; $i++){

if($pictures[$i]){
echo '<li class="left';

if(($i+1)%3){
echo ' photo-margin';
}

echo '">';

echo '<img src="'.$pictures[$i].'">';

echo '<a target="_blank" href="'.$pictures[$i].'" class="over_div">';
echo '<span>Kliknite pre zväčšenie!</span>';
echo '</a>';

echo '</li>';
}
}
echo '</ul>';

//cyklus, ktory nam vypise dostatocny pocet odkazov pre jednotlive stranky
$pageLink = 1;
$photosCount = count($pictures);

echo '<ul class="pagination">';
while($photosCount > 0){

echo '<li><a ';

if($pageLink == $page){
echo ' class="active" ';
}

echo 'href="fotogaleria.php?page='.$pageLink.'">'.$pageLink.'</a>';
echo '</li>';
$photosCount = $photosCount - $countPerPage;
$pageLink++;
}
echo '</ul>';

?>
</div>

<div class="clear"></div>
</div>

<?php include "footer.php";?>
</div>
</body>
</html>

3 - global.css

BODY{
margin: 0;
background-color: #dee8e7;
font-family: Arial;
}

H1{
color: #5b6b78;
margin-bottom: 10px;
}

.line{
height: 3px;
border-top: 1px dotted #5b6b78;
border-bottom: 1px dotted #5b6b78;
margin-bottom: 25px;
}

.main{
background-color: #f6f7f1;
width: 900px;
margin: auto;
margin-top: 20px;
margin-bottom: 20px;
}

.header{
border-bottom: 1px solid #7d8079;
height: 150px;
}

.header-inner1{
}

.header-inner2{
}

.content{
}

.footer{
border-top: 1px solid #7d8079;
height: 200px;
}

.half-width{
width: 50%;
}

.full-height{
height: 100%;
}

.left{
float: left;
}

.right{
float: right;
}

.clear{
clear: both;
}

/**********MENU***********/
.sidebar{
width: 200px;
height: 400px;
}

.sidebar UL{
list-style-type: none;
padding: 0;
margin: 0;
}

.sidebar UL LI{
position: relative;
}

.sidebar UL LI A, .sidebar UL LI:HOVER .submenu A{
display: block;
padding: 15px 0px 15px 35px;
border-bottom: 1px solid #7d8079;
color: #7d8079;
text-decoration: none;
text-transform: uppercase;
}

.sidebar UL LI A.active{
color: #f5f7f4;
background-color: #f96b81;
}

.sidebar UL LI:HOVER A, .sidebar UL LI .submenu LI:HOVER A{
background-color: #5b6b78;
color: #d6e3e9;
}

.main-content{
width: calc(100% - 241px);
min-height: 700px;
border-left: 1px solid #7d8079;
padding-left: 20px;
padding-right: 20px;
}

.submenu{
display: none;
border: 2px solid #7d8079;
position: absolute;
top: -1px;
left: 201px;
width: 200px;
background-color: #FFFFFF;
}

.sidebar UL LI:HOVER .submenu{
display: block;
}

.sidebar UL LI:HOVER .submenu A{
background-color: #FFFFFF;
}

.main-content{
width: calc(100% - 241px);
min-height: 700px;
border-left: 1px solid #7d8079;
padding-left: 20px;
padding-right: 20px;
}

/**********GALERIA***********/
/**********GALERIA***********/
#gallery{
display: inline-block;
width: 100%;
list-style-type: none;
margin: 0;
padding: 0;
}

#gallery LI{
position: relative;
height: 133px;
margin-bottom: 10px;
}

#gallery LI IMG{
width: 213px;
height: 133px;
}

.photo-margin{
margin-right: 10px;
}

#gallery A{
display: none;
}

#gallery LI:HOVER A{
display: block;
}

#gallery LI:HOVER{
outline: 2px solid #7d8079;
}

#gallery A{
text-decoration: none;
position: absolute;
background-color: grey;
opacity: 0.4;
height: 100%;
width: 100%;
top: 0px;
}

#gallery A SPAN{
position: relative;
top: 100px;
color: #FFFFFF;
font-weight: bold;
}

/**********PERSONS***********/
.persons{
width: 100%;
table-layout: fixed;
font-family: Arial;
}

.persons, .persons TH, .persons TD{
border: 1px solid #D9E4E6;
}

.persons TH, .persons TD{
padding: 15px;
}

.persons TH{
background-color: #167F92;
color: #FFFFFF;
font-weight: normal;
text-transform: uppercase;
}

.persons TR:nth-child(odd){
background-color: #D9E4E6;
}

.persons TR{
color: #024457;
background-color: #FFFFFF;
}

.persons TD{
font-size: 14px;
}

.persons TR:HOVER{
color: #f5f7f4;
background-color: #f96b81;
cursor: pointer;
}

/**********PERSONS***********/
.contact_form{
padding: 20px;
border: 1px solid #ebebeb;
background-color: white;
font-family: Arial;
font-size: 14px;
color: #455560;
text-transform: uppercase;
text-align: center;
}

.contact_form INPUT, .contact_form TEXTAREA, .contact_form LABEL{
display: block;
width: 100%;
}

.contact_form LABEL{
margin-bottom: 5px;
text-align: left;
}

.contact_form INPUT, .contact_form TEXTAREA{
height: 30px;
border: 1px solid #bababa;
margin-bottom: 30px;
}

.contact_form TEXTAREA{
min-height: 100px;
min-width: 100%;
max-width: 100%;
}

.contact_form INPUT[type="submit"]{
display: inline;
width: 200px;
height: 40px;
background-color: #7bc143;
border: 1px solid #6fae3c;
font-size: 16px;
color: #FFFFFF;
text-transform: uppercase;
}

.contact_form INPUT[type="submit"]:HOVER{
cursor: pointer;
background-color: #42aa44;
}

.success, .error{
border: 1px solid;
margin: 10px 0px;
padding:15px 10px 15px 10px;
}

.success {
color: #4F8A10;
background-color: #DFF2BF;
}

.error {
color: #D8000C;
background-color: #FFBABA;
}
/**********PAGINATION***********/
#gallery-content{
text-align: center;
}

ul.pagination {
display: inline-block;
padding: 0;
margin: 10px 0px 20px 0px;
}

ul.pagination li {
display: inline;
}

ul.pagination li a {
color: black;
padding: 8px 16px;
text-decoration: none;
border: 1px solid #ddd;
}

ul.pagination li a.active {
background-color: #4CAF50;
color: white;
}

ul.pagination li a:hover{
background-color: #ddd;
}

.map{
margin: 30px 0px;
text-align: center;
padding: 25px 0px;
background-color: #FFFFFF;
}

4 - header.php

<div class="header">
<div class="header-inner1 full-height half-width left"></div>
<div class="header-inner2 full-height half-width left"></div>
</div>

5 - index.php

<!DOCTYPE html>

<html lang="sk">
<head>
<title>Vitajte na našej prvej skutočnej webstránke!</title>

<meta charset=“UTF-8“>
<meta name="description" content="Ponúkame vám lekcie jazykov HTML, CSS, PHP a mnoho ďalších užitočných rád pri programovaní">
<meta name="keywords" content="programovanie, html, css, php, webstranka, web, tvorba webu, web developer, ucenie programovania, ako programovat">

<link rel="stylesheet" type="text/css" href="global.css">
</head>

<body>
<?php $actual_page = "index";?>
<div class="main">

<?php include "header.php";?>

<div class="content">

<?php include "menu.php";?>

<div class="main-content right">
<h1>Domov</h1>
<div class="line"></div>

<h2>Pridanie nového používateľa</h2>

<?php
//PRIPOJENIE DO DB
$server_name = "localhost";
$db_user_name = "root";
$password = "root";
$dbname = "zapr_db_1";

$connection = mysqli_connect($server_name, $db_user_name, $password, $dbname);

if (!$connection) {
echo 'Spojenie s databázou sa nepodarilo nadviazať.';
}else{
// echo 'Spojenie s databázou sa podarilo úspešne nadviazať.';
}

//ZACHYTENIE PARAMETROV

if($_SERVER['REQUEST_METHOD'] == 'POST' && $_POST['user_form']){
$user_name = $_POST['user_name'];
$user_surname = $_POST['user_surname'];
$age = $_POST['age'];
$role = $_POST['role'];

if(preg_match('#^.{0,50}$#', $user_name) &&
preg_match('#^.{1,50}$#', $user_surname) &&
preg_match('#^.{0,20}$#', $role) &&
preg_match('#^[0-9]{0,3}$#', $age)){

//KOREKTNE DATA

//ulozenie do DB
$sql_query = "INSERT INTO users (user_name, user_surname, age, role) VALUES (";
//otestovanie ci prisli parametre, inak vkladame NULL
if($user_name){
$sql_query .= "'".$user_name."',";
}else{
$sql_query .= "NULL,";
}

$sql_query .= "'".$user_surname."',";

if($age){
$sql_query .= $age.",";
}else{
$sql_query .= "NULL,";
}

if($role){
$sql_query .= "'".$role."')";
}else{
$sql_query .= "NULL)";
}

$result = mysqli_query($connection, $sql_query);

if($result){
echo '<p class="success">Položka bola úspešne uložená.</p>';
}else{
echo '<p class="error">Pri ukladaní dát do databzy sa vyskytla chyba.</p>';
}

//vycistenie poloziek
$user_name = '';
$user_surname = '';
$age = '';
$role = '';

}else{
//CHYBNE DATA

echo '<p class="error">Nová položka nebola uložená - nesprávne vyplnené dáta vo formulári. </p>';
}

}
?>

<!-- Formular pre vlozenie noveho usera -->
<form class="contact_form" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="post">
<label for="user_name">Meno</label>
<input type="text" name="user_name" id="user_name" value="<?php echo $user_name;?>">

<label for="user_surname">Priezvisko</label>
<input type="text" name="user_surname" id="user_surname" value="<?php echo $user_surname;?>">

<label for="age">Vek</label>
<input type="text" name="age" id="age" value="<?php echo $age;?>">

<label for="role">Rola</label>
<input type="text" name="role" id="role" value="<?php echo $role;?>">

<input type="submit" name="user_form" value="Odoslať">
</form>

<?php

//SPRACOVANIE FILTROVANIA
$search_keyword = "";
if($_SERVER['REQUEST_METHOD'] == 'GET' && $_GET['search_form']){
$search_keyword = $_GET['search_keyword'];
}

$sql_query = "SELECT * FROM users";

if($search_keyword){
$sql_query .= " WHERE user_name LIKE '%".$search_keyword."%' OR user_surname LIKE '%".$search_keyword."%'";
}

$result = mysqli_query($connection, $sql_query);

echo '<h2>Zoznam používateľov</h2>';

?>

<!-- Formular na filtrovanie usera -->
<form class="contact_form" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="get">
<label for="search_keyword">Meno</label>
<input type="text" name="search_keyword" id="search_keyword" value="<?php echo $search_keyword;?>">

<input type="submit" name="search_form" value="Filtruj">
</form>

<br>


<?php

if (mysqli_num_rows($result) > 0) {
$data = mysqli_fetch_all($result, MYSQLI_ASSOC);

// echo '<br><br><pre>';
// print_r($data);
// echo '</pre>';
echo '<h2>Zoznam používateľov</h2>';

echo '<table class="persons">';
echo '<tr>';
echo '<th>ID</th>';
echo '<th>Meno</th>';
echo '<th>Priezvisko</th>';
echo '<th>Vek</th>';
echo '<th>Rola</th>';
echo '</tr>';

for($i=0; $i<count($data); $i++){
echo '<tr>';
foreach($data[$i] as $index => $value){
echo '<td>'.$value.'</td>';
}

echo '<td><a href="uprava-zaznamu.php?id_user='.$data[$i]['id'].'">Upraviť záznam</a></td>';

echo '</tr>';
}

echo '</table>';

} else {
echo "0 results were selected.";
}

echo '<br><br>';

mysqli_close($connection);
?>
</div>

<div class="clear"></div>
</div>

<?php include "footer.php";?>
</div>
</body>
</html>

6 - kontakt.php

<!DOCTYPE html>

<html lang="sk">
<head>
<title>Vitajte na našej prvej skutočnej webstránke!</title>

<meta charset=“UTF-8“>
<meta name="description" content="Ponúkame vám lekcie jazykov HTML, CSS, PHP a mnoho ďalších užitočných rád pri programovaní">
<meta name="keywords" content="programovanie, html, css, php, webstranka, web, tvorba webu, web developer, ucenie programovania, ako programovat">

<link rel="stylesheet" type="text/css" href="global.css">
</head>

<body>
<?php $actual_page = "kontakt";?>
<div class="main">

<?php include "header.php";?>

<div class="content">

<?php include "menu.php";?>

<div class="main-content right">
<h1>Kontakt</h1>
<div class="line"></div>

<?php
if($_SERVER['REQUEST_METHOD'] == 'POST' && $_POST['contact_form']){
if(!preg_match('#^[a-zA-Z0-9]{5,10}$#', $_POST['name']) || !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)){
echo '<p class="error">Zadajte prosim korektne udaje</p>';

//naplnenie formulara
$name = $_POST['name'];
$email = $_POST['email'];
$subject = $_POST['subject'];
$message = $_POST['message'];
}else{
//odoslanie emailu
echo '<p class="success">Vasa sprava bola uspesne odoslana.</p>';

$name = '';
$email = '';
$subject = '';
$message = '';
}

}

?>

<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="post" class="contact_form">
<label for="email">Meno a priezvisko</label>
<input type="text" name="name" id="name" value="<?php echo $name;?>"><br><br>

<label for="email">Email</label>
<input type="text" name="email" id="email" value="<?php echo $email;?>"><br><br>

<label for="subject">Predmet</label>
<input type="text" name="subject" id="subject" value="<?php echo $subject;?>"><br><br>

<label for="message">Správa</label>
<textarea name="message" id="message" placeholder="Zadajte text spravy..."><?php echo $message;?></textarea><br><br>

<input type="submit" name="contact_form" value="Odoslat">
</form>

<div class="map">
<iframe src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d84199.38373426767!2d19.06093170408453!3d48.73928892777478!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x47153de36e8ad42f%3A0xf8223f8a0b8b9032!2sBansk%C3%A1+Bystrica!5e0!3m2!1ssk!2ssk!4v1465151393672" width="600" height="450" frameborder="0" style="border:0" allowfullscreen></iframe>
</div>
</div>

<div class="clear"></div>
</div>

<?php include "footer.php";?>
</div>
</body>
</html>

7 - menu.php

<div class="sidebar left">
<ul>
<li><a class="<?php if($actual_page == "index"){echo 'active';}?>" href="index.php">Domov</a></li>
<li><a class="<?php if($actual_page == "o-nas"){echo 'active';}?>" href="o-nas.php">O nás</a></li>
<li><a class="<?php if($actual_page == "fotogaleria"){echo 'active';}?>" href="fotogaleria.php">Fotogaléria</a></li>
<li>
<a class="<?php if($actual_page == "kontakt"){echo 'active';}?>" href="kontakt.php">Kontakt</a>

<ul class="submenu">
<li><a href="kontakt.php">Kontakt</a></li>
<li><a href="kontakt.php">Kontakt</a></li>
</ul>

</li>
</ul>
</div>

8 - o-nas.php

<!DOCTYPE html>

<html lang="sk">
<head>
<title>Vitajte na našej prvej skutočnej webstránke!</title>

<meta charset=“UTF-8“>
<meta name="description" content="Ponúkame vám lekcie jazykov HTML, CSS, PHP a mnoho ďalších užitočných rád pri programovaní">
<meta name="keywords" content="programovanie, html, css, php, webstranka, web, tvorba webu, web developer, ucenie programovania, ako programovat">

<link rel="stylesheet" type="text/css" href="global.css">
</head>

<body>
<?php $actual_page = "o-nas";?>
<div class="main">

<?php include "header.php";?>

<div class="content">

<?php include "menu.php";?>

<div class="main-content right">
<h1>O nás</h1>
<div class="line"></div>

<?php
$person_1 = array('Raťafák', 'Plachta', 'plachtos@mail.sk','0903 123 123');
$person_2 = array('Od kuka', 'do kuka', 'kuko@mail.sk','0903 123 123');
$person_3 = array('Joey', 'Tribbiani', 'ako.sa.mas@mail.sk','0903 123 123');
$person_4 = array('Charlie', 'Harper', 'hooker@mail.sk','0903 123 123');
$person_5 = array('Chruno', 'Moysey', 'abstinent@mail.sk','0903 123 123');

$pole = array($person_1, $person_2, $person_3, $person_4, $person_5);

$pole[5] = array('Jardo', 'Jágr', 'legenda@mail.sk','0903 123 123');

echo '<table class="persons">';
echo '<tr>';
echo '<th>Meno</th>';
echo '<th>Priezvisko</th>';
echo '<th>Email</th>';
echo '<th>Telefónne číslo</th>';
echo '</tr>';

for($i=0; $i<count($pole); $i++){
echo '<tr>';

for($j=0; $j<count($pole[$i]); $j++){
echo '<td>'.$pole[$i][$j].'</td>';
}

echo '</tr>';
}

echo '</table>';

?>
</div>

<div class="clear"></div>
</div>

<?php include "footer.php";?>
</div>
</body>
</html>

9 - uprava-zaznamu.php

<!DOCTYPE html>

<html lang="sk">
<head>
<link rel="stylesheet" type="text/css" href="global.css">
</head>

<body>
<div class="main">

<?php include "header.php";?>

<div class="content">

<?php include "menu.php";?>

<div class="main-content right">
<h1>Editácia používateľa</h1>
<div class="line"></div>

<?php
$id_user = $_GET['id_user'];

//PRIPOJENIE DO DB
$server_name = "localhost";
$db_user_name = "root";
$password = "root";
$dbname = "zapr_db_1";

$connection = mysqli_connect($server_name, $db_user_name, $password, $dbname);

if (!$connection) {
echo '<p class="error">Spojenie s databázou sa nepodarilo nadviazať.</p>';
}

//SPRACOVANIE ODOSLANIA FORMULARA
if($_SERVER['REQUEST_METHOD'] == 'GET' && $_GET['edit_user_form']){
$user_name = $_GET['user_name'];
$user_surname = $_GET['user_surname'];
$age = $_GET['age'];
$role = $_GET['role'];

if(preg_match('#^.{0,50}$#', $user_name) &&
preg_match('#^.{1,50}$#', $user_surname) &&
preg_match('#^.{0,20}$#', $role) &&
preg_match('#^[0-9]{0,3}$#', $age)){

//KOREKTNE DATA

//ulozenie do DB
$sql_query = "UPDATE users SET user_name=";

//otestovanie ci prisli parametre, inak vkladame NULL
if($user_name){
$sql_query .= "'".$user_name."',";
}else{
$sql_query .= "NULL,";
}

$sql_query .= "user_surname='".$user_surname."',age=";

if($age){
$sql_query .= $age.",";
}else{
$sql_query .= "NULL,";
}

$sql_query .= "role=";

if($role){
$sql_query .= "'".$role."'";
}else{
$sql_query .= "NULL";
}

$sql_query .= " WHERE id=".$id_user.";";

$result = mysqli_query($connection, $sql_query);

if($result){
echo '<p class="success">Položka bola úspešne uložená.</p>';
}else{
echo '<p class="error">Pri ukladaní dát do databázy sa vyskytla chyba.</p>';
}


}else{
//CHYBNE DATA
echo '<p class="error">Položka nebola uložená - nesprávne vyplnené dáta vo formulári. </p>';
}
}

//NACITANIE DAT O USEROVI
if($id_user){
$sql_query = "SELECT * FROM users WHERE id=".$id_user.";";

$result = mysqli_query($connection, $sql_query);

if (mysqli_num_rows($result) > 0) {

$data = mysqli_fetch_all($result, MYSQLI_ASSOC);
$user_name = $data[0]['user_name'];
$user_surname = $data[0]['user_surname'];
$age = $data[0]['age'];
$role = $data[0]['role'];


?>

<!-- Formular pre editovanie usera -->
<form class="contact_form" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="get">
<label for="user_name">Meno</label>
<input type="text" name="user_name" id="user_name" value="<?php echo $user_name;?>">

<label for="user_surname">Priezvisko</label>
<input type="text" name="user_surname" id="user_surname" value="<?php echo $user_surname;?>">

<label for="age">Vek</label>
<input type="text" name="age" id="age" value="<?php echo $age;?>">

<label for="role">Rola</label>
<input type="text" name="role" id="role" value="<?php echo $role;?>">

<input type="hidden" name="id_user" value="<?php echo $id_user;?>">

<input type="submit" name="edit_user_form" value="Odoslať">
</form>

<?php


}else{
echo '<p class="error">Nepodarilo sa načítať dáta pre editovanie.</p>';
}


}else{
echo '<p class="error">Parameter používateľa pre editáciu sa nepodarilo načítať.</p>';
}

?>
</div>

<div class="clear"></div>
</div>

<?php include "footer.php";?>

</div>

</body>
</html>

Ťažko sa vám učí samému?

Máte problémy s niektorými časťami alebo sa neviete učiť sám? Využite našu možnosť individuálnej asistencie:

  • samostatný prístup
  • vysvetlenie nejasností prebraného učiva
  • úlohy a cvičenia navyše
  • všetko z pohodlia domova cez mail a skype

Pre viac info kliknite tu

Kľúčové slová prednášky

updateupdate setsql updatephp update sqlphp db updateuprava dat v databazeeditacia datsql update v phpeditacia databazy cez stranku

IT ftip

Otázka: Koľko programátorov treba na výmenu žiarovky? Odpoveď: Žiadneho. Je to hardwarový problém. Koľko pracovníkov Microsoftu vymieňa jednu pokazenú žiarovku? Žiadny. Vyhlásia tmu za štandard.