Avatar
pgarsky
Člen
Avatar
pgarsky:

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. července 20:15
 
Odpovědět 30. července 20:13
Avatar
Oxtimus
Člen
Avatar
Oxtimus:

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

 
Nahoru Odpovědět  +1 30. července 20:15
Avatar
pgarsky
Člen
Avatar
Odpovídá na Oxtimus
pgarsky:

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

 
Nahoru Odpovědět 30. července 20:16
Avatar
IT Man
Redaktor
Avatar
Odpovídá na pgarsky
IT Man:

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  +3 30. července 20:57
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 4 zpráv z 4.