Autor | Zpráva | ||
---|---|---|---|
master2222 Profil |
#1 · Zasláno: 6. 4. 2009, 22:08:19
Ahoj, udělal jsem si script na vkládání záznamů do db, ale nefunfuje... Nevím proč a tak se vás ptát, jestli nevidíte chybu. Po zádání povinných údajů(Jméno a text) mi to napíše, že sice operace proběhla v pořádku, ale nic to neudělá...
Index.php <!DOCTYPE HTML PUBLIC "-W3CDTD HTML 4.01 TransitionalEN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Komentář</title> </head> <body> <?php if(isset($_GET["ok"])) { echo "Operace proběhla úspěšně"; } if(isset($_GET["err"])) { echo "Někde se stala chyba"; } ?> <form action="uloz.php" method="post"> <table> <tr> <td>Jméno:</td><td><input type="text" name="user"></td> </tr> <tr> <td>E-mail:</td><td><input type="text" name="mail"></td> </tr> <tr> <td>Web:</td><td><input type="text" name="web"></td> </tr> <tr> <td>Text:</td><td><textarea type="text" name="text"></textarea></td> </tr> <tr> <td colspan="2"><input type="submit" value="Komentuj"></td> </tr> </table> </form> </body> </html> uloz.php <?php require_once "nastaveni.php"; if(!(MySQL_Connect("$DB_HOST","$DB_USER","$DB_PASS"))) { die("Nepodařilo se připojit k databázi"); } if(!(MySQL_Select_DB($DB_NAME))) { die("Databáze nebyla nalezena"); } // Ověření, zda komentující zadal povinné údaje jméno a text if(isset($_POST["user"]) && isset($_POST["text"])) { $user = $_POST["user"]; $mail = $_POST["mail"]; $web = $_POST["web"]; $text = $_POST["text"]; //Uložení komentáře do db MySQL_Query("INSERT INTO komentare2 VALUES ('','$user','$mail','$web','$text')"); header("Location:index.php?ok"); } else { header("Location:index.php?err"); } ?> nastaveni.php <?php $DB_HOST = "localhost"; $DB_USER = "root"; $DB_PASS = "???"; $DB_NAME = "root"; ?> tabulka Mysql CREATE TABLE komentare2 ( id_komentare TINYINT NOT NULL AUTO_INCREMENT PRIMARY KEY , user VARCHAR( 40 ) NOT NULL , mail VARCHAR( 50 ) NOT NULL , web VARCHAR( 50 ) NOT NULL, text TEXT NOT NULL ) ENGINE = innodb; Děkuji za všechny rady... |
||
panther Profil |
#2 · Zasláno: 6. 4. 2009, 22:19:52 · Upravil/a: panther
master2222
„if(isset($_GET["ok"]))“ nemělo by být: if(isset($_GET) and ($_GET == "ok")) ... |
||
nightfish Profil |
#3 · Zasláno: 6. 4. 2009, 22:20:23 · Upravil/a: nightfish
MySQL_Query("INSERT INTO komentare2 VALUES ('','$user','$mail','$web','$text')"); nahraď za MySQL_Query($q="INSERT INTO komentare2 VALUES ('','$user','$mail','$web','$text')") or Die("dotaz = $q<br>chyba = ".mysql_error()); a poděl se s námi o výsledek EDIT: a pro jistotu ještě zakomentuj ten první Header, aby se v případě chyby hned nepřesměrovalo pryč |
||
Tomasds Profil |
#4 · Zasláno: 6. 4. 2009, 22:21:55
Doporučil bych pro účely odladění vyhodit header("Location:index.php?ok"); a ten dotaz nad tím si nejdřív seskládat do proměnné .. $qry = "INSERT ... a tu proměnnou vypsat. Jestli tam neuvidíš žádný zřejmý problém, tak si zkus ten dotaz provést přímo phpmyadminem, kde se dozvíš o něco víc, než jen to, že se to nepodařilo.
Kromě toho doporučuji používat spíš tvar INSERT INTO table_name (column1, column2, column3,...) VALUES (value1, value2, value3,...) |
||
nightfish Profil |
#5 · Zasláno: 6. 4. 2009, 22:21:58
panther
nemělo... $_GET je pole pokud bude v URL ?ok tak je $_GET['ok'] správně |
||
master2222 Profil |
#6 · Zasláno: 6. 4. 2009, 22:33:58
Upravil jsem podle rad uloz.php takto
<?php require_once "nastaveni.php"; if(!(MySQL_Connect("$DB_HOST","$DB_USER","$DB_PASS"))) { die("Nepodařilo se připojit k databázi"); } if(!(MySQL_Select_DB($DB_NAME))) { die("Databáze nebyla nalezena"); } // Ověření, zda komentující zadal povinné údaje jméno a text if(isset($_POST["user"]) && isset($_POST["text"])) { $user = $_POST["user"]; $mail = $_POST["mail"]; $web = $_POST["web"]; $text = $_POST["text"]; // overeni, jestli uzivatel nebo mail uz v databazi neni //Uložení komentáře do db MySQL_Query($q="INSERT INTO komentare2 (user,mail,web,text) VALUES ($user, $mail, $web, $text) ") or Die("dotaz = $q<br>chyba = ".mysql_error()); } ?> A napsalo mi to toto dotaz = INSERT INTO komentare2 (user,mail,web,text) VALUES (Někdo, nekdo@nekde.cz, http://www.nekde.cz, Nějaký text...) chyba = You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '�kdo, nekdo@nekde.cz, http://www.nekde.cz, Nějaký text...)' at line 1 |
||
tane Profil |
#7 · Zasláno: 6. 4. 2009, 22:50:01
INSERT INTO komentare2 (user,mail,web,text) VALUES ('".$user."', '".$mail."', '".$web."', '".$text."') |
||
tiso Profil |
#8 · Zasláno: 7. 4. 2009, 01:35:14
tane - zbytočná úprava, nič to nevyrieši.
|
||
AM Profil * |
#9 · Zasláno: 7. 4. 2009, 08:11:21
„VALUES ($user, $mail, $web, $text)“
Vrať tam ty uvozovky, tohle je hrůza. V jakém kódování máš DB? podle toho <?> znaku v query typuju, že je nějaký problém s UTF8 |
||
master2222 Profil |
#10 · Zasláno: 7. 4. 2009, 16:48:02 · Upravil/a: master2222
Znaková sada v MySQL: UTF-8 Unicode (utf8)
Nenapsali by jste mi teda něco podobného, aby to fungovalo, jsem v koncích :-( |
||
khubajsn Profil * |
#11 · Zasláno: 7. 4. 2009, 18:35:39
mysql_query("SET NAMES UTF-8") |
||
AM_ Profil |
#12 · Zasláno: 7. 4. 2009, 19:27:14
„Nenapsali by jste mi teda něco podobného, aby to fungovalo, jsem v koncích :-(“
Kolik za to dáš? Radši si tam vrať ty uvozovky, bez kterých ti to rozhodně nepojede, a řekni, co ti to hází potom. |
||
Časová prodleva: 16 let
|
0