Visualizzazione dei risultati da 1 a 10 su 10

Discussione: [php-ajax] newsletter

  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2004
    Messaggi
    331

    [php-ajax] newsletter

    salve a tutti,
    sto realizzando una newsletter in php e ajax. Riesco a fare l'invio tramite ajax ma quello che non so come fare è inviare la newsletter a blocchi di utenti. In pratica vorrei tramite ajax richiamare la pagina php per inviare la mail per esempio a 10 utenti poi vorrei dopo un tot di tempo richiamare la pagina e rinviare ad altri 10 e così via.
    quello che non riesco è tornare dalla pagina di php e richiamarla da js.
    qualcuno sa aiutarmi?
    grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2004
    Messaggi
    331
    up

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2004
    Messaggi
    331
    nessuno sa aiutarmi?

  4. #4
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Per fare cio devi usare qlke accorgimento.

    In primis devi fare un metodo che tracci l'utenza ragiunta dalla mail.

    Quindi 1 dipende dal tuo database e da come e' costruito e se e' costruito male si complicano le cose.

    Poi dipende dai metodi e dal livello di sicurezza che vuoi adottare.

    Cmq diciamo che se fai in modo di tracciare le newsletter inviate agli utenti puoi fare la cosa imponendo un limit sulla query di estrazione degli indirizzi e gestire con ajax tali limiti ossia i blocchi utenti da raggiungere.

    io farei cosi'

    tabella utenti
    id
    nome
    cognome
    email
    altri dati


    tabella newsletters
    id
    data_creazione
    subject
    message
    altri dati


    tabella utenti_newsletters
    id_utente
    id_newsletter


    Cosi' puoi associare e tracciare gli invii delle newsletter.
    Una volta creata la newsletter puoi gestire tutti gli utenti che nn l'hanno ricevuta e inviare le email a blocchi.

    con una query tipo

    select u.id , u.email from utenti_newsletters un
    left join utenti u on un.id_utente = u.id
    where un.id=$id

    carichi tutti gli utenti che hanno ricevuto l'email in questione.

    Ovviamente puoi altresi' recuperare gli utenti non raggiungere e caricare i blocchi con un limit 0,10 tanto una volta inviata la mail tali indirizzi non veranno piu' caricati
    Per fare cio' quindi devi generare una query oppurtuna che estragga solo gli utenti che non hanno ricevuto la newsletter.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2004
    Messaggi
    331
    ti ringrazio per la risposta. mi è molto di aiuto ciò che mi hai scritto ma ora il mio dubbio è:
    se io faccio il primo invio con limit 0,10 al termine tramite ajax dovrei richiamare lo script ma incrementando il valore del limit. quello che io non riesco a fare è questo al termine richiamarlo tramite ajax. avevo pensato di fare un ciclo while e richiamarlo ogni volta che finisce. non so se è la soluzione giusta.

  6. #6
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    E qui sta il trucco.
    La procedura di invio che fa?

    Crea la mail la invia e se l'invio riesce gli fai aggiungere la riga sulla tabella di relazione.

    Quando poi vai a rieseguire la query gli utenti raggiunti non verranno visualizzati in quanto nn verranno nemmeno estratti dalla base di dati.

    Ovviamente puoi procedere in 2 modi con i controlli
    1-Via sql con la opportuna query di estrazione dati
    2-Via codice estraendo i dati e controllandoli da codice.

    Vedi te come ti trovi meglio, secondo me la prima e' la migliore anche se la query potrebbe risultare un po' complessa.

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2004
    Messaggi
    331
    ok perfetto ma in js come faccio a richiamarla ogni tot secondi?

  8. #8
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    window.setTimeout( function(){ faiCose() } , millisec );
    oppure con il set interval

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2004
    Messaggi
    331
    ok grazie mille ma un solo dubbio se io faccio che ogni minuto deve richiamare la funzione se per caso non ha finito l'invio precedente?

  10. #10
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Ovviamente fai partire il contatore solo quando il precedente invio e' terminato.

    Il trucco e' questo :

    1) crei l'oggetto cross-browser per ajax.
    2) crei la funzione di gestione di invio dati.
    3) Avvi la request in ajax (ovviamente da dentro la funzione creata al punto 2 )
    4) A completamento della request ( ossia quando il ready state e' == 4 )
    effetti i relativi controli sulla risposta che ottieni dal server.
    Quindi avvi nuovamente la funzione creata al punto 2 con :
    window.setTimeout( function(){ funzionePunto2(); } , 1000*60 );
    Finche ci sono indirizzi da contattare.

    E cosi' le chiamate partiranno sempre in sequenza e solo alla terminazione della precedente invocazione evitando errori di sincronia.

    Un paio di consigli:
    Usa delle lib gia' fatte se non hai esperienza con ajax in quanto non e' cosi' facile come sembra.
    Jquery fa al caso tuo, sono semplici e leggere se devi usare solo il core ajax.
    Usa il formato JSON (JavaScript Object Notation) per le risposte dal server che e' 1000 mila volte piu' facile da usare di xml e 100000 volte piu' potente. Qui trovi tutta la documentazione che ti serve .

    In bocca al lupo

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.