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 :

Requete : Affichage particulier [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Par défaut Requete : Affichage particulier
    Bonjour,

    Je cherche à afficher le résultat de ma requete sous cette forme :

    Exemple et avec lignes bien distinctes par type :

    Ref-A 200 350 180 870 190 470
    Ref-B 460 175 840 350
    Ref-C 625 330 120
    Ref-D 470


    à partir de ma table :



    Table :

    CREATE TABLE test (
    id int(11) NOT NULL auto_increment,
    type varchar(255) NOT NULL,
    cumul varchar(255) NOT NULL,
    PRIMARY KEY (id)
    );



    INSERT INTO test VALUES ( '1', 'Ref-A', '200');
    INSERT INTO test VALUES ( '2', 'Ref-A', '350');
    INSERT INTO test VALUES ( '3', 'Ref-A', '180');
    INSERT INTO test VALUES ( '4', 'Ref-A', '870');
    INSERT INTO test VALUES ( '5', 'Ref-B', '460');
    INSERT INTO test VALUES ( '6', 'Ref-B', '175');
    INSERT INTO test VALUES ( '7', 'Ref-C', '625');
    INSERT INTO test VALUES ( '8', 'Ref-C', '330');
    INSERT INTO test VALUES ( '9', 'Ref-C', '120');
    INSERT INTO test VALUES ( '10', 'Ref-A', '190');
    INSERT INTO test VALUES ( '11', 'Ref-A', '470');
    INSERT INTO test VALUES ( '12', 'Ref-D', '470');
    INSERT INTO test VALUES ( '13', 'Ref-B', '840');
    INSERT INTO test VALUES ( '14', 'Ref-B', '350');

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    print("<table><tr>");
     
    $results = mysql_query("SELECT DISTINCT type, cumul FROM test ORDER BY type ");
     
    while ($produit = mysql_fetch_array($results))
    	{
    		$id = $produit["id"];
    		$type = $produit["type"];
    		$cumul = htmlentities(StripSlashes($produit["cumul"]));
     
           print("<td>$type</td><td>$cumul</td>");		
     
    }
    print("</tr></table>");
    J'ai bien essayé de la façon ci-dessus mais l'affichage n'est pas conforme à ce que je souhaite.
    Il m'affiche à répétition le type et le tout est affiché sur une seule et même ligne.
    Pouvez-vous, svp, me donner un coup de main, si il y a une méthode plus adaptée ?... ou bien s'il convient de définir la table differemment ?

    Merci à vous
    Cordialement

  2. #2
    Membre Expert
    Avatar de Nesmontou
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Septembre 2004
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 612
    Par défaut
    Salut, tu peux t'inspirer de ce qui suit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $results = mysql_query("SELECT DISTINCT type, cumul FROM test ORDER BY type ");
     
    $type = '';
     
    while ($produit = mysql_fetch_array($results))
    {
      if($type != $produit['type'])
      {
        $type = $produit['type'];
        echo '<br>';
        echo $type;
      }
      echo ' '.$produit['cumul'];
    }
    Le résultat n'est pas sous forme de table, mais tu peux adapter ; l'idée est là.

    Bon développement ;-)

  3. #3
    Membre émérite Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Par défaut
    Bonsoir Nesmontou

    Oui, sympa l'idée et je te remercie pour ta précieuse suggestion.

    Il est un fait qu'en utilisant de simples retour <br> ou pas, celà simplifie beaucoup les choses, notemment pour l'affichage.
    Mais dés lors que l'on souhaite mettre en forme avec des tables html, ça semble ...paradoxalement moins évident. lloll
    Je vais continuer à creuser...
    Mais le principal, c'était avant tout d'empêcher l'affichage multiple du "type", chose faite avec ta solution.

    Merci à toi
    cordialement

  4. #4
    Membre Expert
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Par défaut
    Salut,

    Par rapport au shema de ta base ect tu vas devoir le faire en deux temps :


    Je ne l'ai pas testé mais sa doit s'approcher de la solution. Apres y'à plus qu'à le mettre en forme.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    <table>
    <?
    $results = mysql_query("SELECT DISTINCT (type) FROM test ORDER BY type "); 
     
    $type = ''; 
     
    while ($produit = mysql_fetch_array($results)) 
    { 
      if($type != $produit['type']) 
      { 
      ?>
      <tr>
      <td>
      <? echo $produit['type'];  ?>
      <table>
      <tr>
      <? $sql ="SELECT cumul  FROM test WHERE `type`='".$produit['type']."' ORDER BY cumul"; 
    	$query2 = mysql_query($sql);
    	while($res2 = mysql_fetch_array($query2 , MYSQL_ASSOC ) )
    	{
    		<? 
    		<td>
    		<? echo $res2["cumul"]; ?>
    		</td>
    		<?
    	}  
    	?>
      </tr>
      </table>
      </td>
      </tr>
      <?
      } 
    }
    ?>
    </table>
    bye

  5. #5
    Membre émérite Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Par défaut
    Oula Epox, compliqué ta suggestion.

    Déjà :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    while($res2 = mysql_fetch_array($query2 , MYSQL_ASSOC ) ) 
       { 
          <?
    ta balise <?....hum hum

    Ensuite en reprenant la suggestion de Nesmontou
    Suffit de rajouter avant et en fin de requete :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    print ("<table><tr>");
     
    print ("</tr></table>");
    de remplacer le <br> par :

    Puis de baliser les echo avec des <td> et </td>

    pis c'est cool !

    Merci quand même pour ton intervention
    cordialement

  6. #6
    Membre Expert
    Avatar de Nesmontou
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Septembre 2004
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 612
    Par défaut
    Salut, tu veux faire un truc du style
    | Ref-A | --- | --- | --- |
    | Ref-B | --- |
    | Ref-C | --- | --- | --- |
    | Ref-D | --- | --- |
    :

    Je pense aussi qu'il faut procéder en 2 temps (mais pas comme ePoX ;-)) :
    1 - Récupérer le nombre de cumul pour chaque type, pour savoir combien il va y avoir de colonnes
    2 - Afficher les informations

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    $cpt = mysql_query('SELECT MAX(COUNT(*)) AS compte FROM test GROUP BY type;');
    $obj = mysql_fetch_object($cpt);
    $max = $obj->compte;
     
    $results = mysql_query("SELECT DISTINCT type, cumul FROM test ORDER BY type ");
     
    $type = '';
    $temp = 0;
     
    echo '<table>';
    echo '<tr>';
    while ($produit = mysql_fetch_array($results))
    {
      if($type != $produit['type'])
      {
        if($type != '') // On complète les cellules vides
        {
          for($i=$temp; $i < $max; $i++)
          {
            echo '<td>&nbsp;</td>';
          }
          echo '</tr>';
          echo '<tr>';
        }
     
        $type = $produit['type'];
     
        echo '<td>';
        echo $type;
        echo '</td>';
      }
      echo '<td>'.$produit['cumul'].'</td>';
      $temp++;
    }
    echo '</tr>';
    echo '</table>';
    Voilà, je n'ai pas du tout testé
    Dis-moi si le résultat n'est pas trop bizarre ;-)

    Bonne continuation

  7. #7
    Membre émérite Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Par défaut [RESOLU]
    Salut

    Oui, je l'ai testée et l'affichage est ok, sauf une erreur d'argument dans les 2 premières lignes; (?)

    Sinon j'ai retenu ton option première aprés l'avoir aménagée d'html, et celà me convient. Elle est surtout moins "lourde" par rapport à la dernière.

    merci pour tes interventions.

    Bon week !
    Cordialement

  8. #8
    Membre Expert

    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    1 581
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 581
    Par défaut Re: [RESOLU]
    Citation Envoyé par alain31tl
    Sinon j'ai retenu ton option première aprés l'avoir aménagée d'html, et celà me convient. Elle est surtout moins "lourde" par rapport à la dernière.
    Oui et on appelle ça une "rupture".
    N'oublie pas de mettre "résolu"

  9. #9
    Membre émérite Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Par défaut [RESOLU]
    Ben je l'avais précisé [RESOLU] sur mon dernier et précédent message.

    Ce n'est pas de cette façon qu'il faut l'indiquer ?

  10. #10
    Membre Expert
    Avatar de Nesmontou
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Septembre 2004
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 612
    Par défaut
    Salut, pour indiquer qu'un message est résolu, tu dois cliquer sur le bouton en bas à gauche de la page

    Bonne fin de week-end ;-)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Requete]Affichage du mois et de l'année d'une date
    Par le_gueux90 dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 10/01/2008, 09h41
  2. boucler sur une requete & affichage resultat
    Par ricoree78 dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 24/08/2007, 15h44
  3. treeView affichage particulier ?
    Par samtheh dans le forum VBA Access
    Réponses: 12
    Dernier message: 23/07/2007, 16h19
  4. [SimpleXML] Problème PHP5/XML pour des affichages particuliers
    Par vanilla dans le forum Bibliothèques et frameworks
    Réponses: 7
    Dernier message: 20/04/2006, 13h22
  5. Requete affichage valeurs diferentes d'un champs
    Par joxbl dans le forum Requêtes
    Réponses: 4
    Dernier message: 10/11/2005, 15h27

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