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($number2',''. ');
echo
" Prezzo EUR  $prezzo";

echo
"Quantità $result[quantita]";

$tot = ($result[prezzo]*$result[quantita]);
$number $tot;
$totale number_format($number2',''. ');

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($number2',''. ');
}

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.