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

Résolu
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. Merci beaucoup ! J'ai rajouté un "else" pour que cela fonctionne sur tous les sous domaines et tout semble fonctionner.

    Merci encore !
    1. 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>
      
      
      1. 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>
        1. 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...
          1. 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>