8791 sujets

Développement web côté serveur, CMS

Bonjour je suis novice en php mysql mais j'essaie de faire un site multilingue en passant par une bdd. la traduction marche bien mais par exemple pour le menu principal les éléments apparaissent dans le desordre exemple au lieu de Accueil, Concept, Soins, il les met dans l'ordre suivant : Soins, Concept, Accueil.

J'ai donc créé une colonne "ordre" type INT pour mettre un numéro à chacun : Accueil 1, Concept 2 etc.

et j'ai mis le code suivant :
$req = mysql_query("SELECT libelle_fr FROM menus ORDER BY ordre")or die('erreur');

par contre je ne sais pas trop ou mettre ce code (au début?)

par rapport à ma table ci-joint en jpg upload/48477-Image-5.jpg

Et ça ne marche pas, ça ne met pas Accueil en premier, Concept en 2è etc.

Avez-vous une idée?
La requête en elle-même me parait bonne (tu pourrais préciser "ORDER BY ordre ASC" pour être sûr mais par défaut c'est déjà ascendant il me semble).
Tu pourais nous mettre tout le code de ta page ? Je soupçonne que le problème soit ailleurs.

PS : Essaye d'utiliser plutôt les fonctions mysqli_ (très proche de mysql_) ou même PDO pour faire tes requêtes, il est déconseillé d'utiliser l'extension mysql, qui n'est plus mise à jour.
Voici mon code : (code un peu complexe car mon menu est en php, je voulais un effet de soulignement fixe sur la page sur laquelle on est situé, c'est pas tres français mais tanpis...)

  <ul id="menu">   
<li><a href="home.php?page=home" class="
			<?php  
				if ($active=='home'){
				 echo "couleurMenu"; 
				}else{
					echo "";
				}
				?>")">

     <?php
	  require_once('libs/connect.php');
	 $req = mysql_query("SELECT libelle_fr FROM menus ORDER BY ordre")or die('erreur');
	  $req = mysql_query("select * from menus where menu='menu_principal'") or die('erreur');
	  
	  while($item=mysql_fetch_array($req)){
		 if($item['menu']=='menu_principal'){
			 
      echo '<li><a href="'.$item['url'].'" class="menu">'.$item['libelle_'.$_SESSION['langue']].'</a></li>';   
		 }
	  } 
	  
      ?></a></li>

            <li><a href="concept.php?page=concept" class="<?php  
				if ($active=='concept'){
					 echo "couleurMenu";
				}else{
					echo "";
				}
				
				?>")">Concept</a></li>

Modifié par Elma5 (23 Feb 2013 - 18:51)
+1

Il y a beaucoup de choses bizarre dans ton code :
-le premier "$req =" est plus à gauche que le reste, pourquoi ?
-Dans la première requête a le "SELECT" et le "FROM" sont en majuscule alors qu'ils sont en minuscule dans la deuxième, pourquoi ?
-Pourquoi assigner deux fois de de suite une valeure à $req alors que si je recopie ce code dans mon éditeur de texte (Netbeans) il me dit "You should use only one assignment, 2 used" ce qui se traduit par "vous ne devriez assigner une variable qu'une fois, pas deux" ? (ton problème se situe ici)
-Pourquoi la ligne if "($active=='concept'){" est elle autant indentée vers la droite (au moins 20 espaces alors que tes indentations semblent être de 4 espaces) ?


Si tu as répondu "parce que j'ai copié/collé du code au petit bonheur la chance" à une de ces questions, alors cela veut dire que tu as encore un certain nombre de choses à apprendre. Mais si ça peut te rassurer on a tous commencé comme ça Smiley lol

Bref, je supprimerais les deux lignes "$req=" pour les remplacer par
$req = mysql_query("SELECT * FROM menus WHERE menu='menu_principal' ORDER BY ordre ASC") or die('erreur');

Bonne continuation ! Smiley smile
Modifié par BlueScreenJunky (24 Feb 2013 - 11:01)