Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    carrello e foreach che non funziona

    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.

  2. #2
    Ho risolto da solo.

    Semplicemente ho eliminato il foreach

    con:

    Codice PHP:
    <?php
    //SUBMIT
    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
    {
    DB_query("UPDATE `$table7` SET `stato` = '1' WHERE id_sessione = '$IDord' ");
    }

    DB_Close();

    ?>
    Grazie lo stesso

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.