Diskuze: Problém s nahrátím formuláře do databáze
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 10 zpráv z 10.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Ahoj, za
<?php
session_start();
require('database.php');
Db::connect('mysql.tld.cz', 'databaze', 'uzivatel', 'heslo-databaze');
if ($_POST)
{
if ($_POST['rok'] != date('Y'))
else
{
Db::query('
INSERT INTO restaurace (nazev, typ, ulice, mesto, web, telefon, email, oteviracidoba, rozvoz, cenarozvozu, cenajidlo, dobarozvozu, newsletter, podminky)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
', $_POST['nazev'], $_POST['typ'], $_POST['ulice'], $_POST['mesto'], $_POST['web'], $_POST['telefon'], $_POST['email'], $_POST['oteviracidoba'], $_POST['rozvoz'], $_POST['cenarozvozu'], $_POST['cenajidlo'], $_POST['dobarozvozu'], $_POST['newsletter'], $_POST['podminky'];
$_SESSION['uzivatele_id'] = Db::getLastId();
$_SESSION['nazev'] = $_POST['nazev'];
$_SESSION['typ'] = $_POST['typ'];
$_SESSION['ulice'] = $_POST['ulice'];
$_SESSION['mesto'] = $_POST['mesto'];
$_SESSION['web'] = $_POST['web'];
$_SESSION['telefon'] = $_POST['telefon'];
$_SESSION['email'] = $_POST['email'];
$_SESSION['oteviracidoba'] = $_POST['oteviracidoba'];
$_SESSION['rozvoz'] = $_POST['rozvoz'];
$_SESSION['cenarozvozu'] = $_POST['cenarozvozu'];
$_SESSION['cenajidlo'] = $_POST['cenajidlo'];
$_SESSION['dobarozvozu'] = $_POST['dobarozvozu'];
$_SESSION['newsletter'] = $_POST['newsletter'];
$_SESSION['podminky'] = $_POST['podminky'];
exit();
}
}
}
?>
K Tomu mám proprárovaný soubor database.php
<?php
class Db
{
private static $connection;
private static $options = array(
PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING,
PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8",
PDO::ATTR_EMULATE_PREPARES => false,
);
public static function connect($host, $database, $user, $password)
{
if (!isset(self::$connection)) {
$dsn = "mysql:host=$host;dbname=$database";
self::$connection = new PDO($dsn, $user, $password, self::$options);
}
}
private static function executeStatement($params)
{
$query = array_shift($params);
$statement = self::$connection->prepare($query);
$statement->execute($params);
return $statement;
}
public static function query($query) {
$statement = self::executeStatement(func_get_args());
return $statement->rowCount();
}
public static function querySingle($query) {
$statement = self::executeStatement(func_get_args());
$data = $statement->fetch();
return $data[0];
}
public static function queryOne($query) {
$statement = self::executeStatement(func_get_args());
return $statement->fetch(PDO::FETCH_ASSOC);
}
public static function queryAll($query) {
$statement = self::executeStatement(func_get_args());
return $statement->fetchAll(PDO::FETCH_ASSOC);
}
public static function insert($table, $data) {
$keys = array_keys($data);
self::checkIdentifiers(array($table) + $keys);
$query = "
INSERT INTO $table (" . implode(', ', $keys) . ")
VALUES (" . str_repeat('?,', count($data) - 1) . "?)
";
$params = array_merge(array($query), array_values($data));
$statement = self::executeStatement($params);
return $statement->rowCount();
}
public static function update($table, $data, $condition) {
$keys = array_keys($data);
self::checkIdentifiers(array($table) + $keys);
$query = "
UPDATE $table SET `".
implode('` = ?, ', array_keys($data)) . " = ?
$condition
";
$params = array_merge(array($query), array_values($data), array_slice(func_get_args(), 3));
$statement = self::executeStatement($params);
return $statement->rowCount();
}
public static function getLastId()
{
return self::$connection->lastInsertId();
}
public static function quote($string)
{
return self::$connection->quote($string);
}
private static function checkIdentifiers($identifiers)
{
foreach ($identifiers as $identifier)
{
if (!preg_match('/^[a-zA-Z0-9\_\-]+$/u', $identifier))
throw new Exception('Dangerous identifier in SQL query');
}
}
}
?>
Zregidoval jsem všechny závorky a pořád to nefunguje, teď to mám tak:
<?php
session_start();
require('database.php');
Db::connect('mysql.domain.tld', 'databaze', 'uzivatel', 'heslo');
if ($_POST)
{
if ($_POST['rok'] != date('Y'))
}
else
{
Db::query('
INSERT INTO restaurace (nazev, typ, ulice, mesto, web, telefon, email,
oteviracidoba, rozvoz, cenarozvozu, cenajidlo, dobarozvozu, newsletter,
podminky)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
', $_POST['nazev'], $_POST['typ'], $_POST['ulice'], $_POST['mesto'],
$_POST['web'], $_POST['telefon'], $_POST['email'], $_POST['oteviracidoba'],
$_POST['rozvoz'], $_POST['cenarozvozu'], $_POST['cenajidlo'],
$_POST['dobarozvozu'], $_POST['newsletter'], $_POST['podminky'];
$_SESSION['uzivatele_id'] = Db::getLastId();
$_SESSION['nazev'] = $_POST['nazev'];
$_SESSION['typ'] = $_POST['typ'];
$_SESSION['ulice'] = $_POST['ulice'];
$_SESSION['mesto'] = $_POST['mesto'];
$_SESSION['web'] = $_POST['web'];
$_SESSION['telefon'] = $_POST['telefon'];
$_SESSION['email'] = $_POST['email'];
$_SESSION['oteviracidoba'] = $_POST['oteviracidoba'];
$_SESSION['rozvoz'] = $_POST['rozvoz'];
$_SESSION['cenarozvozu'] = $_POST['cenarozvozu'];
$_SESSION['cenajidlo'] = $_POST['cenajidlo'];
$_SESSION['dobarozvozu'] = $_POST['dobarozvozu'];
$_SESSION['newsletter'] = $_POST['newsletter'];
$_SESSION['podminky'] = $_POST['podminky'];
exit();
)
}
?>
za podmínkou if musí následovat kus kódu po splnění nebo alespoň prázdné závorky toto ti fungovat nebude
if ($_POST['rok'] != date('Y'))
}
musí to být takto
if ($_POST['rok'] != date('Y'))
{
//zde se má něco stát
}
nebo takto
if ($_POST['rok'] != date('Y'))
//zde se má něco stát
I když to upravím tak to pořád nejde, ale dík za pomoc.
Tahle závorka u if byla jedna chyba a druhou máš zde
Db::query('
INSERT INTO restaurace (nazev, typ, ulice, mesto, web, telefon, email, oteviracidoba, rozvoz, cenarozvozu, cenajidlo, dobarozvozu, newsletter, podminky)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
', $_POST['nazev'], $_POST['typ'], $_POST['ulice'], $_POST['mesto'], $_POST['web'], $_POST['telefon'], $_POST['email'], $_POST['oteviracidoba'], $_POST['rozvoz'], $_POST['cenarozvozu'], $_POST['cenajidlo'], $_POST['dobarozvozu'], $_POST['newsletter'], $_POST['podminky'];
není to ukončené... takže to oprav na
..., $_POST['podminky']);
používej nějaký IDE, který ti takové chyby nahlásí.
Zobrazeno 10 zpráv z 10.