Inserire lista Email in database controllando se già esistenti

daservice

Nuovo Utente
13 Mag 2016
1
0
0
Buongiorno a tutti,
ho da poco conosciuto il php e fino ad oggi ho solo realizzato qualche script che facilità il lavoro nella mia azienda ed un piccolo portale.

Vi spiego subito il mio problema, ogni giorno invio circa 1000/2000 email a liste di contatti che quotidianamente cambiano, su 1000/2000 email spesso alcune di queste sono già contatti inviati nei giorni precedenti e per non disturbare gli utenti vorrei realizzare un piccolo script da usare su un mio dominio con un db dedicato.

Il lavoro dello script in teoria è molto semplice ma non comunque non riesco a capire come realizzarlo,
lo script dovrebbe avere un form con un campo di testo dove inserisco una lista di email già validate, successivamente deve caricarle nel database , se qualcuna di queste email è già presente nel db dovrebbe comunicarmelo ed andare avanti lo stesso ad inserire le altre in fine se tutto è andato bene deve stampare a video la lista di email caricate una sotto l'altra in modo che io copio e incollo nel mio file in CSV ed invio le email.

Non mi è chiaro come realizzarlo sarai molto grato se potete darmi delle dritte per realizzare questo script .

Grazie e buona giornata.
 
Ciao, potresti utilizzare un anagrafica generale dove memorizzi l'anagrafica che inserisci e un campo di controllo. Tu in base all'operazione che effettui setti il campo con un tuo valore a scelta. Ad esempio potresti impostare il campo di default a 0 se non hai ancora inviato a questo utente, e ad 1 quando hai inviato. Quando vai a inserire una nuova anagrafica effettui una SELECT sul DB con $valoremail='$mailinserita'.
 
ciao
se non ho capito male hai due problemi
1) non inserire indirizzi se già esitenti
PHP:
<?php
//....
//immagino che il nuovo indirizzo provenga da un form
$email=$_POST['email'];
$query=mysqli_query($conn,"SELECT email FROM tabella WHERE email='$email'");
if(mysqli_num_rows($query)>0){
    echo "indirizzo gia esistente";//e torni al form
}else{
    //fai l'inserimento
}
?>
inoltre setta il campo email della tabella a UNIQUE
2) dici che vuoi un campo di testo in cui inserire una serie di indirizzi email, giusto?, ora dipende da come sono divisi gli indirizzi tra loro
esempio se provengono da un file csv sono separati da virgole per cui
PHP:
<?php
$elenco=$_POST['campo_testo'];
$serie=explode(",",$elenco);//trasformi in array
foreach($serie as $email){
    $query=mysqli_query($conn,"SELECT email FROM tabella WHERE email='$email'");
    if(mysqli_num_rows($query)>0){
        echo "$email indirizzo gia esistente";
    }else{
        //fai l'inserimento
    }
}
?>
3) per l'esportazione in csv degli indirizzi da inviare dipende da come fai ad esportare
esporti da phpmysql manager usando la funzione di esportazione o usi uno script (es. vedi http://www.mysqltutorial.org/mysql-export-table-to-csv )
comunque nella tabella ti conviene mettere un campo "inviata" con 0 se non inviata 1 se inviata ed eventualmente un campo "data_invio"
 
Borgo ma se esegui quello script ci stai fino a domani a fare 2000 query.
Personalmente eviterei i file csv ( va bene per importare gruppi di email ma non per inserirli come dati in un campo di un record ) preferire un campo email con un indirizzo singolo, classificato come UNIQUE in modo che con quell'indirizzo ci può stare lui e lui soltanto. In questo modo elimini subito i doppi.
 

Discussioni simili