Autor | Zpráva | ||
---|---|---|---|
Demoniak Profil |
Dobrý den, mám tu další problém:
<?php ob_start(); // cachujeme vystup if(isset($_POST['sent'])){ // pokud byl odeslan formular pokracuj timto $jmeno=trim($_POST['jmeno']); $heslo1=$_POST['heslo1']; $heslo2=$_POST['heslo2']; $class=trim($_POST['class']); $icq=trim($_POST['icq']); $mail=trim($_POST['mail']); if($jmeno=="" or $heslo1=="" or $mail==""){ // pokud nebylo vyplněno něco z toho, co je povinné, dáme vědět a skript ukončíme $backlink="index.php?page=registrace&Alert=1"; }else{ // povinné udaje vyplněny vsechny require "db.php"; // pripojime se k databazi $PocetStejnych=mysql_result(mysql_query("SELECT COUNT(*) FROM `members` WHERE `jmeno`='$jmeno' OR `mail`='$mail'"), 0); if($PocetStejnych!=0){ // pokud v db je jiz takove jmeno nebo heslo... $backlink="index.php?page=registrace&Alert=2"; }elseif($heslo1 != $heslo2){ // pokud se hesla nerovnají $backlink="index.php?page=registrace&Alert=3"; }else{ // hesla se shoduji, vlozime tedy data do databaze $heslo=md5($heslo1); // zahashujeme heslo if($class==""){ //pokud nezadal class tak dame promennou web prazdnou $class=""; } if($icq==""){ //pokud nezadal icq tak dame promennou web prazdnou $icq=""; } $VlozData=mysql_query("INSERT INTO members (jmeno,heslo,class,icq,mail,prava) VALUES ('$jmeno', '$heslo','$class','$icq', '$mail', '0')") or die (mysql_error()); // Vlozim do tabulky hodnoty - prvni je ID - nevyplnim, tvori se samo. // Jako posledni hodnota je "0", to jsou ty prava uzivatele. $backlink="index.php?Alert=4"; // presmerovani s hlaskou ze je vse OK } } }else{ $backlink="index.php?page=registrace&Alert=5"; } // pokud pouzijete HEADER LOCATION tak by pred nim nemelo byt zadne platne ECHO //echo "<a href='index.php'>index</a>"; // samozrejme zde muze byt presmerovani na jinou stranku pomoci header ("Location: $backlink"); ob_end_flush(); ?> je to script na registraci uživatelů na web. script normálně funguje i chybové hlášky ale kdyz script proběhne v pořádku, tak vypíše tuto chybu: Duplicate entry '0' for key 1 |
||
djlj Profil |
#2 · Zasláno: 4. 12. 2007, 10:10:07
Máš tam někde nastaven primární nebo unikátní klíč a snažíš se vkládat hodnotu, která tam už jednou je.
|
||
Demoniak Profil |
#3 · Zasláno: 4. 12. 2007, 10:20:52
to mi jako chceš říct, že všech 6 hodin neusálé práce bylo uplně zbytečné?...
nebude vadit, když ten klíč vypnu nebo tak? |
||
djlj Profil |
#4 · Zasláno: 4. 12. 2007, 10:32:54
Demoniak
Sám musíš vědět, proč ho tam máš. |
||
Joker Profil |
#5 · Zasláno: 4. 12. 2007, 11:33:51
Demoniak
Chyba spočívá v tom co píše djlj a je v tomhle dotazu: INSERT INTO members (jmeno,heslo,class,icq,mail,prava) VALUES ('$jmeno', '$heslo','$class','$icq', '$mail', '0') Tipnul bych, že sloupec prava je nastavený jako primární nebo unikátní klíč. Ale mohl by to být i nějaký jiný sloupec, možná class. Buď v daném sloupci mohou být stejné hodnoty, pak je špatně jeho nastavení jako unikátní v databázi, nebo tam stejné hodnoty být nesmí, pak se v PHP musí zajistit, aby tam nešly stejné hodnoty. |
||
Joker Profil |
#6 · Zasláno: 4. 12. 2007, 11:36:03
Mimochodem, když už je tu ten skript:
if($class==""){ //pokud nezadal class tak dame promennou web prazdnou $class=""; } if($icq==""){ //pokud nezadal icq tak dame promennou web prazdnou $icq=""; } ...tohle je docela ujeté :-) |
||
Časová prodleva: 16 let
|
0