Ciao
Stavo provando un mio vecchio lavoro (creazione e stampa di fatture + archiviazione delle stesse)
Mi sono accorto ora che c'è un problema che prima in locale non si verificava e non si verifica nemmeno adesso online (sui server di altervista) dove ce l'ho caricato...e sto parlando dello stesso identico script (ho modificato solo i dati di connessione ovviamente)!!!!.
La parte incriminata è questa:
Codice PHP:
function conferma($id2,$not,$aspetto) {
$righe = $_SESSION[righe];
if(($id2 != 0)&&($righe!=0)){
global $numero, $tot_fatt;
$oggi= mktime(0,0,0,date("m"),date("d"),date("Y"));
$sql3 = mysql_query("INSERT INTO fatture (numero_fatt, id_cliente, totale, data, annotazioni, aspetto, giorno)
VALUES ('$numero', '$id2', '$tot_fatt', '$oggi', '$not', '$aspetto', NOW());");
$id_fatt=mysql_insert_id();
echo $id_fatt."num fatt";
$_SESSION[id_fatt] = $id_fatt;
$sql4 = mysql_query("SELECT * FROM carrello");
while( $row2 = mysql_fetch_array($sql4) )
{
$codi = $row2['codice'];
$desc = $row2['descrizione'];
$qua = $row2['quantita'];
$prezzou = $row2['prezzo_un'];
$iv = $row2['iva'];
$sql5 = mysql_query("INSERT INTO prodotti_acquistati (codice, descrizione, quantita, prezzo_un, iva, id_fattura)
VALUES ('$codi', '$desc', '$qua', '$prezzou', '$iv', '$id_fatt');");
}
delete_all();
}
else {
echo "<b><font color=\"#FF0000\">ATTENZIONE. Conferma non riuscita: intestazione fattura non inserita
o nessun articolo presente</font></b>";}
}
Questa funzione è richiamata dal tasto "Conferma" presente nella pagina che visualizza la fattura per intero.
Gli articoli inseriti di volta in volta dall'utente in fattura vengono prima caricati in una tabella del db momentaneamente e poi una volta che ha finito cliccando sul tasto conferma la funzione (di cui sopra) crea in un'altra tabella i dati principali della fattura (con i dati dell'utente)
viene reso disponibili l'id (al volo diciamo) di quest'ultima operazione con il comando:
$id_fatt=mysql_insert_id(); //mi sa che è questo il responsabile :tichedoff:
che poi viene caricato con il resto dei dati dei prodotti (nel ciclo while) in un'altra tabella in modo tale che ogni prodotto possa essere associato alla sua fattura di appartenenza .
Il problema è che questo in locale non avviene. L'id fattura è sempre zero (anche se qualche tempo fa ne avevo caricate nello stesso modo ben 17 con 17 id differenti e tutto funzionava anche le operazioni successive che avevano bisogno di questo ID).
Ho messo anche un echo (echo $id_fatt."num fatt";) nel punto critico che infatti mi restituisce zero.
Non ho capito il motivo e soprattutto perchè online la funzione FUNZIONA!.
Potete aiutarmi?
Grazie