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
Máš tam někde nastaven primární nebo unikátní klíč a snažíš se vkládat hodnotu, která tam už jednou je.
Demoniak
Profil
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
Demoniak
Sám musíš vědět, proč ho tam máš.
Joker
Profil
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
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é :-)

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0