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 :

[SQL] Affichage de données


Sujet :

PHP & Base de données

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4
    Points : 2
    Points
    2
    Par défaut [SQL] Affichage de données
    Bonjour, je developpe un programme de gestion d'articles et de tarifs.

    j'utilise php et mysql.

    Explication :
    - par un systeme de case a cocher (il y en a 3), je selectionne les tarifs a afficher pour impression. (cette partie fonctionne)

    - j'utilise une boucle while pour l'affichage de données.(ca va aussi )

    - par contre, quand je selectionne 2 ou toutes les cases a cocher, cela m'affiche toute mes données (c bon) mais je voudrais que les données qui correspondent (a un champ nommé gamme dans ma bdd) s'affichent avec une séparation entre chacune des gammes.(la je bloque)

    -Pour corser le tout, je voudrais que les données s'affichent sur 3 colonnes selon une quantité predifinie.

    voici mon code :

    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    $id_tarif=$_POST['tarif'];
     
    $req1="select * from tarif where id_tarif='$id_tarif'";
    $res1=mysql_query($req1);
     while($data1=mysql_fetch_array($res1))
     {
      $factoring=$data1['factoring'];
      $transport=$data1['transport'];
      $rrr=$data1['rrr'];
     }
     
    $options = $_POST['options'];
     
     $ctrl=sizeof($options);
     if($ctrl=='1')
     {
    $o=$options[0];
       $o1='';
       $o2='';
     
    $req = "SELECT * FROM articles where gamme='$o' and fax='1' order by gamme, origine, nom";
    $res=mysql_query($req);
     $total=mysql_num_rows($res);
     
     }elseif($ctrl=='2')
     {
       $o=$options[0];
       $o1=$options[1];
       $o2='';
     
       $req = "SELECT * FROM articles where gamme='$o' and fax='1' || gamme='$o1' and fax='1' order by gamme, origine, nom";
       $res=mysql_query($req);
        $total=mysql_num_rows($res);
     
     }else
     {
       $o=$options[0];
       $o1=$options[1];
       $o2=$options[2];
       $req = "SELECT * FROM articles where fax='1' order by gamme, origine, nom";
       $res=mysql_query($req);
       $total=mysql_num_rows($res);
    }
     
     
    echo'<center><table border="0" bordercolor="blue" height="100%" width="80%"><tr><td align="center">DELTA MAREE</td></tr>
    <tr><td align="center">';
     
    while($data=mysql_fetch_array($res))
    {
       $tablo[]=$data;
    }
     
     $nbcol=2; //--- détermine le nombre de colonnes
     
    $nb=count($tablo);
    for($i=0;$i<$nb;$i++){
     
    //--- les valeurs que l'on souhaite afficher
    $nom=$tablo[$i]['nom'];
    $conditionnement=$tablo[$i]['conditionnement'];
    $origine=$tablo[$i]['origine'];
    $prix=$tablo[$i]['prix'];
    $marge=$tablo[$i]['marge'];
     
       $pm=$prix+$marge;
      $pv=(($pm*$rrr)+$transport)*$factoring;
      $pv=round($pv,2);
     
      if($total>15)
    {
     
    if($i%$nbcol==0)
    echo '<table border="0" width="70%" bordercolor="red" cellpadding="0" cellspacing="0">';
    echo '<tr>';
    echo '<td align="center" width="30%">',$nom,'</td>','<td align="center" width="20%">',$conditionnement,'</td>','<td align="center" width="30%">',$origine,'</td>','<td align="center" width="20%">',$pv,'</td>';
     
    if($i%$nbcol==($nbcol-1))
    echo '</tr>';
     
    }
    else{
    echo'<table border="0" width="60%" bordercolor="red" cellpadding="0" cellspacing="0"><tr><td align="center" width="35%">',$nom,'</td>','<td align="center" width="20%">',$conditionnement,'</td>','<td align="center" width="25%">',$origine,'</td>','<td align="center" width="20%">',$pv,'</td></tr>';
    }
    }
     
    echo'</table>';
    Merci d'avance.

  2. #2
    Membre averti Avatar de nicocsgamer
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    321
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 321
    Points : 342
    Points
    342
    Par défaut
    Dans ta requete sql, tu peux faire un group by sur la gamme de produit.

    Ou alors tu fais deux boucles. La première parcoure les gammes et pour chaque gamme tu parcoure les produits.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    pour le coup des 2 boucles, tu peux approfondir s'il te plait car je vois pas trop comment les imbriquées.

    group by marche comme order by?

  4. #4
    Membre averti Avatar de nicocsgamer
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    321
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 321
    Points : 342
    Points
    342
    Par défaut
    Group by regroupe les données par "paquets". Par exemple toutes les lignes dont la gamme sera égale à 1 ensemble.

    Pour les deux boucles :

    Une première parcoure les gamme. A chaque tour de celle ci tu récupére le numéro de la gamme par exemple.

    Tu fais une requête à la base pour selectionner tous les produits dont la gamme est égale au numéro que tu viens de récupéré.(clause where).

    Tu fais une boucle qui parcoure tous les produits de ta requête.

    Algo :

    Recup toutes les gammes
    Tant que des gamme dans le résultat
    Recup numéro gamme courante
    Recup tous les produits de cette gamme
    Tant que des produits dans le résultat

    Fin tant que
    Fin tant que

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    quand tu parles de numero de gamme, tu penses a un id?
    parce que je travaille que sur une table en fait qui se decompose comme tel :

    id, nom, conditionnement, gamme, origine, marge, prix, fax. Donc je peux recuperer les noms des gammes mais par leur id car il est pas unique pour le champ gamme.

    Dans ton explication, y a un truc que je comprend pas, quand tu dis :
    Une première parcoure les gamme. A chaque tour de celle ci tu récupére le numéro de la gamme par exemple.

    Tu fais une requête à la base pour selectionner tous les produits dont la gamme est égale au numéro que tu viens de récupéré.(clause where).

    Tu fais une boucle qui parcoure tous les produits de ta requête.
    Sachant que j'ai 4 gammes, faut que je fasses 4 fois l'operation?

    Sinon, tu pourrais m'aiguiller un peu car etant autodidacte, je ne fonctionne pas trop avec des algorithmes (d'ou la lourdeur de mon code) et j'ai du mal à traduire ton algorithme en code

    Et dernier abus, pour la partie de mon code ou je recupere les case a cocher dans un tableau, comment je peux automatiser ce code si je veux rajouter des case à cocher?

    Encore merci de ta patience.

  6. #6
    Membre averti Avatar de nicocsgamer
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    321
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 321
    Points : 342
    Points
    342
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $sql1 = "select * from gamme";
     
    $resultat1 = mysql_query($sql1);
     
     while($data1 = mysql_fetch_array($resultat1))
     {
       $gamme = data1['idGamme'];
       $sql2 = "select * from produit where idGamme = ".$gamme; 
       $resultat2 = mysql_query($sql2); 
       while($data2 = mysql_fetch_array($resultat2))
       {
       //affichage des produits d'une gamme
       }
     }

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Merci à toi, j'ai adapté ton idée avec mon code car je t'ai dit, je n'ai pas d'id pour la gamme et ca fonctionne correctement, maintenant il ne me reste plus que de la mise en page.

    Merci à toi.

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

Discussions similaires

  1. [MySQL] [merci à Nnay ;)]Boucle while + SQL -> Affichage des données
    Par DiPSoMaNiE dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 15/01/2009, 11h45
  2. [SQL] Affichage des données
    Par temperature dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 27/02/2008, 11h31
  3. [SQL] affichage d'une requete SQL avec un echo (donnée unique)
    Par khamett dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 17/10/2007, 20h03
  4. request sql, suivi d'un changement d'affichage de données ?
    Par chapeau_melon dans le forum Oracle
    Réponses: 6
    Dernier message: 14/03/2007, 08h18
  5. [SQL] Réaliser un affichage de données avec possibilité de modification
    Par Adrien93 dans le forum PHP & Base de données
    Réponses: 15
    Dernier message: 03/11/2006, 00h07

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