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