POSLEDNÍ ŠANCE: Pracuj až o 60 % rychleji díky akreditovanému kurzu Specialista na AI. Nyní již od 0 Kč. Zjisti více:

Diskuze – Lekce 3 - Formulář a výpis dat z databáze do tabulky v PHP

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
jirka.skop
Člen
Avatar
Odpovídá na petr.jouza
jirka.skop:14.7.2016 16:25

Ahoj,díky za radu,princip sem pochopil,ale nemůžu pořád přijít na to jak to napsat.Mohl bys prosím tě udělat ukázku třeba toť na ten tutoriál?Ono v 45 letech to už tak nemyslí a člověk potřebuje někdy pořádně nakoupnout.Díky Jirka.

 
Odpovědět
14.7.2016 16:25
Avatar
petr.jouza
Člen
Avatar
Odpovídá na jirka.skop
petr.jouza:14.7.2016 17:45

Tak dám příklad:
pro info: používám PDO databázový ovladač zde z itnetwork, tak-že příklady budou pomocí tohoto ovladače... příklad udělám třeba na stránku s vypsanými uživateli, které v MySQL zapisuji

Tak-že tedy... mám stránku, kde vypíšu uživatelé v tabulce, stránka třeba uzivatele.php:

<?php
$uzivatele = Db::queryAll('SELECT id, uzivatelske_jmeno, jmeno, prijmeni, email FROM uzivatele') ;
echo '<table>' ;
        echo '<thead>' ;
                echo '<tr>' ;
                        echo '<td></td>' ;
                        echo '<td>Uživatelské jméno</td>' ;
                        echo '<td>Jméno</td>' ;
                        echo '<td>Příjmení</td>' ;
                        echo '<td>Email</td>' ;
                echo '</tr>' ;
        echo '</thead>' ;
        echo '<tbody>' ;
        foreach ($uzivatele as $uzivatel) {
                echo '<tr>' ;
                        echo '<td>' ;
                                /* ZDE SE ODKÁŽU NA STRÁNKU UPRAVIL POMOCÍ ID Z DB
                                echo '<a href="upravit.php?id='.$uzivatel['id'].'"><img src="upravit.jpg" title="upravit"></a>' ;
                        echo '</td>' ;
                        echo '<td>'.$uzivatel['uzivatelske_jmeno'].'</td>' ;
                        echo '<td>'.$uzivatel['jmeno'].'</td>' ;
                        echo '<td>'.$uzivatel['prijmeni'].'</td>' ;
                        echo '<td>'.$uzivatel['email'].'</td>' ;
                echo '</tr>' ;
        }
        echo '</tbody>' ;
echo '<table>' ;
?>

Když tedy kliknu na ikonku pro úpravu, tak ta mě přesměruje na stránku **upravit.php **a jako $_GET budu mít ID (primární klíč záznamu z tabulky) pomocí kterého se odkážu na konkrétní záznam v tabulce, tak-že stránka v body, kde načtu konkrétní řádek a vytvořím formulář do kterého načtu hodnoty z těch položek:

<?php
$uzivatel = Db::queryOne(' SELECT id, uzivatelske_jmeno, jmeno, prijmeni, email FROM uzivatele WHERE id = ?',$_GET['id']) ;
echo '<form method="post">' ;
        echo '<input type="text" name="uzivatelske-jmeno" value="'.$uzivatel['uzivatelske_jmeno'].'"><br>' ;
        echo '<input type="text" name="jmeno" value="'.$uzivatel['jmeno'].'"><br>' ;
        echo '<input type="text" name="prijmeni" value="'.$uzivatel['prijmeni'].'"><br>' ;
        echo '<input type=email name="email" value="'.$uzivatel['email'].'"><br>'
        echo '<button type="submit" name="ulozit">ULOŽIT</button>' ;
echo '</form>' ;
?>

A do toho samého souboru, pokud ve form neuvedu action na samostatný skript mohu uvést php skript pro zpracování formuláře:

<?php
if(isset($_POST['ulozit'])) {
        Db::query('UPDATE uzivatele SET uzivatelske_jmeno = ?, jmeno = ?, prijmeni = ?, email = ? WHERE id = ?',$_POST['uzivatelske-jmeno'], $_POST['jmeno'], $_POST['prijmeni'], $_POST['email'], $_GET['id']) ;
}
?>

Takto tedy napsáno poněkud zjednodušeně. Samozřejmě tu chybí ošetření vstupních dat a různé kontroly na existenci ID atd... já osobně ani nepoužívám přímo primární klíč ID z tabulky pro výpis do stránky, ale pro ukázku a pochopení principu by ti to mělo stačit.

Něco jiného by bylo pak jak jsem psal, kdybys chtěl upravovat více záznamů z tabulky najednou... to bych musel v tom upravit.php všechno napsat jinak. Respektive by musela být zvolena úplně jiná logika.

 
Odpovědět
14.7.2016 17:45
Avatar
petr.jouza
Člen
Avatar
Odpovídá na jirka.skop
petr.jouza:14.7.2016 17:50

Ještě se předem omlouvám za to neodkomentování komentáře z první ukázky... :)

 
Odpovědět
14.7.2016 17:50
Avatar
jirka.skop
Člen
Avatar
Odpovídá na petr.jouza
jirka.skop:14.7.2016 21:19

Díky,něco takového jsem potřeboval,těť to pořádně prostuduju a můžu pokračovat.

 
Odpovědět
14.7.2016 21:19
Avatar
Bartoloměj Eliáš:11.9.2016 22:36

Mockrát děkuji, pochopitelně vysvětleno.

 
Odpovědět
11.9.2016 22:36
Avatar
Zdenek
Člen
Avatar
Zdenek:17.9.2016 21:22

Ahojte, prosím o pomoc. Snažím se rozchodit formulář, ale někde asi dělám chybu. Mám stažené odtud soubory, ale nefunguje mi přidávání jmen do databáze. Výsledek je:

Editováno 17.9.2016 21:23
 
Odpovědět
17.9.2016 21:22
Avatar
Zdenek
Člen
Avatar
Odpovídá na Zdenek
Zdenek:18.9.2016 7:39

Tady je stažený zdroják:

<!DOCTYPE html>
<html lang="cs-cz">

<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>Registrace uživatele</title>
</head>

<body>

<h1>Registrace uživatele</h1>

<?php

require_once('Db­.php');
Db::connect('127­.0.0.1', 'databaze_pro_web', 'root', '');
if ($_POST)
{
$datum = date("Y-m-d H:i:s", strtotime($_POS­T['datum_naro­zeni']));
Db::query('
INSERT INTO uzivatele (jmeno, prijmeni, datum_narozeni)
VALUES (?, ?, ?)
', $_POST['jmeno'], $_POST['prijmeni'], $datum);

echo('<p>Byl jste úspěšně zaregistrován­.</p>');
}
?>

<form method="post">
Jméno:<br />
<input type="text" name="jmeno" /><br />
Příjmení:<br />
<input type="text" name="prijmeni" /><br />
Datum narození:<br />
<input type="text" name="datum_na­rozeni" /><br />
<input type="submit" value="Registrovat" />
</form>

</body>
</html>

Editováno 18.9.2016 7:41
 
Odpovědět
18.9.2016 7:39
Avatar
Vít Vohralík:11.10.2016 17:07

Mám to úplně přesně napsaný jako tady ale nefunguje mi to. Píše to tuto chybu:

Odpovědět
11.10.2016 17:07
Work hard, dream big.
Avatar
Jan Lupčík
Tvůrce
Avatar
Odpovídá na Vít Vohralík
Jan Lupčík:11.10.2016 17:22

Nemáš vytvořenou databázi 'databaze_pro_web'.

Odpovědět
11.10.2016 17:22
TruckersMP vývojář
Avatar
Odpovědět
11.10.2016 18:07
Work hard, dream big.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 104.