Ciao, ho realizzato un carrello per ordinare via e-mail dei prodotti.
Ora ho un problema con foreach.
Premetto che ho trovato questa soluzione del foreach su questo forum solo che non riesco più a trovare il thread
Con le sessioni ho creato un ID_session che ho chiamato per comodità Numero d'ordine (anche se è un po' lungo!) che mi permetta di distinguere gli ordini dei vari utenti.
Ogni prodotto inserito nel carrello viene salvato su DB i cui campi sono:
id_carrello
id_sessione (per distingure ordini di utenti diversi)
id_cliente (per sapere quale cliente ha effetuato l'ordine)
codice
prezzo
descrizione
quantita
data
stato (0 di default)
e fin qui tutto OK.
Compilato l'ordine gli articoli salvati sul DB vengono riassunti in una pagina di riepilogo dove trovo i dati del cliente, il numero d'ordine (session_id) e i prodotti inseriti nell'ordine.
E qui inizia il problema.
Confermando questa pagina con un SUBMIT, invio l'ordine e nello stesso tempo con un foreach setto sul DB tutti i prodotti con lo stesso id_sessione da stato 0 a stato 1 (ordine inviato)
Questo mi permette di non trovarmi una seconda volta gli stessi prodotti in ordine, nel caso qualcuno decidesse di fare un nuovo ordine e la sessione non è ancora scaduta.
la pagina riepilogo.php (tralascio le parti non importanti)
Codice PHP:
<?php
session_start();
require("/home/pegg7f14/public_html/admin/inc/config.php");
include("login.php");
include_once('class.phpmailer.php');
$IDord = $_GET[IDord];
$IDcliente = $_GET[IDcliente];
$IDprod = $_GET[IDprodotto];
DB_Connect();
//tabella clienti
$query6 = DB_Query("SELECT * FROM $table6 WHERE clienti_ID = '$IDcliente'");
$result6 = DB_Get_Results($query6);
$_SESSION[IDord] = $IDord;
//tabella carrello
$query = DB_Query("SELECT * FROM $table7 WHERE id_sessione = '$IDord'");
$result = DB_Get_Results($query);
$mail = new PHPMailer();
$mail->From = "$result6[11]";
$mail->FromName = "$result6[2] $result6[3]";
$mail->Subject = "Ordine Num $IDord del $result[8]";
?>
<?php
if ($_POST['cmd'] == FALSE)
{
echo "<form name='form' action='{$_SERVER['PHP_SELF']}' method='post' enctype='multipart/form-data'>\n";
?>
<span class="TESTO"><?php echo" <span class='TESTOBOLD'> $result6[2] $result6[3]</span>"; ?> controlla il contenuto dell'ordine prima dell'invio. </span>
<p class="centrato">Dati per la fatturazione</p>
<p class="destro">Ditta: <?php echo" $result6[4]"; ?>
<p class="destro">Partita IVA:<?php echo" $result6[5]"; ?>
<p class="destro">CAP - Citt‡: <?php echo" $result6[7] - $result6[8]";?>
<p class="destro">Via: >?php echo" $result6[6]";?>
<p class="destro">Cognome: <?php echo" $result6[3]";?>
<p class="destro">Nome: <?php echo" $result6[2]"; ?>
<?php
echo" Ordine numero: $IDord";
?>
...
<?php
//CONTO PRODOTTI NEL CARRELLO
$count = mysql_query("SELECT COUNT(*) FROM $table7 WHERE id_sessione = '$IDord' AND stato ='0'");
$res_count = mysql_fetch_row($count);
$tot_records = $res_count[0];// numero totale di referenze nel carrello
if($tot_records == 0)
{
echo" Non ci sono articoli nell'ordine";
}
else
{
echo" Nell'ordine sono stati inseriti $tot_records codici articolo";
}
?>
...
<?php
$query = DB_Query("SELECT * FROM $table7 WHERE id_sessione = '$IDord' ");
while ($result = DB_Get_Results($query))
{
if($result[stato] == 1)
{
echo"";
}
else
{
echo"Codice: $result[codice]";
echo"Descrizione: $result[nome_prodotto]";
$number = $result[prezzo];
$prezzo = number_format($number, 2, ',', '. ');
echo" Prezzo EUR $prezzo";
echo"Quantità $result[quantita]";
$tot = ($result[prezzo]*$result[quantita]);
$number = $tot;
$totale = number_format($number, 2, ',', '. ');
echo" Totale EUR $totale";
}
}
$query = DB_Query("SELECT prezzo, quantita FROM $table7 WHERE id_sessione = '$IDord' AND stato ='0'");
$totalone = 0;
while($result = DB_Get_Results($query))
{
$total += ($result['prezzo']*$result['quantita']);
$number = $total;
$totalone = number_format($number, 2, ',', '. ');
}
echo"Totale ordinato EUR $totalone";
?>
<?php
//SUBMIT
echo " <input type='hidden' name='array[id_carrello][stato]' value='1' />\n";
echo " <input type='hidden' name='cmd' value='edit' />\n";
echo " <input type='hidden' name='id_carrello' value='{$_GET['id_carrello']}' />\n";
?>
<input type="image" name="aggiorna" value="aggiorna" align="absmiddle" title="Invia l'ordine" src="Resources/send.png">
<?php
echo "</form>\n";
}
else
{
if(isset($_POST[aggiorna]))
{
DB_query("UPDATE `$table7` SET `stato` = 1");
if(is_array($stato)){
foreach($stato as $key => $evaso){
DB_query("UPDATE `$table7` SET `stato` = '1' WHERE id_carrello = ' ".$key." ' ");
}
}
}
}
DB_Close();
$_SESSION = array();
session_destroy();
?>
con questo codice mi setta tutti gli articoli del DB su stato=1 invece che settarmi su 1 solo gli articoli associati a ad un id_session univoco.
Qualcuno di voi ma sa dire dove sbaglio?
Un grazie enorme in anticipo.