| Autor | Zpráva | ||
|---|---|---|---|
| janberka Profil * |
#1 · Zasláno: 11. 5. 2013, 23:06:50
Ahoj,
mám problém s ukládáním dat z formuláře do databázi. Vždy mě to přesměruje na stránku formuláře a vypíše mnou zavedenou chybovou hlášku. Kód už jsem 2x zkoušel napsat od znova. Prosím o radu. Tady je kód stránky s uložením: <?php
//začátek kontroly přihlášení
session_start();
$prava1 = $_SESSION['prava'];
$login1 = $_SESSION['login'];
$pass1 = $_SESSION['pass'];
$idc1 = $_SESSION['idc'];
if ($prava1 == '' && $login1 == '' && $pass1 == '' && $idc1 == '') {
$_SESSION['nc'] = '0';
header('location:index.php');
}
else {
$_SESSION['prava'] = $prava1;
$_SESSION['login'] = $login1;
$_SESSION['pass'] = $pass1;
$_SESSION['idc'] = $idc1;
}
//konec kontroly přihlášení
//výpis dat přijatých z formuláře do proměnných
$name = $_POST['name'];
$surname = $_POST['surname'];
$abbreviationu = $_POST['abbreviationu'];
$pohlavi = $_POST['pohlavi'];
$dateb = $_POST['dateb'];
$rc = $_POST['rc'];
$adresa = $_POST['adresa'];
$tel = $_POST['tel'];
$email = $_POST['email'];
$funkce = $_POST['funkce'];
$odkdy = $_POST['odkdy'];
$login = $_POST['login'];
$pass = $_POST['pass'];
$passr = $_POST['passr'];
$titul = $_POST['titul'];
$aprobace = $_POST['aprobace'];
$auth = rand(10000,99999);
if($funkce == 'reditel')
$prava = 'a';
elseif($funkce == 'zasreditel')
$prava = 'b';
elseif($funkce == 'ucitel')
$prava = 'd';
elseif($funkce == 'adminprc')
$prava = 'e';
elseif($funkce == 'ekonom')
$prava = 'f';
//konec výpisu dat přijatých z formuláře do proměnných
//vkládání dat do databáze
include 'connect.php';
mysql_select_db('data');
mysql_query("SET NAMES 'utf8' COLLATE 'utf8_czech_ci'");
$dotaz = mysql_query ("INSERT * VALUES INTO users VALUES ('','','$abbreviationu','$name','$surname','$titul','$pohlavi','$dateb','$rc','$adresa','$login','$pass','$funkce','$prava','$email','$tel','$odkdy','$dokdy','$auth','$aprobace')");
if (!$dotaz) {
$_SESSION['ni'] = '1';
header('location: new-teacher.php');
}
?> |
||
| Lamicz Profil |
#2 · Zasláno: 12. 5. 2013, 02:32:39
janberka:
Pleteš si SELECT a INSERT syntaxi - viz MySQL manuál |
||
| Tori Profil |
#3 · Zasláno: 12. 5. 2013, 06:48:46
A chybí escapování dat, která vkládáte do DB (bez toho vám jediný apostrof ve formuláři způsobí, že SQL dotaz selže).
|
||
| janberka Profil * |
#4 · Zasláno: 14. 5. 2013, 17:55:14
I když jsem upravil tu chybu v syntaxi nefunguje to.
|
||
| Tori Profil |
#5 · Zasláno: 14. 5. 2013, 18:15:35
janberka:
Hlásí to někde nějakou chybu? Zobrazil jste si výsledný SQL dotaz, jestli je v pořádku? Projde podmínka na ř.55? Pokud ne a nepřesměruje se, nechte si mysql_error vypsat chybu. Když nic z toho nepomůže, ukažte nejnovější verzi kódu. |
||
| janberka Profil * |
#6 · Zasláno: 15. 5. 2013, 08:27:52 · Upravil/a: janberka
Chybu to nehlásí. Podmínku na ř. 55 neprojde (přesměruje se na str. new-teacher.php kde vypíše mojí nastavenou chybovou hlášku). Neuloží se to do Databáze.
<?php
//začátek kontroly přihlášení
session_start();
$prava1 = $_SESSION['prava'];
$login1 = $_SESSION['login'];
$pass1 = $_SESSION['pass'];
$idc1 = $_SESSION['idc'];
if ($prava1 == '' && $login1 == '' && $pass1 == '' && $idc1 == '') {
$_SESSION['nc'] = '0';
header('location:index.php');
}
else {
$_SESSION['prava'] = $prava1;
$_SESSION['login'] = $login1;
$_SESSION['pass'] = $pass1;
$_SESSION['idc'] = $idc1;
}
//konec kontroly přihlášení
//výpis dat přijatých z formuláře do proměnných
$name = $_POST['name'];
$surname = $_POST['surname'];
$abbreviationu = $_POST['abbreviationu'];
$pohlavi = $_POST['pohlavi'];
$dateb = $_POST['dateb'];
$rc = $_POST['rc'];
$adresa = $_POST['adresa'];
$tel = $_POST['tel'];
$email = $_POST['email'];
$funkce = $_POST['funkce'];
$odkdy = $_POST['odkdy'];
$login = $_POST['login'];
$pass = $_POST['pass'];
$passr = $_POST['passr'];
$titul = $_POST['titul'];
$aprobace = $_POST['aprobace'];
$auth = rand(10000,99999);
if($funkce == 'reditel')
$prava = 'a';
elseif($funkce == 'zasreditel')
$prava = 'b';
elseif($funkce == 'ucitel')
$prava = 'd';
elseif($funkce == 'adminprc')
$prava = 'e';
elseif($funkce == 'ekonom')
$prava = 'f';
//konec výpisu dat přijatých z formuláře do proměnných
//vkládání dat do databáze
include 'connect.php';
mysql_select_db('data');
mysql_query("SET NAMES 'utf8' COLLATE 'utf8_czech_ci'");
$dotaz = mysql_query ("INSERT INTO users VALUES ('','','$abbreviationu','$name','$surname','$titul','$pohlavi','$dateb','$rc','$adresa','$login','$pass','$funkce','$prava','$email','$tel','$odkdy','$dokdy','$auth','$aprobace')");
if (!$dotaz) {
$_SESSION['ni'] = '1';
header('location: new-teacher.php');
}
else {
$_SESSION['ni'] = '0';
header('location: new-teacher.php');
}
?> |
||
| ts_istudio Profil |
#7 · Zasláno: 15. 5. 2013, 08:38:57 · Upravil/a: ts_istudio
janberka:
Doporučuji při INSERTu uvádět sloupce tabulky, tzn. INSERT INTO users (jmeno, prijmeni, funkce) VALUES ('Adam', 'Bernau', 'matematik')Ušetří to spoustu času při hledání podobných nefunkčností. A taky je dobré neposílat dotazy do databáze rovnou, ale složit si je v proměnné, protože ta se dá při hledání chyb jednoduše vypsat. Takže místo $dotaz = mysql_query ("INSERT INTO ... používat
$q = "INSERT INTO ..."; // echo $q; $dotaz = mysql_query ($q); Tento konkrétní problém to samozřejmě nijak neřeší, jen je to dle mého užitečný návyk. |
||
| janberka Profil * |
#8 · Zasláno: 15. 5. 2013, 11:25:33
Děkuju moc všem za pomoc hlavně ts_istudio. Když jsem udal ty sloupce našel jsem tam chyby a skript už mi funguje. Opravdu moc děkuju.
|
||
|
Časová prodleva: 12 let
|
|||
0