Autor Zpráva
Pavel7789
Profil *
Dobry den,

chtel bych se zeptat, kde mam chybku (nebo spise jak toto resit) jsem s php celkem zacatecnik, ale tohle mi nejde do hlavy..
mam jednoduchy skript na registraci uzivatelu:
<?php
$tab_uzivatele          =          "uzivatele";
//registrace uzivatelu 
function user_register($username, $password)
{
     // zasifruje heslo
     $encrypted = md5($password);

     // ulozi data do databaze
     $query = mysql_query("INSERT INTO ".$tab_uzivatele." (id, login, password) values ('','$username', '$encrypted')") or die("MySQL ERROR: ".mysql_error());
}
?>

ovsem nefunguje mi tak jak by mel.. problem je s tabulkou.. hned na 1. radku muzete videt, ze promenou tab_uzivatele definji (ve skutecnosti ji definuji v jinem souboru, ktery includuji ale to neni zas tak podstatne) a neustale mi to vypisuje chybu:
MySQL ERROR: 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 '(id, login, password) values ('','tom', 'd9a54c1938d7a5ea1c95098182744bc3')' at line 1

kdyz v mysql dotazu zmenim ".$tab_uzivatele." na uzivatele (jak se tabulka jmenuje) tak mi to vse vykova v poradku... je tedy problem v definici tabulky predpokladam.. ale proc? nemuzu definovat nejakou promenou mimo funkci a pote ji ve funkci pouzit? jelikoz vsechny nazvy tabulek mam ulozene v config.php (i s pripojenim k db).. =o/
Pavel7789
Profil *
aha :) tak jsem to pochopil, ono staci definovat tu tabulku pri "volani fce".. tedy nejak takto:
user_register ($_POST['username'], $_POST['password'], $tab_uzivatele);

a pote funkce bude samozrejme takto:
function user_register($username, $password, $table)

ale nastava problem, ze pri pri duplicitnim loginu (porovnavam vlozeny login z formulare se vsemi v databazi) jsem chtel definovat:
<?php
//registrace uzivatelu 
function user_register($username, $password, $table)
{
    //zjistime, zda jiz tento login neni v databazi ulozen.. kdyz ano presmerujeme na stranku kde to sdelime
    $DuplicitaLoginu = mysql_query("SELECT `login` FROM `$table` WHERE `login`='$username'") or die("MySQL ERROR: ".mysql_error());
    while ($vypis = mysql_fetch_array($DuplicitaLoginu)){
    $DuplicitniLogin = stripslashes(htmlspecialchars($vypis['login']));}
    
    if($DuplicitniLogin==$username){
    $chyba = "DuplicitniLogin";    
    }else{

     // zasifruje heslo
     $encrypted = md5($password);
      
     // ulozi data do databaze
     $query = mysql_query("INSERT INTO `".$table."` (id, login, password) values ('','$username', '$encrypted')") or die("MySQL ERROR: ".mysql_error());
}}
?>

a pote nekde jinde v kodu pouzit podminku, ze kdyz $chyba = DuplicitniLogin tak to vypise neco a neco... ovsem nefunguje mi to =o/ zase je ta promena chyba definovana jen v ramci funkce?? je nejaka moznost jak po volani funkce predat tuto promenou dal na stranku tak, abych s ni mohl pracovat?
Kajman_
Profil *
je nejaka moznost jak po volani funkce predat tuto promenou dal na stranku tak, abych s ni mohl pracovat?
Např. může např. vrátit text.
return $chyba;

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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