Controllo selettivo su due tabelle

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
Ho due tabelle dove inserisco i dati di registrazione degli utenti. Una è temporanea in attesa della conferma della mail da parte dell'utente. La seconda vene popolata da i dati della temporanea al momento della conferma della mail del cliente. Il problema è che al momento della registrazione con ajax e quindi php devo verificare che l'username sia libero, e fino ad ora ho adottato due sistemi
PHP:
if(isset($_REQUEST["username"])) $username2 = $_REQUEST["username"];

if($result = $mysqli->query("SELECT * FROM utenti_temp")){

	while($row = $result->fetch_assoc())
	{
		if($username2 == $row['username']){
			//Se è UGUALE metto in echo il valore che verrà interpretato dal file ajax in JS
			echo '1';
		} else {
			echo '0';
		}
	}
} $result->close();
il secondo invece è
PHP:
$query="SELECT username FROM utenti_temp WHERE username='$username2'";

$result=mysqli_query($mysqli,$query);
if(mysqli_num_rows($result)>0)
{
	echo '1';
}
else
{
	echo '0';
}
in entrambi effetto un include della connesisone al db.

Come posso fare per far fare il controllo oltre che alla tabella utenti_temp, anche alla tabella utenti, in modo tale che se in almeno una tabella trova lo stesso username mi dia "echo 1"?
Sarà magari una domanda stupida ma inserendo la tabella utenti dopo quella utenti_temp non funziona in quanto anche inserendo dei nominativi a caso mi da sempre echo 1.
 
PHP:
            $usr = $_POST['usr'];
			$query="SELECT username FROM 3_utenti_temp WHERE username='$usr'"; 
			$query2="SELECT username FROM 3_utenti WHERE username='$usr'"; 
			
			$result=mysql_query($query);
			$result2=mysql_query($query2);
			
		if((mysql_num_rows($result)>0) or (mysql_num_rows($result2)>0)){
			Echo "<br />Nome utente gia in uso.<br />Per favore scegli un altro nome.<br />";
		}else{
		    $psw = $_POST['psw'];
		    $query = mysql_query("INSERT INTO 3_utenti_temp (username,password) VALUES ('$usr','$psw')");
			Echo "<br />Registrazione effettuata con successo.<br />";
		}

Intendevi tipo una cosa del genere .. perché non ho capito bene.
Io faccio lo stesso controllo sia nella tabella utenti che nella tabella utenti_temp e gli dico che se trova lo stesso record in una delle tue tabelle mi da "l'errore" altrimenti segue con l' ELSE
 
In effetti era quello che speravo di non dover fare. Nel senso che il tuo codice è esattamente quello che dovrei fare io ma solo che pensavo che passando questa istruzione
PHP:
if($result = $mysqli->query("SELECT * FROM utenti_temp, utenti")){
avrei risolto il problema invece non è così. Farò quindi come fai tu. Grazie mille.

PS. Ho fatto queste correzioni ma stranamente sia che inserisca i valori corretti e quindi già presenti nel db sia che inserisca nomi a caso ottengo sempre lo stesso avviso, cioè l'username già usato. Inutile dire che al momento ho solo due username nel db proprio per i test.
 
Ultima modifica:
Dopo svariate prove ho risolto, posto qui il codice completo che salvo errori dovrebbe funzionare a dovere
PHP:
if(isset($_REQUEST["username"])) $username2 = $_REQUEST["username"];
if(($result = $mysqli->query("SELECT * FROM utenti_temp")) and $result2 = $mysqli->query("SELECT * FROM utenti")){

	while(($row = $result->fetch_assoc()) and ($row2= $result2->fetch_assoc()))
	{
		if(($username2 == $row['username']) or ($username2 == $row2['username'])){
			//Se è UGUALE metto in echo il valore che verrà interpretato dal file ajax in JS
			echo '1';
		} else {
			echo '0';
		}
	}
} $result->close();
naturalmente in testa ho incluso il file di connessione al db. Non sarà il sistema migliore ed esteticamente più bello ma funziona.
 

Discussioni simili