carrello

Pagina AGGIORNA E VISUALIZZA Prodotti Carrello

<?php session_start(); 
if (!isset($_SESSION['carrello'])) { 
$carrello = array(); 
$carrello=$_SESSION['carrello']; 
} 
if (array_key_exists($_POST['id_prod'],$_SESSION['carrello'])) 
{ 
$_SESSION['carrello'][$_POST['id_prod']]['confezioni'] = $_POST['confezioni']; 
} 
else {} 

if($_POST['Submit']) { 
unset($_SESSION['carrello'][$_POST['codice']]); 
} 
require_once('Connections/cantina.php'); 
mysql_select_db($database_cantina, $cantina); 

      foreach ($_SESSION['carrello'] as $key) { 
                       $ss=$key['id_prod']; 
                       $dd=$key['confezioni']; 
                         $query_Recordset4 = "SELECT * FROM listino WHERE codice_prodotto='$ss'"; 
                        $Recordset4 = mysql_query($query_Recordset4, $cantina) or die(mysql_error()); 
                        while($row4=mysql_fetch_row($Recordset4)) 
                       { 
                        $aa_b_4=$row4[3];  ////Codice Prodotto 
                        $aa_4=$row4[4];  /////Tipo Prododdo 
                        $bb_4=$row4[5];  ////Formato Bottiglie 
                        $cc_4=$row4[6];  ////Confezioni 
                        $dd_4=$row4[7];  ////Formato_confezioni 
                         //$ee_4=$row4[6];  ///Quantità Bottiglie 
                         $ff_4=$row4[11]; ////Gradazione Alcolica 
                         $gg_4=$row4[9]; ////Annata     
                        $hh_4=$row4[10]; ////Prezzo 
?>         
    <form id="form2" name="form2" method="post" action=""> 
     <?php echo $aa_b_4;?> 
     <input name="id_prod" type="hidden" id="id_prod" value="<?php echo $aa_b_4;?>" /> 
     <?php echo $aa_4;?>&nbsp;&nbsp;<?php if($cc_4=='y') { echo "(Confezioni da $dd_4 Bottiglie)";} else {} ?> 
     <?php if($cc_4=='y') {?> 
    <input name="confezioni" type="text" id="confezioni" value="<?php echo $dd;?>" size="15" value=""; style="font-size:10px; text-align:cente"  onchange="document.getElementById('form2').submit();"/> 
    <?php } else { ?> 
         <input name="confezioni" type="text" id="confezioni" style="font-size:10px; text-align:center" size="15" readonly="y" />    <?php }?> 
    <?php if($cc_4=='n') {?> 
    <input name="bottiglie" type="text" id="bottiglie" style="font-size:10px; text-align:center" value="1" size="15" /> 
    <?php } else {?> 
    <input name="bottiglie" type="text" id="bottiglie" style="font-size:10px; text-align:center"value="" size="15" readonly="y"/> 
    <?php }?> 
    <input name="prez_unit" type="text" id="prez_unit" style="font-size:10px; text-align:center"value="<?php echo $hh_4;?>" size="20" /> 
    <input name="totale" type="text" id="totale" style="font-size:10px; text-align:center"value="" size="15" readonly="y"/> 
    </form> 
<form id="form3" name="form3" method="post" action=""> 
    <input name="Submit" type="submit" id="Submit" style="font-size:10px" value="ELIMINA"/> 
    <input name="codice" type="hidden" id="codice" value="<?php echo $aa_b_4;?>" /> 
    </form>   
    <?php }}?> 
    <a href="Untitled-3.php">SCEGLI PRODOTTO</a>

Pagina Scegli Prodotto e Memorizza Prodotto

<?php session_start(); 
if (!isset($_SESSION['carrello'])) { 
$carrello = array(); 
$carrello=$_SESSION['carrello']; 
} 
if($_POST['Submit']) { 
if (array_key_exists($_POST['id_prod'],$_SESSION['carrello'])) 
{ 
$_SESSION['carrello'][$_POST['id_prod']]['confezioni'] += $_POST['confezioni']; 
} 

else 
{ 
   $_SESSION['carrello'][$_POST['id_prod']] = array('id_prod'=>$_POST['id_prod'],'confezioni'=>$_POST['confezioni']); 
} 
//header("Location: nuovo_ordine.php"); 
} 

require_once('Connections/cantina.php'); 

mysql_select_db($database_cantina, $cantina); 
$query_Recordset1 = "SELECT * FROM listino"; 
$Recordset1 = mysql_query($query_Recordset1, $cantina) or die(mysql_error()); 
$row_Recordset1 = mysql_fetch_assoc($Recordset1); 
$totalRows_Recordset1 = mysql_num_rows($Recordset1); 
do {   ?> 
    <form id="form1" name="form1" method="post" action="">     
     <?php echo $row_Recordset1['codice_prodotto']; 
           echo $row_Recordset1['tipo_vino']; 
           echo $row_Recordset1['formato_bottiglie']; 
           echo $row_Recordset1['confezioni']; ?> 
      <input name="confezioni" type="hidden" id="confezioni" value="1" /> 
            <input type="submit" name="Submit" value="CARRELLO" style="font-size:10px"/> 
            <input name="id_prod" type="hidden" id="id_prod" value="<?php echo $row_Recordset1['codice_prodotto']; ?>" /> 
    </form>     
      <?php } while ($row_Recordset1 = mysql_fetch_assoc($Recordset1)); ?> 
      <a href="Untitled-2.php">Torna Al Carrello 

      </a>

Il mio problema è nella parte aggiorna carrello cioè la prima parte di codice che ho postato.

Per esempio inserisco 2 prodotti nel carrello con quantità 1,

Poi modifico il campo (confezioni) del primo prodotto della lista il quale ha la funzione onchange, quindi mi esegue il submit, esegue il codice riportato sotto

if (!isset($_SESSION['carrello'])) { 
$carrello = array(); 
$carrello=$_SESSION['carrello']; 
} 
if (array_key_exists($_POST['id_prod'],$_SESSION['carrello'])) 
{ 
$_SESSION['carrello'][$_POST['id_prod']]['confezioni'] = $_POST['confezioni']; 
} 
else {}

e mi aggiorna e fino a a quì tutto bene,il problema viene se vado a modificare il campo (confezioni) del secondo prodotto della lista ( lo stesso succede per il terzo prodotto della lista e così via)

mi esegue la funzione onchange, quindi il submit ma i nuovi campi modificati non cambiano?

Cosa suggerite?

 :bye:

inviato 7 anni fa
leoneweb
X 0 X

Questa riga statica è corretta?

      <input name="confezioni" type="hidden" id="confezioni" value="1" />
risposto 7 anni fa
Mario Santagiuliana
X 0 X
<input name="confezioni" type="hidden" id="confezioni" value="1" />

E' corretta in quanto è nella pagina memorizzazione, cioè se inserisco un prootto nel carrello la quantità è 1 e se rinserisco dinuovo lo stesso prodotto mi fa la somma giustamente.

Il mio problema sta nella prima pagina (Aggiorna e visualizza) e primo script della serie che ho postato,

dove se per esempio ho visualizzati 3 prodotti e voglio cambiare la quantità solo del 2 non se la fila di striscio.Se invece cambio la quantità del 1° prodotto della lista lo cambia

 :bye:

risposto 7 anni fa
leoneweb
X 0 X

Scusami...non riesco a capire bene il codice... :buck:

Dov'è che avviene la somma con onchage?

Poi...tu crei più form con il ciclo foreach però a ciascuno assegni lo stesso id:

    <form id="form2" name="form2" method="post" action="">
risposto 7 anni fa
Mario Santagiuliana
X 0 X

la somma avvine nella seconda parte di codice che ho postato dove c'e' scritto (Pagina Scegli Prodotto e Memorizza Prodotto) e qui non c'e' nessun onchange ma semplicemnte mi da la lista dei prodotti presenti in magazzino, poi se un prodotto è gia presente non fa altro che sommare le confezioni

if($_POST['Submit']) {
if (array_key_exists($_POST['id_prod'],$_SESSION['carrello']))
{
$_SESSION['carrello'][$_POST['id_prod']]['confezioni'] += $_POST['confezioni'];
 }

else
{
   $_SESSION['carrello'][$_POST['id_prod']] = array('id_prod'=>$_POST['id_prod'],'confezioni'=>$_POST['confezioni']);
}
//header("Location: nuovo_ordine.php");
}

onchange è nella prima parte del codice che ho postato dove c'e' scritto (Pagina AGGIORNA E VISUALIZZA Prodotti Carrello)

  <input name="confezioni" type="text" id="confezioni" value="<?php echo $dd;?>" size="15" style="font-size:10px; text-align:cente"  onchange="document.getElementById('form2').submit();"/>

In questo campo di testo se vado a modificare il numero,mi esegue la funzione onchange che mi esegue il submit mi ricarica la pagina stessa e all'inizo della paginaho il codice

if (!isset($_SESSION['carrello'])) {
$carrello = array();
$carrello=$_SESSION['carrello'];
}
if (array_key_exists($_POST['id_prod'],$_SESSION['carrello']))
{
$_SESSION['carrello'][$_POST['id_prod']]['confezioni'] = $_POST['confezioni'];
}
else {}

il quale mi dovrebbe semplicemente aggiornare il carrello con le nuove  confezioni     $_POST['confezioni'];

Ma sicuramente anzi certamente devo aver sbagliato qualcosa perchè così non avviene

 :bye:

risposto 7 anni fa
leoneweb
X 0 X

Non so ma a me sembra così po' complicata la tua applicazione...

Non è questo il problema:

$_SESSION['carrello'][$_POST['id_prod']]['confezioni'] = $_POST['confezioni'];

Se devi sommare il numero delle confezioni fai in modo che le sommi no?...

Uff non riesco proprio a capire come funziona il tuo script...

P.S. puoi usare anche l'indentazione del codice quando scrivi? Così è più leggibile.

risposto 7 anni fa
Mario Santagiuliana
X 0 X

Un attimo...ma se hai nella tua pagina html 3 o più form con lo stesso id o nome: "form2", con il javascript quando fai onchage e invii i dati del form2 quale form2 viene inviato scusa?

Secondo me l'errore sta li.

Prima ho detto una cavolata pazzesca....

Prova nel tuo ciclo foreach a farlo così:

      $i = 0;
      foreach ($_SESSION['carrello'] as $key) { 
                       $i++;
                       $ss=$key['id_prod']; 
                       $dd=$key['confezioni']; 
                       $query_Recordset4 = "SELECT * FROM listino WHERE codice_prodotto='$ss'"; 
                       $Recordset4 = mysql_query($query_Recordset4, $cantina) or die(mysql_error()); 
                       while($row4=mysql_fetch_row($Recordset4)) { 
                           $aa_b_4=$row4[3];  ////Codice Prodotto 
                           $aa_4=$row4[4];  /////Tipo Prododdo 
                           $bb_4=$row4[5];  ////Formato Bottiglie 
                           $cc_4=$row4[6];  ////Confezioni 
                           $dd_4=$row4[7];  ////Formato_confezioni 
                            //$ee_4=$row4[6];  ///Quantità Bottiglie 
                            $ff_4=$row4[11]; ////Gradazione Alcolica 
                            $gg_4=$row4[9]; ////Annata     
                           $hh_4=$row4[10]; ////Prezzo 
?>         
    <form id="form<?php echo $i;?>" name="form<?php echo $i;?>" method="post" action=""> 
     <?php echo $aa_b_4;?> 
     <input name="id_prod" type="hidden" id="id_prod" value="<?php echo $aa_b_4;?>" /> 
     <?php echo $aa_4;?>&nbsp;&nbsp;<?php if($cc_4=='y') { echo "(Confezioni da $dd_4 Bottiglie)";} else {} ?> 
     <?php if($cc_4=='y') {?> 
    <input name="confezioni" type="text" id="confezioni" value="<?php echo $dd;?>" size="15" value=""; style="font-size:10px; text-align:cente"  onchange="document.getElementById('form<?php echo $i;?>').submit();"/>

Nota che ho aggiunto <?php echo $i;?>

risposto 7 anni fa
Mario Santagiuliana
modificato 7 anni fa
X 0 X

bhè adesso si è invertita la cosa, se prima me lo faceva solo sul primo prodotto della lista, adesso me lo fa solo sull'ultimo della lista.

 :bye:

risposto 7 anni fa
leoneweb
X 0 X

 :o :o :o :o :o :o

Secondo me devi lavorare sui nomi dei form...

Però mi sembra strano...hai copiato e incollato quello che ti ho suggerito o hai inserito a mano le modifiche, se è a mano ti invito a controllare dove ho inserito il codice nuovo e anche la variabile in più.

Ciao

risposto 7 anni fa
Mario Santagiuliana
X 0 X

le modifiche le ho fatte bene.

Secondo me hai ragione devo lavorare sui form.

ho modificato anche in questo modo

  <form id="form2" name="form2" method="post" action="">
<input name="id_prod" type="hidden" id="id_prod" value="<?php echo $aa_b_4;?>" />
<input name="confezioni" type="text" id="confezioni" value="<?php echo $dd;?>" size="15" style="font-size:10px; text-align:cente"  onchange="document.getElementById('form2').submit();"/>
</form>

in modo che qundo c'è onchange si porta dientro solo l'id interessato e le confezioni da aggiornare sempre riferito all' id ma niente non cambia

 :bye:

risposto 7 anni fa
leoneweb
X 0 X

ho visto che se elimino la funzione onchange e metto un pulsante funziona

<form id="form2" name="form2" method="post" action="">
<input name="id_prod" type="hidden" id="id_prod" value="<?php echo $ss;?>" />
<input name="Submit2" type="submit" id="Submit2" style="font-size:10px" value="AGGIORNA"/>
<input name="confezioni" type="text" id="confezioni" value="<?php echo $dd;?>" size="15" style="font-size:10px; text-align:cente"/>
</form>

quindi il problema è sul onchage che quando invia invia tutti gli id e lui prende il primo id della lista

risposto 7 anni fa
leoneweb
X 0 X

il problema???

Ho sostituito

onchange="document.getElementById('form2').submit();

Con

onchange="this.form.submit()"

e va bene.

Basta smetto   ;D

 :bye:

risposto 7 anni fa
leoneweb
X 0 X

Grande  :D :D :D :D

risposto 7 anni fa
Mario Santagiuliana
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda