Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    150

    [php & mysql] query di controllo

    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

  2. #2
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Per prima cosa non capisco perché, dopo avere testato $num_righe, ripeti la stessa query.

    Seconda osservazione: visto che stai modificando i dati di un utente, dalla query di controllo devi escludere il suo id, altrimenti rischi di segnalare dati duplicati su quelli che in realtà sono i suoi.

    Infine, la soluzione alla tua domanda è di una banalità sconcertante. Tu hai le variabili con i nuovi valori, no? E confrontale con quello che trovi nel db!

    Codice PHP:
    if ($row['username'] == $newuser)
    if (
    $row['email']== $email

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.