Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    Inserimento e verifica di uguaglianza email in mysql

    Salve
    ho creato un piccolo script php per inserire un indirizzo email che un utente inserisce via browser in un db contenente 2 semplici colonne: id_email che si auto incrementa ed email che contiene l'email inserita dall'utente.

    Fin qui tutto bene.

    Poi ho cercato di mettere un ciclo if per verificare se l'email inserita già esiste nel database, in caso positivo avverte l'utente ed esce, in caso negativo esegue le istruzioni ed inserisce l'email nel database.

    Il problema è che sembra che la verifica non funzioni:

    codice:
    do {
    		$mailvalida = $data->query("SELECT * FROM email");
    		if(mysql_num_rows($mailvalida) > 0){
    			$mailvalida_obj = $data->estrai($mailvalida);
    			$mail1 = stripslashes($mailvalida_obj->email);
    			$mail2 = stripslashes($email);
    			if ($mail2 = $mail1) {
    				echo "<center> Mi spiace la tua email sembra già registrata </center>";
    				break;
    			}else{
    				do {
    					...
     	
    						$t = "email"; # nome della tabella
    						$v = array ($email); # valori da inserire
    						$r =  "email"; # campi da popolare
    						...
    						$data->inserisci($t,$v,$r);
    						echo "<center>La tua e-mail e' stata inviata correttamente al seguente indirizzo: ".$email.";</center>";
    ...
    					
    				} while ( ... );
    				break;
    			}
    		}else{
    			
    			break;
    		}
    		} while ( mysql_num_rows($mailvalida) > 0 );
    In pratica tutto il codice sostituito dai puntini sospensivi e l'inserimento di una nuova email funziona perfettamente ma la prima parte, cioé se viene inserita un'email uguale, no.

    In realtà qualsiasi email inserisco mi fa apparire sempre il messaggio di email già inserita.

    Potreste aiutarmi a capire dove sbaglio? Il ciclo while do non è adatto? meglio altro? o forse le variabili che contengono le email non sono dello stesso tipo?

    sul database la colonna email è di tipo varchar.

    Grazie per l'aiuto.

  2. #2
    Utente di HTML.it L'avatar di DjBart
    Registrato dal
    Jan 2009
    Messaggi
    346
    Prova cosi
    Codice PHP:
    $email $_POST['email'];
    //Inizio controllo email nel database
    $controllo_email =  mysq_query("SELECT * FROM tabella WHERE email = '".mysq_escape($email)."';");
    while(
    $controllo_email2=mysql_fetch_array($controllo_emai)){
    $email2 $controllo_email2['email']
    }
    //Se l'email già esiste si crea l'errore
    if($email == $email2){ 
    echo 
    "L'email gi&agrave; esiste";
    }else{

    ...



  3. #3
    ma mysql_escape è una funzione che hai te?

    Mi dice errore che non trova quella funzione...

  4. #4
    Codice PHP:
    $email = isset($_POST['email']) ? mysql_real_escape_string(trim($_POST['email'])) : ''
    //che conteggia i record con quella email
    $sql "SELECT COUNT(email) FROM tabella WHERE email ='".mysq_escape($email)."'";
    $result mysql_query($sql) or die(mysql_error());
    $conteggio mysql_fetch_array($result);
    if(
    $conteggio[0]>=1)
        {
        echo 
    'email esistente';
        }
    else
        {
        echo 
    'email non esistente';
        } 

  5. #5
    Il problema con entrambi i codici che mi avete postato è che il sql mi dice che non conosce la funzione mysql_escape().


    Quello che vorrei capire è come impostare il ciclo per:

    Prende l'email dall'utente (tutto ok)
    Cerca questa email tra quelle esistenti nel database (qui nasce il problema)
    Se ne trova una uguale dice che esiste (ok)
    Se non la trova alla fine di tutto il ciclo fa quello che deve fare (invece adesso non aspetta tutto il ciclo, ma semplicemente controlla il primo record).

    Io logicamente farei

    DAL 1 record all'UTLIMO CONTROLLA che $email sia = alla colonna email di quel record.

    Se è uguale esci con messaggio

    sè e diversa vai avanti col prossimo record finché non è finito il db.

    Alla fine del ciclo se nessuna email è uguale a quella immessa fai queste istruzioni....


    Sembra semplice ma non capisco perché non va...

    Codice PHP:

    <?php
    //controlla l'avvenuto inserimento dell'email.
    if(isset($_POST['submit'])&&($_POST['submit']=="Fatto")){

        if(isset(
    $_POST['email'])){
            
    $email addslashes(filter_var($_POST['email'], FILTER_SANITIZE_STRING));
        }

    // inclusione del file contenente la classe
    include "funzioni.php";
    // istanza della classe
    $data = new MysqlClass();
    // chiamata alla funzione di connessione
    $data->connetti();

        
        
        do {
            
    $mailverificata=1;
            
    $mailvalida $data->query("SELECT * FROM email");
            if(
    mysql_num_rows($mailvalida) > 0){
                
    $mailvalida_obj $data->estrai($mailvalida);
                
    $mail1 $mailvalida_obj->email;
                if (
    $email == $mail1) {
                    echo 
    "<center> Mi spiace la tua email sembra gia' registrata </center>";
                    
    $mailverificata=0;
                    break;
                }else{
                    
    $mailverificata=1;
                    break;
                    
                }
            }else{
                if (
    $mailverificata == ) {
            
        
                    do {

    ...
                }
                break;
            }
            } while ( 
    mysql_num_rows($mailvalida) > );
        

    // query per l'estrazione dei record

    // chiusura della connessione a MySQL
    $data->disconnetti();

    }
    ?>

  6. #6
    Utente di HTML.it L'avatar di DjBart
    Registrato dal
    Jan 2009
    Messaggi
    346
    Codice PHP:
    $email = isset($_POST['email']) ? mysql_real_escape_string(trim($_POST['email'])) : '';  
    //Inizio controllo email nel database 
    $controllo_email =  mysq_query("SELECT * FROM tabella WHERE email = '".$email."';"); 
    while(
    $controllo_email2=mysql_fetch_array($controllo_emai)){ 
    $email2 $controllo_email2['email'

    //Se l'email già esiste si crea l'errore 
    if($email == $email2){  
    echo 
    "L'email gi&agrave; esiste"
    }else{ 

    ... 


    vedi se cosi funzione
    ho eliminato la funzione mysql_escape

  7. #7
    Originariamente inviato da DjBart

    ho eliminato la funzione mysql_escape
    ops avevo sbagliato... sorry
    Codice PHP:
    $email = isset($_POST['email']) ? mysql_real_escape_string(trim($_POST['email'])) : '';  
    //che conteggia i record con quella email 
    $sql "SELECT COUNT(email) FROM tabella WHERE email ='".$email."'"
    $result mysql_query($sql) or die(mysql_error()); 
    $conteggio mysql_fetch_array($result); 
    if(
    $conteggio[0]>=1
        { 
        echo 
    'email esistente'
        } 
    else 
        { 
        echo 
    'email non esistente'
        } 

  8. #8
    Ora funziona, grazie mille per l'aiuto

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 © 2024 vBulletin Solutions, Inc. All rights reserved.