Válí se ti projekty v šuplíku? Dostaň je mezi lidi a získej cool tričko a body na profi IT kurzy v soutěži ITnetwork summer 2017!
Přidej si svou IT školu do profilu a najdi spolužáky zde na síti :)

Diskuze: Script - registrace

PHP PHP Script - registrace American English version English version

Aktivity (1)
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 Struna: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  +1 30.7.2016 20:15
Avatar
pgarsky
Člen
Avatar
Odpovídá na Michal Struna
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
IT Man
Redaktor
Avatar
Odpovídá na pgarsky
IT Man: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  +3 30.7.2016 20:57
Cokoliv a kdokoliv může jednou uspět.
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.