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

Résolu/Fermé
florent_mi - 16 janv. 2008 à 07:48
 florent_mi - 17 janv. 2008 à 13:25
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?
A voir également:

6 réponses

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
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
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
Résultat: 22 enregistrements trouvés, 7 d'affichés... :-s
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

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

Merci encore !
0