Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente bannato
    Registrato dal
    Feb 2011
    Messaggi
    165

    [PHP/MYSQL] Controllo doppioni

    Salve, perché questa funzione non mi funziona a modo o meglio mi funziona solo che tengo due avvisi:
    Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in

    Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in

    e la funzione è questa:
    Codice PHP:
    function ControllaDoppi($tabella$controllo)
        {
            
    $query mysql_query "SELECT * FROM ".$tabella." WHERE " mysql_real_escape_string $controllo ) . " = '" mysql_real_escape_string $controllo ) . "'" );
            if ( 
    mysql_num_rows $query ) == )
            {
                return 
    TRUE;
            }
            else {
                return 
    FALSE;
            }
        } 
    e la richiamo cosi:

    Codice PHP:
        // Controllo il Nome Utente
        
    if(strlen($user) < || strlen($user) > 12)
            
    $error 'Nome Utente troppo corto, o troppo lungo';
        
    // Controllo la Password
        
    elseif(strlen($pass) < || strlen($pass) > 12)
            
    $error 'Password troppo corta, o troppo lunga';
        
    // Controllo l'email
        
    elseif(!eregi("^[a-z0-9][_\.a-z0-9-]+@([a-z0-9][0-9a-z-]+\.)+([a-z]{2,4})"$mail))
            
    $error 'Email non valida';
        
    // Controllo il nome utente non sia già occupato
        
    if(ControllaDoppi("utenti",$_POST["user"]))
            
    $error 'Nome Utente non disponibile';
        
    // Controllo l'indirizzo email non sia già registrato
        
    if(ControllaDoppi("utenti",$_POST["mail"]))
            
    $error 'Questo indirizzo email risulta gi&agrave; registrato ad un altro utente';
        
    // Registrazione dell'utente nel database
        
    else 
    Mi spiegate il motivo?

    grazie mille.

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    777
    vediamo se ho interpretato bene
    mysql_escape....($controllo) = mysqlescape($controllo)
    mi sembra sia un'incongruenza...di fatto l'errore segnala questo credo...
    il nome del campo a cui ti riferisci quale è?
    forse bisogna fare una cosa del tipo
    WHERE nomecampo= '$controllo'

  3. #3
    Utente di HTML.it L'avatar di costi31
    Registrato dal
    Nov 2007
    Messaggi
    345
    Scusa ma tu hai messo nella funzione:
    $query = mysql_query ( "SELECT * FROM ".$tabella." WHERE " . mysql_real_escape_string ( $controllo ) . " = '" . mysql_real_escape_string ( $controllo ) . "'" );
    in questo modo controlla se nella tabella che gli passi esiste un campo che ha nome che è quello dell'utente stesso e valore uguale.

    Magari volevi fare così:

    Codice PHP:
    function ControllaDoppi($tabella$controllo_nome$controllo_valore)
        {
            
    $query mysql_query "SELECT * FROM ".$tabella." WHERE " mysql_real_escape_string $controllo_nome ) . " = '" mysql_real_escape_string $controllo_valore ) . "'" );
            if ( 
    mysql_num_rows $query ) == )
            {
                return 
    TRUE;
            }
            else {
                return 
    FALSE;
            }
        }


    // Controllo il Nome Utente
        
    if(strlen($user) < || strlen($user) > 12)
            
    $error 'Nome Utente troppo corto, o troppo lungo';
        
    // Controllo la Password
        
    elseif(strlen($pass) < || strlen($pass) > 12)
            
    $error 'Password troppo corta, o troppo lunga';
        
    // Controllo l'email
        
    elseif(!eregi("^[a-z0-9][_.a-z0-9-]+@([a-z0-9][0-9a-z-]+.)+([a-z]{2,4})"$mail))
            
    $error 'Email non valida';
        
    // Controllo il nome utente non sia già occupato
        
    if(ControllaDoppi("utenti""nome_utente"$_POST["user"]))
            
    $error 'Nome Utente non disponibile';
        
    // Controllo l'indirizzo email non sia già registrato
        
    if(ControllaDoppi("utenti""mail"$_POST["mail"]))
            
    $error 'Questo indirizzo email risulta gi&agrave; registrato ad un altro utente';
        
    // Registrazione dell'utente nel database
        
    else 

  4. #4
    Codice PHP:
    ControllaDoppi("utenti",$_POST["mail"]) 
    cosa fa? Chiama la funzione ControllaDoppi e gli passa due parametri, il nome tabella e il valore della email.
    Vediamo la funzione nel dettaglio
    Codice PHP:
    function ControllaDoppi($tabella$controllo
    $query mysql_query "SELECT * FROM ".$tabella." WHERE " mysql_real_escape_string $controllo ) . " = '" mysql_real_escape_string $controllo ) . "'" );

    ovvero

    seleziona tutto da $tabella dove $controllo = $controllo

    cioè

    seleziona tutto da utenti dove pippo@pluto.com = 'pippo@pluto.com'

    L'errore è quindi evidente


  5. #5
    Utente bannato
    Registrato dal
    Feb 2011
    Messaggi
    165
    grazzzzieeee, mi avete risolto il problema....

    vi ringrazio tutti.

    ho risolto.

    grazie mille e buona giornata.

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.