Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 22

Discussione: query di controllo

  1. #1

    query di controllo

    Ciao a tutti, nella funzione di controllo ho inserito anche una query che mi dovrebbe permettere di verificare se l'utente esiste già oppure no ma non funziona, mi riporta l'errore dicendomi che già "esiste l'utente" quando il db è vuoto..

    codice:
    function CheckReg1() { 
                     $errori = array(); 
                     
                     $nome_utente = $_POST["nome_utente"]; 
                      if ($nome_utente == "") 
                        { 
                         $errori[0] = "Il Nick Name è obbligatorio"; 
                        } 
                     elseif (strlen(trim($nome_utente)) < 6) // controllo che il nome inserito non sia < di 6 caratteri
                        { 
                     $errori[0] = "Il Nick Name non deve essere inferiore a sei caratteri"; 
                        } 
                     elseif (!eregi("^([a-zA-Z]{3})([a-zA-Z0-9]*)$", $nome_utente)) //il nome utente inizia per forza con tre lettere
                        { 
                     $errori[0] ="Il Nick Name contiene caratteri invalidi"; 
                        } 
    					
    mysql_connect("localhost", "root", "") or die("impossibile connettersi al server");
    mysql_select_db("test")or die("No database");
    			
    $query = "SELECT nome_utente, FROM $utenti_tablename WHERE   
                    nome_utente = '$nome_utente'";
                    $result = mysql_query($query); 
                    if(!$result || mysql_num_rows($result) < 1){ 
    				 
                    $errori[0] ="Il nome utente è in uso"; 
                    }
    								
    mysql_close();

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2003
    Messaggi
    534
    codice:
    $query = "SELECT nome_utente, FROM $utenti_tablename WHERE   
                    nome_utente = '$nome_utente'";
                    $result = mysql_query($query); 
                    if(!$result || mysql_num_rows($result) < 1){ 
    				 
                    $errori[0] ="Il nome utente è in uso"; 
                    }
    $result è false solo se mysql_query genera un errore. E se genera un errore perchè mai il nome utente deve essere in uso.

    mysql_num_rows < 1 è vero, perchè è zero se non hai dati, perchè mai il nome utente deve essere in uso.

    Quindi la if è errata.


  3. #3
    Io credo che al posto di "<" dovresti metter ">" nell'ultimo if anche se non sono molto sicuro.
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

  4. #4
    non funziona!!!!!!!!!!! mi sapete dire il perchè?

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2003
    Messaggi
    534
    Originariamente inviato da kamaleonte72
    non funziona!!!!!!!!!!! mi sapete dire il perchè?
    Non funziona nel software è come dire non parte per una macchina. Si va dalla benzina alle ruote, alla porta che non si apre.

    Prova a parcellizzare la funzione, cioè tira fuori le istruzioni e verificale una ad una, e posta l'errore/i che ricevi.


  6. #6
    guarda il primo post sopra mi dice che l'utente esiste anche se in realtà non esiste nulla nel db.

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2003
    Messaggi
    534
    Originariamente inviato da kamaleonte72
    guarda il primo post sopra mi dice che l'utente esiste anche se in realtà non esiste nulla nel db.
    Guarda il secondo post, ti dice che l'if è errata.


  8. #8
    Originariamente inviato da mircov
    Io credo che al posto di "<" dovresti metter ">" nell'ultimo if anche se non sono molto sicuro.
    quoto!

    io farei
    Codice PHP:
    $query "SELECT nome_utente, FROM $utenti_tablename WHERE   
                    nome_utente = '
    $nome_utente'";
                    
    $result mysql_query($query); 
                    if(!
    $result || mysql_num_rows($result) != 1){ 
                     
                    
    $errori[0] ="Il nome utente è in uso"
                    } 

  9. #9
    Secondo me devi scrivere così:



    codice:
    if(!$result || mysql_num_rows($result) > 0){
    Ora ti spiego perchè:

    io ho un db con dentro memorizzati gli utenti

    mario
    carlo
    marco
    giancarlo
    alba
    monica

    Io inserisco come nick

    valerio

    Al controllo non esiste nessun valerio quindi il risultato sarà 0

    ma se io inserisco marco il risultato sarà 1 perchè la query ha trovato una corrispondenza. Quindi se tu imposti la if in modo che se il risultato sia maggiore di 0 dia il messaggio di errore tutto funziona come dove.
    Prova e facci sapere. Ciao ciao.
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

  10. #10
    anche se metti != 0 perchè non troverai mai un caso in cui ci sono due utenti uguali dato che questo controllo lo avrebbe bloccato.
    Se però venmisse messo un nome uguale manualmente il controllo sarebbe vano sia con minore che con diverso da 0.

    Ecco perchè io consiglio di fare il controllo al contrario, ovvero

    Codice PHP:
    if ($result and mysql_num_rows($result) = 1){
    echo 
    "tutto ok";
    }else{
    echo 
    "errore";


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.