NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
Avatar
lukas.sei
Člen
Avatar
lukas.sei:6.2.2016 20:29

Č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.2.2016 20:29
Avatar
Jan Lupčík
Tvůrce
Avatar
Odpovídá na lukas.sei
Jan Lupčík:6.2.2016 21:10
  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.2.2016 21:10
TruckersMP vývojář
Avatar
Martin Konečný (pavelco1998):6.2.2016 22:11

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.2.2016 22:11
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
lukas.sei
Člen
Avatar
lukas.sei:7.2.2016 6:44

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.2.2016 6:44
Avatar
Jan Lupčík
Tvůrce
Avatar
Odpovídá na lukas.sei
Jan Lupčík:7.2.2016 7:34

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.2.2016 7:34
TruckersMP vývojář
Avatar
Jan Lupčík
Tvůrce
Avatar
Odpovídá na Jan Lupčík
Jan Lupčík:7.2.2016 7:42

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.2.2016 7:42
TruckersMP vývojář
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.