Autor Zpráva
martin5504
Profil
Ahojte, prosim vas potrebujem malicku radu urobil som si jednoduchu funkciu pri ktorej sa neda registrovat ak uz v DB napr. meno alebo email uz zapisane je, bohuzial ked sa registrujem stale vypisuje, ze uz taky zaznam existuje ale neexistuje. Co som urobil zle? Vopred diki.

$overenie = mysqli_query($con,"SELECT * FROM users WHERE user= '$user' OR email = '$email' ");
 
if(mysqli_num_rows($overenie) != '0'){ echo "<br />Zvolené uživ. meno alebo e-mail je už použité.
<p>[<a href='registracia'>Vrátiť sa naspäť</a>]</p>
"; }else{ 
sorry
Profil *
Záleží na tom kde mas daný zápis do db. Tady nikde není uvedenej :-)
Micruss
Profil
tipnul bych, že je chyba v tom != '0', zkus bez uvozovek
juriad
Profil
Není to náhodou tím, že nejsou povolené Regsiter globals? Odkud se berou proměnné $user a $email?
Zkus si je před dotazem vypsat a zkontroluj, že obsahují to co mají.

Micruss:
Přestože je to prasárna, tohle PHP zvládne.
martin5504
Profil
Ono to orig. bolo v mysql avsak ja to chcem zmenit na mysqli. Hodim vam sem cely kod.

<?php  
       
$heslo_ov = md5($_POST['heslo_ov']);   
$user = $_POST['user'];
$meno = $_POST['meno'];
$priezvisko = $_POST['priezvisko'];
$telefon = $_POST['telefon'];
$ulica = $_POST['ulica'];
$mesto = $_POST['mesto'];
$psc = $_POST['psc'];
$stat = $_POST['stat'];
$heslo = md5($_POST['heslo']);
$heslo2 = ($_POST['heslo']);       
$email = $_POST['email']; 
$con= mysqli_connect("localhost","root","heslo","meno");
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }        
    

$overeni = mysqli_query($con,"SELECT * FROM users WHERE user= '$user' OR email = '$email' ");
 
if(mysqli_num_rows($overeni) != '0'){ echo "<br />Zvolené uživ. meno alebo e-mail je už použité.
<p>[<a href='registracia'>Vrátiť sa naspäť</a>]</p>
"; }else{ 
         

$sql="INSERT INTO users (user, password, email, osoba, meno, priezvisko, firma, telefon, ulica, mesto, psc, stat, ic, dic)
VALUES
('$_POST[user]','$heslo','$_POST[email]','$_POST[osoba]','$_POST[meno]','$_POST[priezvisko]','$_POST[firma]','$_POST[telefon]','$_POST[ulica]','$_POST[mesto]','$_POST[psc]','$_POST[stat]','$_POST[ic]','$_POST[dic]')";

if($user == false || $heslo == false || $heslo_ov == false || $email == false || $meno == false || $priezvisko == false || $telefon == false || $ulica == false || $mesto == false || $psc == false || $stat == false){
echo '<br />Vaša registrácia je neúspešná, nezadali ste všetky potrebné údaje, skúste to znovu prosím.

<p>[<a href="registracia">Vrátiť sa naspäť</a>]</p>
';
}
 
 
 
else{
if($heslo != $heslo_ov){
echo 'Vaša registrácia je neúspešná.<br>';
echo 'Heslá sa nezhodujú.';
 
}else{
 
      
if (!mysqli_query($con,$sql))
  {
  die('Error: ' . mysqli_error($con));
  }
echo "<br /> Registrácia bola úspešná.
<p>Na zadaný e-mail vám boli odoslané všetky údaje.</p>
<p>[<a href='index.php'>Vrátiť sa na prihlásenie</a>]</p>
";
}   
}
mysqli_close($con);
}
?>                 
lionel messi
Profil
Možno som mimo, ale neberie funkcia mysqli_query 2 povinné parametre?
Pardon, určite som mimo, nevšimol som si, že martin5504 všade má 2 parametre
martin5504
Profil
Ja som dlho pracoval so starym MySQL a teraz mi MySQLi trošku robí problémy aby som to premenil na mysqli.
Tori
Profil
martin5504:
Tady musí být číslo nula, ne řetězec:
mysqli_num_rows($overeni) != 0) Pokud SQL dotaz selže, tak porovnání s řetězcem vyjde stejně, jako kdyby to nějaké záznamy našlo. (A asi logičtější by bylo porovnávat mysqli_num_rows($overeni) > 0).)
Okolojdouci
Profil *
martin5504:
Nějak jsi zapomněl escapovat data, které vkládáš do databáze. Možná by jsi měl jednodušší použít nějakou knihovnu, třeba dibi.

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:

0