Ajax + php - problema caricamento div

~~Buonasera, sto facendo un sito di e-commerce e mi sto avvicinando adesso ad ajax. Sto facendo l'aggiornamento della quantià , del costo e del controllo max della quantità disponibile per il prodotto. Tutto funziona, ma non completamente: all'evento onchange del campo quantità, richiamo il cosice ajax. I controlli funzionano correttamente, il conteggio è corretto però il div compare due volte e non so come fare a risolvere il problema.
Es. prodotto 1- quantità 2 - prezzo 1?. se cambio la quantità  compare una tabella con i dati aggiornati ed un'altra con i dati precedenti. Vi giro il codice:
1)********************ajax
<script language="javascript">
var myRequest = null;
function CreateXmlHttpReq(handler) {
  var xmlhttp = null;
  try {
 xmlhttp = new XMLHttpRequest();
  } catch(e) {
 try {
  xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
 } catch(e) {
  xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
 }
  }
  xmlhttp.onreadystatechange = handler;
  return xmlhttp;
}
</script>
<script type="text/javascript">
<!--
function caricaListaPost(id,valore,nomefile,nome_campo,colore,quantita,dettaglio){
 alert('rr');
 VarNomeCampo =nome_campo;
 myRequest = CreateXmlHttpReq(listaAssociata);
 myRequest.open("POST",nomefile);
 myRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"); myRequest.send(id+"="+valore+"&quantita_"+valore+"="+quantita+"&colore_"+valore+"="+colore+"&dettaglio="+dettaglio);
 myRequest.setRequestHeader("connection", "close");
}
function listaAssociata(){
 
 if(myRequest.readyState==4 && myRequest.status==200){
 
  var a=document.getElementById(VarNomeCampo);
  a.innerHTML="";
  a.innerHTML=myRequest.responseText; con id="id Oggetto del form html"
 
 }
}
</script>
****fine ajax
PHP*****************
<?php

require_once ('../include/utilita.php');

@session_start();
//funzione per la sessione dei prodotti acquistati nel carrello


function MostraCarrello()
{
 require_once ("AggiungiCarrello_ajax.php"); //ajax per il caricamento dinamico della lista
 require_once ('../classi/classe_lingua.php');
 $myClass = new MyClass();
 $myClass->LinguaSelezionata();
 require_once ("../language/".$_SESSION['lingua'].'.php');
 
 require_once ('../include/utilita.php');

  global $Messaggio;
 global $ProdottoTitolo;
 global $CarrelloTotale;
 global $data; //variabile globale -- connessione db
 global $Directoryimage;
 global $DirectoryPDF;
 global $TotaleProdotti;
 $k=0;
 
 $CountElementi=COUNT($_SESSION['carrello'])-1;//conto le righe oggetti ordinati  
 $ProdottoId=$_POST['ProdottoId'];
 $QuantitaId="quantita_".$ProdottoId;//nome del campo, es. quantita_1
 $Quantita=$_POST['quantita_'.$ProdottoId]; //valore selezionata nella textbox
 $ColoreId="colore_".$ProdottoId;//nome del campo, es. colore_1
 $ProdottoColoreId=$_POST["colore_".$ProdottoId]; //valore selezionata nella listbox, id tabella prodotto colore
 $carrello = array ('art_colore_id' => $ProdottoColoreId, 'art_colore' => $Colore ,'art_quant' => $Quantita);
 $Elimina=$_POST['elimina'];
  
 if(isset($_SESSION['carrello'][$ProdottoColoreId]))
 
 {
    $_SESSION['carrello'][$ProdottoColoreId]+= $Quantita;
 
 }
 
 else
 
 {
 
     $_SESSION['carrello'][$ProdottoColoreId] = $Quantita;
 
 } 
 
 $dettaglio=$_POST['dettaglio'];
 if ($dettaglio=="si") //provenienza dalla pagina di dettaglio, aggiorno il totale con il valore inserito nel campo quantità text
 {
   $_SESSION['carrello'][$ProdottoColoreId]="";
  $_SESSION['carrello'][$ProdottoColoreId]=$Quantita; 
 
 }
 
 if ($Elimina=="si") //provenienza dalla pagina di dettaglio, aggiorno il totale con il valore inserito nel campo quantità text
 { 
   unset($_SESSION['carrello'][$ProdottoColoreId]); //cancello la sezione per l'articolo
    
 }
 $CarrelloElenco="<table width='970' border='4' cellspacing='0' cellpadding='0'>";
 if  ($_SESSION['carrello']!="") 
 {  
  foreach ($_SESSION['carrello'] as $Idprodottocolore => $valore) //ciclo l'array
  {
    if ($Idprodottocolore !="")
    {//if 1
    $k=$k+1;
    
       echo $Idprodottocolore."--".$valore."<br>";
       $select="SELECT *,prodotto.ProdottoId as IdProdotto FROM prodottocolore, prodotto WHERE prodottocolore.ProdottoId = prodotto.ProdottoId AND prodottocoloreId =".$Idprodottocolore;
     
       $query = $data->query($select);
       $righe=mysql_num_rows($query);
       $record = $data->estrai($query);
      
       if($righe !=0)
     { //if 2
      $CarrelloTotale="";
      $select="";
      $ProdottoId=$record->IdProdotto;
      $ProdottoTitolo=(string)ProdottoTitolo.$_SESSION['lingua'];
      $ProdottoTitolo=$record->$ProdottoTitolo;
      $ProdottoDescrizione=(string)ProdottoDescrizione.$_SESSION['lingua'];
      $ProdottoDescrizione=$record->$ProdottoDescrizione;
      $ProdottoDisponibile=(string)ProdottoDisponibile.$_SESSION['lingua'];
      $ProdottoDisponibile=$record->$ProdottoDisponibile;
      $ProdottoL=$record->ProdottoL;
      $ProdottoP=$record->ProdottoP;
      $ProdottoH=$record->ProdottoH;
      $ProdottoCosto=$record->ProdottoCosto;
      $ProdottoNomeFotoG=$record->ProdottoNomeFotoG;
      $ProdottoNomeFotoP=$record->ProdottoNomeFotoP;
      $ProdottoPeso=$record->ProdottoPeso; 
      $ProdottoQuantita=$record->ProdottoQuantita;
      $ProdottoCosto=$record->ProdottoCosto;
      $ProdottoImballo=$record->ProdottoImballo;
       if ($ProdottoImballo<>"")
       {
        $ProdottoImballo=$LabelImballo." ". $ProdottoImballo;
       }
      
      if ($ProdottoL<>"")
        {
         $Grandezza=$Grandezza. " L.".$ProdottoL;
        }
      if ($ProdottoP<>"")
        {
         $Grandezza=$Grandezza. " P.".$ProdottoP;
        }
      if ($ProdottoH<>"")
        {
         $Grandezza=$Grandezza. " H.".$ProdottoH;
        }
       //estraggo i colori associati al prodotto
       $query = $data->query("SELECT * FROM colore, prodottocolore WHERE colore.ColoreId=prodottocolore.ColoreId and prodottocolore.ProdottoId=".$ProdottoId." order by ColoreTipo".$_SESSION['lingua']);
       $ProdottoColoreTipo="";
       while($record = $data->estrai($query))
       {
         $ProdottoContatoreId=$record->ProdottoColoreId;
         $ProdottoColoreId=$record->ColoreId;
         $ProdottoQta=$record->ProdottoColoreQta;
         $ProdottoColoreTipoLingua=(string)ColoreTipo.$_SESSION['lingua'];
         $ProdottoColoreTipoLingua=$record->$ProdottoColoreTipoLingua;
         $ProdottoColoreQta=$record->ProdottoColoreQta;
         if($Idprodottocolore==$ProdottoContatoreId) //verifico se il colore è quello selezionato
         {      
          $select=" selected";
          
          if($valore>$ProdottoColoreQta) //verifico il max della quantità selezionabile per il colore
          { 
            $valore=$ProdottoColoreQta;
           $_SESSION['carrello'][$ProdottoColoreId]=$valore; //aggiorno la sessione con la quantità
           $MaxValore=$valore;
          
          }
        }
         else
         {
          $select="";
          
         }
         $ProdottoColoreTipo=$ProdottoColoreTipo."<option value=".$ProdottoContatoreId.$select. ">".$ProdottoColoreTipoLingua." Qta - ".$ProdottoQta." </option>";  
       } //fine while
       $Prezzo=$valore*$ProdottoCosto;
       //print $valore*$ProdottoCosto;
       
       $CarrelloElenco=$CarrelloElenco."<tr><th scope='row'><img src=".$Directoryimage.$ProdottoNomeFotoP."></th>";
          $CarrelloElenco=$CarrelloElenco."<td width='359'>".$ProdottoTitolo."<br />";
          $CarrelloElenco=$CarrelloElenco.$ProdottoDescrizione."<br>";
          $CarrelloElenco=$CarrelloElenco.$ProdottoImballo;"<br>";
          $CarrelloElenco=$CarrelloElenco.$Grandezza."<br>";
          $CarrelloElenco=$CarrelloElenco."<br>".$LabelCosto." ".$ProdottoCosto." &euro;<br>";
       $CarrelloElenco=$CarrelloElenco."<br>".$LabelColore;
          $CarrelloElenco=$CarrelloElenco." <select name ='colore_".$ProdottoId."_".$k."'>";
       $CarrelloElenco=$CarrelloElenco.$ProdottoColoreTipo;
          $CarrelloElenco=$CarrelloElenco."</select><br>";
          if ($MaxValore!="")
          {
         $CampoQuantita=$MaxValore;
        }
       else
       {
         $CampoQuantita="0";
       }
          ?>
          <?php
       
       $CarrelloList="caricaListaPost('ProdottoId',".$ProdottoId.",'ProdottiDettaglioCarrello.php','carrello',document.form.colore_".$ProdottoId."_".$k.".options[document.form.colore_".$ProdottoId."_".$k.".selectedIndex].value,document.form.quantita_".$ProdottoId."_".$k.".value,'si')";//parametri per l'evento onchange
       
        $CarrelloListCancella="cancellaListaPost('ProdottoId',".$ProdottoId.",'ProdottiDettaglioCarrello.php','carrello',document.form.colore_".$ProdottoId."_".$k.".options[document.form.colore_".$ProdottoId."_".$k.".selectedIndex].value,document.form.quantita_".$ProdottoId."_".$k.".value,'si')";//parametri per l'evento onchange
         //echo $CarrelloList;
        
         $CarrelloElenco=$CarrelloElenco.$LabelQuantita." <input type='text' name='quantita_".$ProdottoId."_".$k."' size='2' value='".$valore."'onchange=".$CarrelloList."></td>";
       $CarrelloElenco=$CarrelloElenco."<td width='359'>".$Prezzo." &euro; <img src='../img/cestino.png' onclick=".$CarrelloListCancella."></td>";//td destra, prezzo totale
       $CarrelloElenco=$CarrelloElenco."</tr>";      
       $CarrelloTotale=$CarrelloTotale.$CarrelloElenco; //risultato da stampare nel file dettaglio
       //azzero le variabili
       $ProdottoId="";
       $ProdottoTitolo="";
       $ProdottoDescrizione="";
       $ProdottoDisponibile="";
       $ProdottoL="";
       $ProdottoP="";
       $ProdottoH="";
       $ProdottoCosto="";
       $ProdottoNomeFotoG="";
       $ProdottoNomeFotoP="";
       $ProdottoPeso=""; 
       $ProdottoQuantita="";
       $ProdottoCosto="";
       $ProdottoImballo="";
       $Grandezza="";
       //$MaxValore="";
      }//fine if 2
      }  //fine if 1
     //print $CarrelloElenco;?>
     
     </tr>
 <?php
  $TotaleProdotti=$TotaleProdotti + $valore;
  
  } //chiusura for each
 }//chiusura primo if,se la sessione non è vuota 
$CarrelloTotale=$CarrelloTotale."</table>";

$data->disconnetti();//chiusura connessione

 if ($TotaleProdotti=="")
 {
  $Messaggio="Carrello vuoto";
 }
 else
 {
  $Messaggio="";
  $Messaggio="Ci sono ".$TotaleProdotti. " prodotti nel carrello";
 }
 echo $Messaggio."<br>".$CarrelloTotale;
} //fine function

?>

<table align="right">
<div id="carrello"><?php MostraCarrello();?></div>
</table>

***********************FINE PHP
PAGINA CHE RICHIAMA IL FILE .PHP
<?php
@session_start();

?>

<body>
<form name="form">
<?php require_once ('../funzioni/ProdottiCarrello.php');?>
</form>
</body>

*//////////////FINE

GRAZIE A TUTTI PER LA COLLABORAZIONE... NON SO COME USCIRNE!!!!
inviato 2 anni fa
catkatia1971
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda