-
in uno script devo inserire delle righe che mi facciano un controllo se i nomi degli utenti presenti in una tabella sono presenti anche in un'altra.
io l'ho fatto così:
[code:1:803445a1b3]
$result = mysql_query("SELECT name,chiff,typ,media FROM voting ORDER BY media DESC LIMIT 1", $dbi);
list($picid,$typ,$rating) = sql_fetch_row($result, $dbi);
$row=sql_fetch_array($result);
$resultx = mysql_query("select * from $user_prefix"."_user_profile1 as p1, $user_prefix"."_user_profile2 as p2 where p1.ffusername='$uname' AND p2.ffusername='$uname'")
or die(mysql_error());
$rowx=sql_fetch_array($resultx);
for ($rowx['id']=1;$rowx['id']=eof ;$rowx['id']++){
if ($rowx['uname']==$row['name']& #41; {
echo "<a href=\"modules.php?name=FriendFinder&op=u serinfo&ffusername=$rowx['uname']\&quo t;>UTENTE ISCRITTO</a>!";
} else {
echo "L'UTENTE NON E' ISCRITTO";
}
}
[/code:1:803445a1b3]
è giusto?
quali modifiche devo fare?
-
non posso dirti con matematica certezza se il codice sia giusto o meno. Posso suggerirti alcune modifiche (non ho il manuale PHP sottomano per cui se scrivo stupidate confondendomi tra linguaggi correggimi):
- il confronto tra stringhe in PHP è case-sensitive, per cui è meglio che confronti le stringe passandole entrambe in maiuscolo (o minuscolo) così:
[code:1:387492d27b]if (strtolower($rowx['uname'])==s trtolower($row['name'])) { [/code:1:387492d27b]
- cerca, in questo caso, di fare un'unica query tra tabelle, in quanto il confronto tra stringhe in MySql (se l'installazione è standard) NON è case-sensitive.
Ricordo la sintassi per effettuare in SQL la LEFT JOIN (che permette di ricavale le informazioni di due tabelle, recuperando i valori della seconda tabella solo se la corrispondenza è corretta, e restituendo NULL altrimenti):
[code:1:387492d27b]SELECT FROM Tab1
LEFT JOIN Tab2
ON Chiave2 = Chiave1
WHERE Condizione1[/code:1:387492d27b]