Requete MysSql et Menu en liste

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Requete MysSql et Menu en liste

par ptinicola » 05 oct. 2005, 11:17

Re bonjour,
Sur un autre forum on m'a corriger mon code de la manière suivante :
<?php 
//connexion au serveur: 
$cnx = mysql_connect(SERVEUR, USER, PASS, DB) or die('connexion impossible'); 

// sélection de la base de données: 
$db = mysql_select_db( 'metalobil' ) or die ('sélection impossible de la table'); 

//requête SQL: 
$sql = 'SELECT nom, titre, texte, icone 
FROM cat, doss 
WHERE cat.id_cat = doss.id_cat 
ORDER BY nom' ; 

//exécution de la requête: 
$requete = mysql_query( $sql, $cnx ) ; 

//affichage des données: 
//initialisations 
?> 
<div id="nav"> 

<?php 
$nom=""; 
while( $result = mysql_fetch_object( $requete ) ){ 
    if($nom!=$result->nom){ 
        if ($nom!=""){ 
?> 
        </ul> 
    </ul> 
<?php 
            } //endif ($nom!="") 
        $nom=$result->nom; 
?> 
    <ul class="level1"> 
        <li class="submenu"><?php echo $result->nom; ?></li> 
        <ul class="level2"> 
<?php 
        }//end if ($nom!=$result->nom) 
?>         
            <li class="submenu"><?php echo $result->titre; ?></li> 
<?php 
    }//end while 
?>     
        </ul> 
    </ul> 
</div> 
mais quand je le teste il m'affiche :

Code : Tout sélectionner

nom){ if ($nom!=""){ ?> nom; ?> nom; ?> nom) ?> titre; ?>
Je pense qu'il y a un problème à ce niveau :
<?php 
$nom=""; 
while( $result = mysql_fetch_object( $requete ) ){ 
    if($nom!=$result->nom){ 
        if ($nom!=""){ 
?> 
        </ul> 
    </ul> 
Il n'y a pas d'ouverture <ul>, ni de <li>, mais j'ai tout essayé (ajouter,supprimer...) sans succès.
Quelqu'un peut-il maider...svp

par ptinicola » 04 oct. 2005, 12:54

Je suis désolé mais je suis vraiment débutant, je comprend le principe mais c'est l'écriture qui me pose problème. Comment écrire "tant que la catégorie ne change pas" ? Est-ce que je doit faire une boucle supplémentaire pour les "doss". Une correction de mon code m'aiderai mieux à comprendre.
merci encore

par mere-teresa » 04 oct. 2005, 12:47

Tant que la catégorie n'a pas changé, tu affiches uniquement le dossier.

tant que ==> while()

par ptinicola » 04 oct. 2005, 12:38

Merci pour la rapidité de ta réponse.
Je suis débutant en php et pas encore familié avec les conditions. Peux-tu me donner un exemple, svp ?

par pjl » 04 oct. 2005, 12:35

le principe, c'est de mettre une condition. Tant que la catégorie n'a pas changé, tu affiches uniquement le dossier.
Si la catégorie change, tu l'affiches.

Requete MysSql et Menu en liste

par ptinicola » 04 oct. 2005, 12:31

Bonjour,
Je cherche à créér un menu en liste qui agit avec une Bdd.
Dans Ma base j'ai une table "cat" avec les champs "nom" & "id_cat", j'ai une autre table "doss" avec les champs "id_doss", "titre", "texte", "icone", "id_cat"...
Je voudrais que pour mon menu il y ai 2 niveaux de listes : niveaux 1 les "cat" & pour chaque "cat" la liste des "doss" correspondant.
J'ai un début de code (ci-dessous), quelqu'un peut-il m'aider à le corriger ? Merci.
<?php
    //connection au serveur:
	$cnx = mysql_connect(SERVEUR, USER, PASS, DB) ;
  
    //sÈlection de la base de donnÈes:
    $db = mysql_select_db( "metalobil" ) ;
  
    //requÍte SQL:
    $sql = "SELECT nom, titre, texte, icone
	      FROM cat, doss
	      WHERE cat.id_cat = doss.id_cat
	      ORDER BY nom" ;
  
    //exÈcution de la requÍte:
    $requete = mysql_query( $sql, $cnx ) ;
  
    //affichage des donnÈes:
   while( $result = mysql_fetch_object( $requete ) )
    { 
       echo("<div id=\"nav\">\n") ;
       echo("<ul class=\"level1\">\n") ;
       echo("<li class=\"submenu\">".$result->nom."\n") ;
       		echo("<ul class=\"level2\">\n") ;
       		echo("<li class=\"submenu\">".$result->titre."</li>\n") ;
       		echo("</ul>\n") ;
       		echo("</li>\n") ;
       echo("</ul>\n") ;
    }
  ?>