Ciao a tutti , sto un po' impazzendo su una query che non penso sia difficile da fare, ma e' tutto il giorno che programmo ed inizio a vedere stile Matrix.
Al solito ho una tabella nel mio db che tiene conto di alcuni dati degli utenti, come username, password, email, nome.
Ora sia in fase di iscrizione, che in fase di modifica dati (da parte di un admin) vorrei fare in modo che sia username che email siano univoci ovvero che nessuno degli utenti registrati abbia stesso username e/o email.
Nella pagine di modifica dati dell'admin mi sono arenato in questo script:
Codice PHP:
$result = doquery ("SELECT username, email FROM users WHERE username='$newuser' OR email='$email'");
$num_righe=mysql_num_rows ($result);
if ($num_righe != 0)
{
$result = doquery ("SELECT username, email FROM users WHERE username='$newuser' OR email='$email'");
while ($row = mysql_fetch_array($result))
{
if ($row[username] != null)
{ echo ("$row[username]");
echo '<div id="content">Lo User name inserito e\' attualmente gia\' in uso.
Si prega di tornare al form di modifica. </div>';
exit;
}
if ($row[email]!= null)
{
echo ("2");
echo '<div id="content">La e-mail inserita e\' attualmente gia\' in uso.
Si prega di tornare al form di modifica. </div>';
exit;
}
}
}
else
{
$result=doquery ("UPDATE users SET username='$newuser' , fullname='$fullname' ,email='$email' WHERE id_usr=$id");
echo ("<div id=content>Modifica eseguita correttamente</div>");
}
Ora so dove si trova l'errore, ma non so come rimediare senza produrre doppioni di codice.
Nella parte:
Codice PHP:
$num_righe=mysql_num_rows ($result);
Guardo se dopo la mia select ho degli utenti con nome o email uguali.
Se non ottengo risultati procedo con la modifica dei dati , altrimenti devo capire quali tra username ed email siano uguali (o entrambi).
Il problema e' che procedendo con:
Codice PHP:
while ($row = mysql_fetch_array($result))
{
if ($row[username] != null)
l'array $row[username] mi si riempie anche se e' l'email dell'utente 'username' ad essere uguale e quindi nel mio if mi stampa il messaggio di username uguali e non di email uguali.
Mi suggerireste un metodo per risolvere la questione?
Secondo me si fa in 2 righe ma ora come ora non riesco piu' a vedere le cose molto chiaramente.
ciao