Ciao a tutti, mi servirebbe un consiglio/aiuto su come risolvere il seguente problema:
file , esempio, utente.php : contiene un form per chiedere la modifica di alcuni dati gia' inseriti dall'utente precedentemente:
Codice PHP:
<form name ="frm1" method="POST" action ="modifica.php">
<tr><th>ID</th><th>Nome utente</th><th>Nome e Cognome</th><th>Indirizzo E-mail</th>
while($row = mysql_fetch_array($result))
{
echo ("<td align=center><input type=hidden name=id value=".$row['id_usr']. " />".$row['id_usr']."</td>");
echo ('<td align="center"><input type="text" name="usrname" ;/>
'.$row['username'].'</td>');
echo ("<td align=center><input type=text name=fullnm />
".$row['fullname']."</td>");
echo ("<td align=center><input type=text name=email />
".$row['email']."</td>");
...
Solo una parte di codice per far capire che in questa pagina metto un campo di testo vuoto , ed affiancato, nella stessa cella, il valore attuale dei dati.
Ora all'invio delle modifiche, mi trovero' in modifica.php.
Ora i questa pagina prendo le varie variabili etc.
Il fulcro di tutto cio', e' che io volendo posso modificare tutti i campi oppure 1 oppure 2 etc, insomma quanti ne voglio.
E posso inserire qualsiasi valore in ogni campo, tranne pero' in email e nome, che non devono essere uguali a quelli di altri utenti presenti nel db.
Quindi farei cosi:
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] == $newuser)
{
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]== $email)
{
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;
}
Il problema e' pero' che se io decido di non modificare nome utente ed email esistenti di un utente, con la query:
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'");
Io controllo se ci sono altri utenti con nome ed email uguali e se trova risultati do errore.
Il problema e' che ovviamente il check lo fa anche sull'utente stesso, e quindi se non cambio nome ed email all'utente avro' sempre errore...cosa non sensata perche' io potrei modificare altri dati e lasciare invariati nome e email.
Come potrei fare secondo voi a risolvere questo problema?
A fare in modo che un utente possa modificare qualunque cosa e non faccia il check sui sui stessi dati precedenti per evitare errori non coerenti col sistema?
Spero di essere stato chiaro,
ciao