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: 11 let
|
0