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!

Diskuze: Script - registrace

V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
pgarsky
Člen
Avatar
pgarsky:30.7.2016 20:13

Ahoj, snažím se naprogramovat vlastní script, který vlastně je jako registrace. Co má udělat? Zkrátka uživatel když příjde a zaregistruje se na webu, jeho údaje se uloží do MySQL a na jeho mail se mu odešle zpráva s jeho jménem a heslem. Na databázi se napojuji pomocí wrapperu, který mám z této stránky.
Kód index.php:

<!DOCTYPE html>
    <html lang="cs-cz">
<head>
    <meta http-equiv="content-type" content="text/html charset=utf-8">
    <title>Registrace nového člena</title>
</head>
<body>
<h1>Registrace nového člena</h1>
<?php
mb_internal_encoding('UTF-8');
require_once('Db.php');
Db::connect('wm116.wedos.net', '/* skryto/*', '/* skryto/*', '/* skryto/*');
if ($_POST)
Db::query('
INSERT INTO uzivatele (jmeno, prijmeni, prezdivka, heslo, email)
VALUES (?, ?, ?, ?, ?, ?)
', $_POST['jmeno'], $_POST['prijmeni'], $_POST['prezdivka'], $_POST['heslo'], $_POST['email']);
$prezdivka = Db::queryAll('
SELECT prezdivka
FROM uzivatele
');
$heslo = Db::queryAll('
SELECT heslo
FROM uzivatele
');
$hlavicka = 'From: ' . 'Soft-Box';
$hlavicka .= "Content-type: text/html; charset=\"utf-8\"\n";
$email = $_POST['email'];
$predmet = 'Registrace na Soft-Boxu - Děkujeme!';
$zprava = 'Dobrý den, rádi bychom Vás informovali o registraci na stránce Soft-Box. <br />Jméno: $prezdivka <br />Heslo: $heslo';
mb_send_mail($email, $predmet, $zprava, $hlavicka);
?>
<form method="post">
    Jméno:<br />
    <input name="jmeno" type="text"><br />
Přijmení:<br />
    <input name="prijmeni" type="text"><br />
Přezdívka:<br />
    <input name="prezdivka" type="text"><br />
Heslo:<br />
    <input name="heslo" type="password"><br />
Email:<br />
    <input name="email" type="email"><br />
    <br />
    <input type="submit" value="Registrace!">
</form>
</body>
</html>

Zde je chybová hláška, kterou mi to neustále vyhazuje:
Warning: PDO::prepare(): SQLSTATE[21S01]: Insert value list does not match column list: 1136 Column count doesn't match value count at row 1 in /data/web/vir­tuals/131990/vir­tual/www/Db.php on line 41

Fatal error: Call to a member function execute() on boolean in /data/web/vir­tuals/131990/vir­tual/www/Db.php on line 42
V příloze je obrázek tabulky v MySQL (PhpMyAdmin)

Děkuji všem předem za pomoc a ochotu.

Editováno 30.7.2016 20:15
Odpovědět
30.7.2016 20:13
Pokud ti něco jde těžko, znamená to, že jdeš tou správnou cestou...
Avatar
Michal
Člen
Avatar
Michal:30.7.2016 20:15

Není to tím, že v SQL dotazu máš 6 otazníků a dosazuješ pouze 5 hodnot?

 
Nahoru Odpovědět
30.7.2016 20:15
Avatar
pgarsky
Člen
Avatar
Odpovídá na Michal
pgarsky:30.7.2016 20:16

Není, ID má být zaznamenáváno automaticky, je to tam nastavený

Nahoru Odpovědět
30.7.2016 20:16
Pokud ti něco jde těžko, znamená to, že jdeš tou správnou cestou...
Avatar
Jan Lupčík
Tvůrce
Avatar
Odpovídá na pgarsky
Jan Lupčík:30.7.2016 20:57

Je to tím. A pokud ne, stejně mají být hodnoty v poli. Takže ty data z formuláře ($_POST) obal array().

Nahoru Odpovědět
30.7.2016 20:57
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 4 zpráv z 4.