CIao a tutti, spero possiate essermi d'aiuto,
Lo script serve per inviare delle fatture commerciali tramite mail, siccome potrebbero essere un discreto numero per volta, ho pensato di fare un invio "paginato".
Partendo da un esempio di codice trovato qui su html.it e che utilizzo di solito per paginare i dati provenienti da mysql ho pensato qualcosa del genere:
(il codice è scorporato da cose inessenziali e commentato)
Codice PHP:
$numfatt = $_GET['numfatt']; // questa variabile è passata via GET da un form e serve a far partire la numerazione delle fatture, andrà passata anche alle pagine successive
// esecuzione prima query
$count = mysql_query("SELECT COUNT(ID) FROM transazioni WHERE fattura = 0");
$res_count = mysql_fetch_row($count);
// numero totale di records
$tot_records = $res_count[0];
// risultati per pagina(secondo parametro di LIMIT)
$per_page = 3; // questo valore è molto basso perchè per testare tutto ho solo 15 record in tabella, diciamo che va portato a 50
// numero totale di pagine
$tot_pages = ceil($tot_records / $per_page);
// pagina corrente
$current_page = (!$_GET['pagemail']) ? 1 : (int)$_GET['pagemail'];
// primo parametro di LIMIT
$primo = ($current_page - 1) * $per_page;
// esecuzione seconda query con LIMIT
$query_limit = mysql_query("SELECT * FROM transazioni WHERE fattura = 0 LIMIT $primo, $per_page");
// includo la classe per la stampa in PDF
(OMISSIS)
// includo la funzione per l' invio mail
// data da mettere in fattura
$data_odierna = date('d M Y');
// INIZIO CON IL WHILE della query limitata
while($results = mysql_fetch_array($query_limit)) {
// prelevo i dati che mi servono dalla query
(OMISSIS)
// creo il numero di fattura
$numero_da_stampare = $numfatt + 1;
// dalla spesa mi ricavo imponibile ed iva
(OMISSIS)
// includo la funzione di stampa della fattura
(OMISSIS)
// compongo la mail
(OMISSIS)
// invio la mail
SE LA MAIL NON VIENE INVIATA{
// non faccio niente
}ELSE{
FACCIO L' UPDATE DELLA TABELLA SCRIVENDO CHE LA FATTURA E' STATA INVIATA
}
// incremento il numero di fattura
$numero_da_stampare = $numero_da_stampare + 1;
} // chiudo ciclo while che si dovrebbe essere ripetuto per $per_page volte ( in questo caso 3)
// al termine devo attendere 10 secondi e fare il redirect alla pagina successiva
if ($current_page != $tot_pages){
$next_page = ($current_page + 1);
$qstring = "?h=".$h."&ifatt=".$ifatt."&id=".$id."&pagemail=".$next_page."numfatt=".$numero_da_stampare; // non tenere conto delle altre variabili passate via GET che servono ad altro ma solo di &numfatt=$numero_da_stampare
$redirect = $_SERVER['PHP_SELF'].$qstring;
echo $current_page."di".$tot_pages."
Attendi senza chiudere il browser!";
header("refresh:10;url=$redirect");
}else{
// se invece la pagina è l'ultima
echo "Le fatture sono state inviate";
// faccio qualcosaltro
}
purtroppo non funziona: infatti al primo passaggio va tutto bene, al secondo la query dei risultati senza invio diminuisce e di conseguenza diminuisce anche il numero di paginazione... fattosta che i primi 3 li gestisce, i secondi no, i terzi si, i quarti no e così via. Altro problema è che $numero_da_stampare non viene incrementato
Fermo restando che è un papocchio, come si può portare al funzionamento? avete altri esempi da consultare?
VI ringrazio in anticipo