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

    [mysql] controllare se una email è già nel database

    Ciao!
    Sto realizzando una newsletter in php e mysql. Vorrei sapere come fare per verificare se l'email inserita dall'utente al momento dell'iscrizione è già presente nel database mysql. Vi posto il codice che ho usato:
    codice:
    $email = $_POST['email'];
    
    $db = mysql_connect($db_host, $db_user, $db_password) or die("Connessione non riuscita: " . mysql_error());
    $select = mysql_select_db($db_name, $db) or die ("Errore nella selezione del database. Verificare i parametri nel file config.inc.php");
    
    \\la tabella newsletter contiene i campi id e email
    
    $query = "SELECT email FROM newsletter WHERE email LIKE '$email'";
    
    $result = mysql_query($query, $db);
    
    $row = mysql_fetch_array($result);
    
    if($row>0) {
    print("La tua email è già nel database.");
    } else {
    
    $query = "INSERT INTO newsletter (email) VALUES ('$email')";
    
    if (mysql_query($query4, $db)) {
    echo "La tua email è stata inserita correttamente.
    \n";
    } else {
    echo "Si è verificato un errore!";}
    E' corretto? Allo stesso modo vorrei verificare, nel momento in cui un utente sceglie di cancellarsi, se l'email è ancora presente nel database o no.

    Grazie!

  2. #2
    puo' anche funzionare, ma non e' corretto.

    $row e' un array e non contiene un numero... potrebbe essere false/true, ma e' meglio verificare diversamente: Esempio:
    codice:
    $query = "SELECT count(*)  FROM newsletter WHERE email LIKE '$email' ";
    
    $result = mysql_query($query, $db);
    
    $num = mysql_fetch_row($result);
    
    if($num[0] > 0) {
    
    print("La tua email è già nel database.");
    
    } else {
    ....

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    e così è corretto?

    codice:
    $query = "SELECT email FROM newsletter WHERE email = '$email'";
    		$result = mysql_query($query, $db);
    		$rows = mysql_num_rows($result);
    			if($rows>0) {
    			print(........
    ho provato e funziona (sempre che non sia un caso!) però quando un utente vuole cancellarsi, io uso il seguente codice, ma mi genera l'errore:

    codice:
    elseif ($action=="unsubc") {
    			if ($rows===0) {
    			print ("La tua email non è in lista.");
    			} else {
    			$query = "DELETE id, email FROM newsletter WHERE email = '$email'";
    				if (mysql_query($query, $db)) {
    				print("Cancellazione avvenuta con successo.");
    } else {
    				print ("Si è verificato un errore di comunicazione con il database. Riprova più tardi. Grazie!");
    				} 
    			}
    risultandomi appunto l'errore di comunicazione che ho impostato...

  4. #4
    va anche bene mysql_num_rows.

    rende un numero e confronti un numero... era questa la questione.


    per il DELETE.... si cancella tutto il record e non i singoli campi... quindi:

    DELETE FROM newsletter WHERE email = '$email' LIMIT1

    in questo caso mettere un LIMIT 1 male non fa. Ti potrebbe evutare qualche cosa buffa.

    se vuoi conoscere di quale errore si tratta usa mysql_error() e non tue frasi, almeno nel debug.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    ok funziona tutto tranne il LIMIT1. Togliendolo funziona perfettamente... Mi dice che la sintassi non è corretta. Io non l'ho mai usato per cui non so se sbaglio qualcosa!

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.