Diskuze: Kniha návštěv

PHP PHP Kniha návštěv American English version English version

Avatar
lukas.sei
Člen
Avatar
lukas.sei:

Čaute,
Snažím se udělat knihu návštěv podle návodu tady.
Celý můj kód vypadá takto: (je to jen nejjednodušší verze bez stylu)

<?php
function zabezpec($retezec)
{
global $spojeni;
return mysql_real_escape_string($retezec,$spojeni);
}
require('Db.php');
Db::connect('127.0.0.1', 'test', 'root', '');

if ($_POST)
{
    mysql_query("INSERT INTO nkniha VALUES (NULL, CURDATE(), '"
            .zabezpec($_POST['jmeno'])."', '"
            .zabezpec($_POST['vzkaz'])."')",$spojeni);
header('Location: index.php');
        exit();
        }
        ?>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <h5>Nebo použíjte tento formulář.</h5>
    <form method="post">Vaše přezdívka:<br />
    <input maxlength="30" name="jmeno" size="30" type="text" /><br />
    Pokud nepříjde uveďte důvod.:<br />
    <textarea cols="50" name="vzkaz" rows="7" wrap="soft"></textarea><br />
    <input type="submit" value="Ulož do knihy" /></form>
    </body>
</html>

Celý kód proběhne bez jediného problému. Ale když se podívám do phpmyadmin, zjistím, že se mi do tabulky nic nevepsalo.
Mohl by mi někdo poradit ?

 
Odpovědět 6. února 20:29
Avatar
IT Man
Redaktor
Avatar
Odpovídá na lukas.sei
IT Man:
  1. Proč globální proměnná?
  2. Proč mysql_query()? Je zde 1 000 tutoriálů používající PDO a uvádějící ho. V nové PHP verzi bylo už i odebráno to tvé mysql_query().
  3. Ty se připojíš přes třídu a pak použiješ mysql_query(). Používej jenom třídu Db.

K problému. Neměl bys uvést v INSERT u tabulky i názvy sloupců?

Nahoru Odpovědět 6. února 21:10
Když nevíš jak dál, podá ti ruku někdo, od koho by jsi to nečekal. A tu šanci musíš přijmout!
Avatar
Martin Konečný (pavelco1998):

Dotaz - takový návod je někde tady na itnetwork? pokud jo, pak by možná nebylo špatné trochu obsah zaktualizovat, aby to nevedlo ke špatným návykům.

K problému. Jak psal IT Man, jen si zkontroluj, jestli vkládáš správný počet těch hodnot. Vypisovat sloupce nemusíš, pokud ovšem napíšeš všechny hodnoty. Pokud máš některé hodnoty ve sloupcích defaultní a nevložíš je do dotazu, pak ti to nepojede

 
Nahoru Odpovědět 6. února 22:11
Avatar
lukas.sei
Člen
Avatar
lukas.sei:

Omlouvám se moc jsem spoléhal na to, že to tu na webu je správně. Po úpravě už to jede jak má.
Nový kód:

require('Db.php');
Db::connect('127.0.0.1', 'test', 'root', '');

if ($_POST)
{
    Db::query('
                        INSERT INTO nkniha (autor, obsah)
                        VALUES (?, ?)
                        ', $_POST['jmeno'], $_POST['vzkaz']);
header('Location: index.php');
        exit();
        }
        ?>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <h5>Nebo použíjte tento formulář.</h5>
    <form method="post">Vaše přezdívka:<br />
    <input maxlength="30" name="jmeno" size="30" type="text" /><br />
    Pokud nepříjde uveďte důvod.:<br />
    <textarea cols="50" name="vzkaz" rows="7" wrap="soft"></textarea><br />
    <input type="submit" value="Ulož do knihy" /></form>
    </body>
</html>

Jinak ano ten návod je tady na webu:
http://www.itnetwork.cz/…azi-tutorial

 
Nahoru Odpovědět 7. února 6:44
Avatar
IT Man
Redaktor
Avatar
Odpovídá na lukas.sei
IT Man:

Jestli se nepletu, ve třídě Db je i statická metoda insert(). Zkus se na ni podívat či na zdejší tutoriály, které ji používají (např. NERS). :)

Nahoru Odpovědět 7. února 7:34
Když nevíš jak dál, podá ti ruku někdo, od koho by jsi to nečekal. A tu šanci musíš přijmout!
Avatar
IT Man
Redaktor
Avatar
Odpovídá na IT Man
IT Man:

Btw. pokud používáš zdejší třídu Db bez úpravy, hodnoty by měly být v poli. :)

Db::query('
    INSERT INTO nkniha (autor, obsah)
    VALUES (?, ?)
', array($_POST['jmeno'], $_POST['vzkaz']));
Nahoru Odpovědět 7. února 7:42
Když nevíš jak dál, podá ti ruku někdo, od koho by jsi to nečekal. A tu šanci musíš přijmout!
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 6 zpráv z 6.