IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Césure dans la boucle qui parcourt la table


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Par défaut Césure dans la boucle qui parcourt la table
    Bonjour à tous,

    Soit la table :

    ID | MARQUE | MODELE
    -----------------------
    1 | Renault | R5
    2 | Peugeot | 205
    3 | Citroen | C3
    4 | Renault | Clio
    5 | Renault | Megane
    6 | Peugeot | 207
    7 | Peugeot | 308
    8 | Citroen | Xsara
    9 | Citroen | Xantia
    10 | Renault | Twingo

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <?php
    $sql = mysql_query("SELECT marque, modele FROM autos ORDER BY marque");
    while($row = mysql_fetch_assoc($sql)){
    echo "<tr><td>".$row['marque']."</td><td>".$row['modele']."</td></tr>";
    }
    ?>
    Sans faire une usine à gaz, comment faire une césure par marque et intercaler, par exemple, un <hr> quand on en change ? Est ce que c'est au niveau de la requête ? Ou du traitement PHP ?

    Si vous connaissez un tuto ou un article, je suis preneur...
    Merci d'avance.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    <hr> dans un tableau je ne sais pas si c'est bien permis mais sinon moi je tri ma requête par "marque" et dans ma boucle, je vérifie si la "marque" en cours est la même que celle que j'ai traité précédemment ou non.

    Une deuxième possibilité est de d'abords récolter les données dans un tableau en les classant par marque et ensuite de parcourir ce tableau pour l'affichage. C'est plus pratique si as des fonctions d'affichage.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre éprouvé Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Par défaut
    Citation Envoyé par sabotage Voir le message
    <hr> dans un tableau je ne sais pas si c'est bien permis mais sinon moi je tri ma requête par "marque" et dans ma boucle, je vérifie si la "marque" en cours est la même que celle que j'ai traité précédemment ou non.

    Une deuxième possibilité est de d'abords récolter les données dans un tableau en les classant par marque et ensuite de parcourir ce tableau pour l'affichage. C'est plus pratique si as des fonctions d'affichage.
    Bonjour,

    Quand je dis <hr> dans un tableau, oui, c'est pas le pb, je le mets dans un <tr><td>, mais ça aurait pu tout aussi bien être une ligne vide...le tout étant de marquer une césure à l'affichage.

    Pour ta 1ere soluce, pour savoir si la "marque" en cours est la même que celle traitée auparavant, tu incrémentes un compteur ?

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    J'utilise juste un variable qui contient garde la valeur : au prochain tour de boucle il vaudra donc la valeur de la ligne précédente.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre éprouvé Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Par défaut
    Voila... c'est le genre de truc que j'ai du mal à appréhender...Je vois pas comment la variable garde la valeur précédente et pas celle envoyée par la boucle. Comme pour "alimenter" un tableau ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $marque_modele = array();
    while($row = mysql_fetch_assoc($sql)){
         $marque_modele[$row['marque']] = $row['modele'];
    }
    ben non, ça va pas fonctionner puisque les clés vont s'écraser, mon tableau n'aura que 3 entrées correspondant aux 3 marques de la table.

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Je vois pas comment la variable garde la valeur précédente et pas celle envoyée par la boucle.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    $marque_precedente = "";
    while($row = mysql_fetch_assoc($sql)){
    if ($row['marque'] == $marque_precedente) { // des choses }
    echo "<tr><td>".$row['marque']."</td><td>".$row['modele']."</td></tr>";
    $marque_precedente = $row['marque'];
    }
    ?>
    Comme pour "alimenter" un tableau ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    while($row = mysql_fetch_assoc($sql)){
    $marque_modele[$row['marque']][] = $row['modele'];
    }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

Discussions similaires

  1. Fonction dans une boucle qui ne renvoie rien
    Par blueice dans le forum Langage
    Réponses: 9
    Dernier message: 16/08/2008, 08h46
  2. Détecter les changements dans un fichier qui alimente une table
    Par yacinechaouche dans le forum Requêtes
    Réponses: 2
    Dernier message: 23/06/2008, 17h56
  3. Boucle qui parcourt tout les ligne d'un fichier text
    Par accro-macro dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 10/05/2007, 20h21
  4. [VBA][03] Erreur dans une fonction qui vide des tables
    Par NiKoTiNe dans le forum VBA Access
    Réponses: 3
    Dernier message: 20/04/2007, 14h13
  5. Réponses: 10
    Dernier message: 07/01/2007, 12h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo