[Php-mysql] Problème While qui s'arrête

Résolu
florent_mi -  
 florent_mi -
Bonjour,

Sur un de mes sites, j'ai un problème que j'arrive absoluement pas à comprendre. Je m'explique:

J'effectue une requête sql, puis je l'appelle en faisant un While. Le problème est que ce while s'arrête, sans raison, à endroits NON fixes. Le seul point commun que j'ai dégagé semble que la boucle s'arrête après une variable, mais jamais la même, et appelle même des données d'une autre table absoluement pas appellée dans la requête...

Voici le code:

<form name="form" id="form">
  <select name="jumpMenu" id="jumpMenu" onchange="MM_jumpMenu('parent',this,0)">
    <? if ($sous_domaine == "www"){?><option selected="selected">S&eacute;lectionnez</option><? }
	$sous_domaines = mysql_query("SELECT * FROM regions ORDER BY region_repertoire") OR DIE(MYSQL_ERROR()) ; // Requ&ecirc;te SQL
			while ($resultats_sous_domaines = mysql_fetch_array($sous_domaines) )
				{
					$region_nom_reroutage = $resultats_sous_domaines['region_nom'];
					$region_repertoire_reroutage = $resultats_sous_domaines['region_repertoire'];
		echo "<option value=\"";
    	echo $url1;echo $region_repertoire_reroutage;
		echo $url2;
		echo $cat;
		if ($sscat != "")
			{
				echo "/";
				echo $sscat;
			}?>.html"<?
		if ($sous_domaine == $region_repertoire_reroutage)
			{
	        	echo "selected=\"selected\"";
			} 
	echo ">";
	echo $region_nom_reroutage;
   	echo "</option>
	";
				} ?>
  </select>
                        </form>


Avez-vous une idée d'où cela pourrait venir?

6 réponses

  1. Alain42
     
    Bonjour,

    Déja mets les tags php: <?php ?> au lieu de <? ?> sinon en php5 ça mets la panique

    ensuite il te manquait la fermeture \" de value

    essayes comme ça je t'ai un peu simplifié ton code en concaténant plutot que de faire des echo succéssifs.

    <form name="form" id="form">
      <select name="jumpMenu" id="jumpMenu" onchange="MM_jumpMenu('parent',this,0)">
        <?
    	if ($sous_domaine == "www"){
    	?>
    	<option selected="selected">S&eacute;lectionnez</option><?
    	}
    	$sous_domaines = mysql_query("SELECT * FROM regions ORDER BY region_repertoire") OR DIE(MYSQL_ERROR()) ; // Requ&ecirc;te SQL
    		while ($resultats_sous_domaines = mysql_fetch_array($sous_domaines) ){
    			$option="<option value=\"".$url1.$resultats_sous_domaines['region_repertoire'].$url2.$cat;
    			
    			if ($sscat != ""){
    				$option.= "/".$sscat;
    			}
    			$option.=".html"
    			$option.="\""; // c'est ca qui manquait, la fermeture \" de value
    		if ($sous_domaine == $resultats_sous_domaines['region_repertoire'])
    			{
    	        	$option.= "selected=\"selected\"";
    			} 
    	$option.=">".$resultats_sous_domaines['region_nom'];
       	$option.= "</option>";
    	echo $option;
    				} ?>
      </select>
     </form>
    
    
    0
  2. florent_mi
     
    Merci de ta réponse,

    J'ai modifié les <? en <?php sur toutes mes pages.

    Par contre, y compris avec la modification, cela n'a rien changé, si ce n'est que la boucle s'arrête en fin de <option>. Il manque toujours environ la moitié des données.

    C'est vraiment bizzare car cela ne fait ça que sur ce code...
    0
  3. Alain42
     
    re,

    $sous_domaines = mysql_query("SELECT * FROM regions ORDER BY region_repertoire") OR DIE(MYSQL_ERROR()) ; // Requête SQL

    essayes:

    <form name="form" id="form">
      <select name="jumpMenu" id="jumpMenu" onchange="MM_jumpMenu('parent',this,0)">
    <?php
    	if ($sous_domaine == "www"){
    		$sous_domaines = mysql_query("SELECT * FROM regions ORDER BY region_repertoire") or die("Pb avec la requette ".mysql_error()) ; // Requ&ecirc;te SQL
    		echo "Nombre d'enr trouves: ".mysql_num_rows($sous_domaines);// ça tu l'enlevera apres
    ?>
    	<option selected="selected">S&eacute;lectionnez</option>
    <?php
    	}
    		while ($resultats_sous_domaines = mysql_fetch_array($sous_domaines) ){
    			$option="<option value=\"".$url1.$resultats_sous_domaines['region_repertoire'].$url2.$cat;
    			
    			if ($sscat != ""){
    				$option.= "/".$sscat;
    			}
    			$option.=".html"
    			$option.="\""; // c'est ca qui manquait, la fermeture \" de value
    			if ($sous_domaine == $resultats_sous_domaines['region_repertoire']){
    	        	$option.= "selected=\"selected\"";
    			} 
    			$option.=">".$resultats_sous_domaines['region_nom'];
    			$option.= "</option>";
    			
    			echo $option;
    		} 
    ?>
      </select>
     </form>
    
    
    


    J'ai déplacé la requette car si message d'erreur il ne se voit pas car il est dans la partie <select> </select>
    0
  4. florent_mi
     
    Résultat: 22 enregistrements trouvés, 7 d'affichés... :-s
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Alain42
     
    Ce ne serait pas la fin du if(........="www"){

    qui génerait ?

    Essayes comme ça, je l'ai mis après la boucle while:

    <form name="form" id="form">
      <select name="jumpMenu" id="jumpMenu" onchange="MM_jumpMenu('parent',this,0)">
    <?php
    	if ($sous_domaine == "www"){
    		$sous_domaines = mysql_query("SELECT * FROM regions ORDER BY region_repertoire") or die("Pb avec la requette ".mysql_error()) ; // Requête SQL
    		echo "Nombre d'enr trouves: ".mysql_num_rows($sous_domaines);// ça tu l'enlevera apres
    ?>
    	<option selected="selected">Sélectionnez</option>
    <?php
    	
    		while ($resultats_sous_domaines = mysql_fetch_array($sous_domaines) ){
    			$option="<option value=\"".$url1.$resultats_sous_domaines['region_repertoire'].$url2.$cat;
    			
    			if ($sscat != ""){
    				$option.= "/".$sscat;
    			}
    			$option.=".html"
    			$option.="\""; // c'est ca qui manquait, la fermeture \" de value
    			if ($sous_domaine == $resultats_sous_domaines['region_repertoire']){
    	        	$option.= "selected=\"selected\"";
    			} 
    			$option.=">".$resultats_sous_domaines['region_nom'];
    			$option.= "</option>";
    			
    			echo $option;
    		} 
    	}// là
    ?>
      </select>
     </form>
    
    
    0
  7. florent_mi
     
    Merci beaucoup ! J'ai rajouté un "else" pour que cela fonctionne sur tous les sous domaines et tout semble fonctionner.

    Merci encore !
    0