Partage
  • Partager sur Facebook
  • Partager sur Twitter

Ajax: certaine réponses ignorées?

Sujet résolu
    30 juillet 2009 à 15:47:02

    Bonjour à tous,

    Voici mon problème:

    J'ai 4 champ <select>. Ces champ <select> contiennent chacun 3/4 options.

    J'utilise Ajax pour mettre à jour un input selon les <option> séléctionner pour les 4 <select>.

    Selon l'<option> selectionné, je fais une requête SQL pour récupérer un nombre associé à cette <option>.Seulement j'ai un <select> qui semble être ignoré.


    Je m'explique:

    Si je modifie les 3 premiers <select>, ça me met bien à jour mon input, mais en modifiant le 4e <select>, ça ne modifier plus rien.

    Voici mon code PHP contenant les <select>:
    C'est la génération des <select>
    <label>Analysis </label>
    <select name="uos_ana" id="uos_ana" onclick="calculDays(document.getElementById('days_planned').value);"> 
            <option value="empty"></option> 
            <?php
    	$rep = mysql_query("SELECT DISTINCT * FROM uos09 WHERE family='Analysis'");
    	while($data = mysql_fetch_array($rep))
    	{
    		echo "<option value='".$data['id']."'>".$data['id']."</option>";
    	}
    	?>
    </select>
    
    <br/><br/>
    
    <label>Development/Design/Test</label>
    <select name="uos_ddt" id="uos_ddt" onclick="calculDays(document.getElementById('days_planned').value);">
    	<option value="empty"></option> 
    	<?php
    	$rep = mysql_query("SELECT DISTINCT * FROM uos09 WHERE family='Design Development Test'");
    	while($data = mysql_fetch_array($rep))
    	{
    		echo "<option value='".$data['id']."'>".$data['id']."</option>";
    	}
    	?>
    </select>
    
    <br/><br/>
    
    <label>Integration/Verification/Validation </label>
    <select name="uos_ivv" id="uos_ivv" onclick="calculDays(document.getElementById('days_planned').value);"> 
    	<option value="empty"></option> 
    	<?php
    	$rep = mysql_query("SELECT DISTINCT * FROM uos09 WHERE family='Integration Verification Validation'");
    	while($data = mysql_fetch_array($rep))
    	{
    		echo "<option value='".$data['id']."'>".$data['id']."</option>";
    	}
    	?> 
    </select>
    
    <br/><br/>
    
    <label for="uos_sf">Support & Training </label>
    <select name="uos_sup" id="uos_sup" onclick="calculDays(document.getElementById('days_planned').value);"> 
    	<option value="empty"></option> 
    	<?php
    	$rep = mysql_query("SELECT DISTINCT * FROM uos09 WHERE family='Support Formation'");
    	while($data = mysql_fetch_array($rep))
    	{
    		echo "<option value='".$data['id']."'>".$data['id']."</option>";
    	}
    	?> 
    </select>
    


    Voici mon code JS :
    function calculDays(chiffre)
    {
    	if(chiffre.length>0)
    	{
    		var  xhr = createXhrObject();
    	
    		xhr.onreadystatechange = function()
    		{ 
    			if(xhr.readyState == 4)
    			{
    				if(xhr.status == 200)
    				{ 
    					if(xhr.responseText.length>3)
    					{
    						var div = document.getElementById('result_days_planned');						
    						div.style.display = 'block';
    						div.innerHTML = "<img src='AJAX/left.png' style='margin-left:-25px;' />&nbsp;&nbsp;&nbsp;"+xhr.responseText;
    					} 
    				}
    				else 
    				{ 
    					alert(xhr.status + " " + xhr.statusText); 
    				} 
    			} 
    		}; 
    		var uo_ana = document.getElementById('uos_ana').options[document.getElementById('uos_ana').selectedIndex].value;		
    		var uo_ddt = document.getElementById('uos_ddt').options[document.getElementById('uos_ddt').selectedIndex].value;		
    		var uo_ivv = document.getElementById('uos_ivv').options[document.getElementById('uos_ivv').selectedIndex].value;		
    		var uo_sup = document.getElementById('uos_sup').options[document.getElementById('uos_sup').selectedIndex].value;
    				
    		xhr.open("GET", "AJAX/ajax_calculPlannedDays.php?daysPlan="+chiffre+"&a="+uo_ana+"&d="+uo_ddt+"&i="+uo_ivv+"&s="+uo_sup, true);                
    		xhr.send(null);
    	}
    }
    



    Et enfin le code PHP appelé par le JS:
    <?php
    if(mysql_connect('localhost','****','****'))
    {
    	if($sel = mysql_select_db('*****'))
    	{
    		$total_UOs = 0;
    		if( isset($_GET['a']) AND $_GET['a']!="empty" )
    		{
    			$repA = mysql_query("SELECT pound FROM uos09 WHERE id='".$_GET['a']."'");
    			$repA = mysql_fetch_array($repA);
    			$total_UOs += $repA['pound'];
    		}
    			
    		if( isset($_GET['d']) AND $_GET['d']!="empty")
    		{
    			$repD = mysql_query("SELECT pound FROM uos09 WHERE id='".$_GET['d']."'");
    			$repD = mysql_fetch_array($repD);
    			$total_UOs += $repD['pound'];
    		}
    		
    		if( isset($_GET['i']) AND $_GET['i']!="empty")
    		{
    			$repI = mysql_query("SELECT pound FROM uos09 WHERE id='".$_GET['i']."'");
    			$repI = mysql_fetch_array($repI);
    			$total_UOs += $repI['pound'];
    		}
    						
    		<taille valeur="gros">if( isset($_GET['s']) AND $_GET['s']!="empty")
    		{
    			$repS = mysql_query("SELECT pound FROM uos09 WHERE id='".$_GET['a']."'");
    			$repS = mysql_fetch_array($repS);
    			$total_UOs += $repS['pound'];
    		}</taille>
    			
    		$diff = $_GET['daysPlan'] - $total_UOs;
    		echo "Difference:&nbsp;&nbsp;&nbsp;";
    		if($diff<0)	echo "<span style='color:red; font-weight:bold'>$diff</span>"; 
    		elseif($diff>0) echo "<span style='color:green; font-weight:bold'>$diff</span>"; 
    		else echo $diff;
    	}
    	else
    		echo "Error: cannot select database";
    }
    else
    	echo "Error: cannot connect to MySQL";
    ?>
    


    J'ai en gros la partie qui bug.
    Si je fais la requête sous phpMyAdmin, ça marche nikel, mais là, non ....


    Merci à tous d'avoir lu ce post!
    • Partager sur Facebook
    • Partager sur Twitter
      30 juillet 2009 à 16:05:25

      <taille valeur="gros">if( isset($_GET['s']) AND $_GET['s']!="empty")
      		{
      			$repS = mysql_query("SELECT pound FROM uos09 WHERE id='".$_GET['a']."'");
      			$repS = mysql_fetch_array($repS);
      			$total_UOs += $repS['pound'];
      		}</taille>
      

      Une fois 's', une fois 'a' (ça m'a sauté aux yeux xD)
      Je sais pas si c'est en rapport, mais vaut mieux corriger :)
      • Partager sur Facebook
      • Partager sur Twitter
        30 juillet 2009 à 16:13:08

        Mais p*****, j'ai relut ce document je ne sais combien de fois, j'ai pas vu cette erreure ... comme quoi un oeil extérieur c'est toujours bon ...

        Désolé pour le dérangement, et merci beaucoup :p
        • Partager sur Facebook
        • Partager sur Twitter
          30 juillet 2009 à 16:14:34

          :lol: de rien, j'avais même pas lu ce que tu avais dit avant, mais je me rends compte que ça correspond :p
          • Partager sur Facebook
          • Partager sur Twitter
            30 juillet 2009 à 16:16:12

            Tout compte fais, c'etait beaucoup de blabla pour une erreur à la con ... ^^
            • Partager sur Facebook
            • Partager sur Twitter

            Ajax: certaine réponses ignorées?

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown