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

Langage PHP Discussion :

Affichage Tableau Catégories et Produits


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Homme Profil pro
    chezmoi
    Inscrit en
    Février 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : chezmoi
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2013
    Messages : 4
    Points : 4
    Points
    4
    Par défaut Affichage Tableau Catégories et Produits
    Bonjour,
    Je m'arrache les cheveux pour afficher un tableau.
    J'aimerai qu'il soit classé par catégories, et que les catégories ne s'affichent que si un produits de cette catégorie est choisi.

    Le tableau initial est complété depuis une base de donnée, dont voici le code (choix produits.php) :
    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
    <form method="post" action="founitures_recap.php">
     
    <div id="tableau">
    <table width="100%">
     
    <thead>
    <tr>
    <th scope="col">DOCUMENTS</th>
    <th scope="col">APER&Ccedil;U</th>
    <th scope="col">CONDITIONNEMENT</th>
    <th scope="col">MAXI<br>AUTORIS&Eacute;</th>
    <th scope="col">QUANTIT&Eacute;<br>SOUHAIT&Eacute;E</th>
    </tr>
    </thead>
     
    <tbody>
     
    <?php
    $nbr_cat = 0; //incrémente le nbr de catégories
    $nbr_fourni = 0; //incrémente le nbr de fournitures
     
    //On selectionne les categories
    while ($cat = mysql_fetch_array($fournitures_cat))  
    {
    echo '<tr >
    <td colspan="5" class="fbleuclair" align="center">'.$cat['nom_fournit_cat'].'</td>
    </tr >';
     
    //On selectionne les fournitures de la categorie en cours
    $fournitures_liste_cat = mysql_query("SELECT * FROM fournitures_liste WHERE id_f_cat='".$cat['id_f_cat']."' AND online_f = 'on' ORDER BY id_f_cat ASC");
     
    	while($contenu = mysql_fetch_array($fournitures_liste_cat))
    	{
    	?>
        <tr >
    	<th scope="row" class="fblanc" align="left"><?php echo $contenu['nom_fournit']?></th>
    	<th scope="row" class="fblanc" align="center"><a href=""><img src="../images_fournitures/petites/<?php echo $contenu['image_f']?>" style="border: 1px solid #CCCCCC;"></a>	
    	</th>
    	<th scope="row" class="fblanc" align="center"><?php echo $contenu['condit_f']?></th>
    	<th scope="row" class="forangeclair" align="center"><?php echo $contenu['max_cde_f']?></th>
    	<th scope="row" class="fvert" align="center">
    	<input name="qte_<?php echo $nbr_fourni ?>" type=text class="inptableautext" value="">	
    	</th>
    	</tr>
    	</tbody>
        <input type ="hidden" name ="nom_fournit_<?php echo $nbr_fourni ?>" value =" <?php echo $contenu['nom_fournit'] ?>">
        <input type ="hidden" name ="image_f_<?php echo $nbr_fourni ?>" value =" <?php echo $contenu['image_f'] ?>">
        <input type ="hidden" name ="condit_f_<?php echo $nbr_fourni ?>" value =" <?php echo $contenu['condit_f'] ?>">
        <input type ="hidden" name ="max_cde_f_<?php echo $nbr_fourni ?>" value =" <?php echo $contenu['max_cde_f'] ?>">
    	<input type="hidden" name="catqt_<?php echo $nbr_fourni ?>" value="<?php echo $nbr_cat;?>">
        <input type="hidden" name="categorie<?php echo $nbr_cat ?>" value="<?php echo $cat['nom_fournit_cat'];?>">
    	<?php 
    	$nbr_fourni++;
    	}
    $nbr_cat++;
    }
    ?>
    </table>
     
    <input type="hidden" name="nbr_cat" value="<?php echo $nbr_cat;?>">
    <input type="hidden" name="nbr_fourni" value="<?php echo $nbr_fourni;?>">
     
    <p align="center"><input type="submit" id="valider" name="submit_achat_fournitures" value=""></p>
     
    </form>
    Je récupère le formulaire sur la page confirm.php avec le code suivant :
    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
    <form method="post" action="<?php $_SERVER['PHP_SELF'] ?> ">
     
    <div id="tableau">
    <table width="100%">
    <thead>
    <tr>
    <th scope="col">DOCUMENTS</th>
    <th scope="col">APER&Ccedil;U</th>
    <th scope="col">CONDITIONNEMENT</th>
    <th scope="col">MAXI<br>AUTORIS&Eacute;</th>
    <th scope="col">QUANTIT&Eacute;<br>SOUHAIT&Eacute;E</th>
    </tr>
    </thead>
    <?php
    $nbr_cat = $_POST['nbr_cat'];
    $nbr_fourni = $_POST['nbr_fourni'];
     
    if ( $nbr_fourni > 0 ){	
    	for ($nc=0; $nc < $nbr_cat;$nc++){
    		$cat = $_POST['categorie'.$nc];
    		echo '<tr><td colspan="5" class="fbleuclair" align="center">'.$cat.'</td></tr >';
     
    			for ($nf=0; $nf < $nbr_fourni;$nf++){
    			$nom_fournit = $_POST['nom_fournit_'.$nf];
                $image_f = $_POST['image_f_'.$nf];
                $condit_f = $_POST['condit_f_'.$nf];
                $max_cde_f = $_POST['max_cde_f_'.$nf];
     			$qte = $_POST['qte_'.$nf];
                $catqt = $_POST['catqt_'.$nf];
    			/*$maxi = $_POST['maxi'.$i];*/
     
    				if ($qte <> "" && $catqt == $nc  /* et qte_cat == cat0 */){
    				echo '<tr><th scope="col">'.$nom_fournit.'</th><th scope="col">'.$image_f.'</th><th scope="col">'.$condit_f.'</th><th scope="col">'.$max_cde_f.'</th><th scope="col">'.$qte.'</th></tr>';
     
    				}
    			}
    	}	
    }
    ?>
    </table>
    <p align="center">
    <input type="submit" id="modifier" name="submit_modif_fournitures" value="">
    <input type="submit" id="confirmer" name="submit_confirm_fournitures" value="">
    </p>
     
    </div>
    </form>
    Voilà ce que j'obtiens en résultat dans confirm.php.
    Nom : capture01.jpg
Affichages : 70
Taille : 50,2 Ko
    Dans l'exemple ci-dessus, le client a choisi un produit dans la catégorie "outils".
    J'aimerai que les différentes catégories (divers, cadeau de bienvenue...) n'apparaissent que si un produit de la catégorie est choisi.

    Je pense que je ne suis pas très loin de la solution, mais j'y suis depuis 2 jours...Pfffff.

    Auriez-vous une idée?
    Merci :-)

  2. #2
    Membre averti

    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 205
    Points : 409
    Points
    409
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par rogers75017 Voir le message
    Dans l'exemple ci-dessus, le client a choisi un produit dans la catégorie "outils".
    Dans ton code, comment tu sais à quelle catégorie appartient chaque produit ?
    si ce post vous a été utile, si votre problème est résolu.
    Pensez-y !
    __________________________________
    Doc officielle PHP | FAQ PHP | Cours PHP

  3. #3
    Candidat au Club
    Homme Profil pro
    chezmoi
    Inscrit en
    Février 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : chezmoi
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2013
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Bonjour Karim,

    Je suis désolé, le code n'est pas très commenté.
    Dans la page "choix produits.php", je passe une variable en input hidden.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type ="hidden" name ="nom_fournit_<?php echo $nbr_fourni ?>" value =" <?php echo $contenu['nom_fournit'] ?>">
    me donne le nom du produit.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input name="qte_<?php echo $nbr_fourni ?>" type=text class="inptableautext" value="">
    permet au client d'indiquer la quantité.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="hidden" name="catqt_<?php echo $nbr_fourni ?>" value="<?php echo $nbr_cat;?>">
    me donne la catégorie... en fait le nombre généré par la boucle $nbr_catJe récupère les valeurs dans la page "confirm.php"

    Merci pour ton aide :-)

  4. #4
    Candidat au Club
    Homme Profil pro
    chezmoi
    Inscrit en
    Février 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : chezmoi
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2013
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Je continue de chercher la solution, mais c'est juste l'enfer :-(
    Alors, je pense qu'il faudrait réaliser 2 boucles imbriquées (dans confirm.php, en remplacement des lignes 19 à 38), une pour afficher les catégories qui contiennent des produits sélectionnés dans le précédent tableau, et une seconde boucle pour afficher les produits eux-mêmes...

    SAUF QUE JE NE SAIS PAS FAIRE CA ! :-(
    Tout ce que j'essaie (boucle if simple, foreach, usort, et j'en passe) ne donne rien


    Personne n'aurait un début d'idée ? Allez !!!! :-)

  5. #5
    Membre averti

    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 205
    Points : 409
    Points
    409
    Billets dans le blog
    1
    Par défaut
    En fait il te faut bien concevoir ton formulaire en amont pour pouvoir récupérer simplement les éléments dont tu as besoin ensuite dans l'idéal il te faudrait donc revoir ton formulaire pour qu'il corresponde mieux à ton besoin...

    En l'état actuel des choses, ce qui t'intéresse, c'est la quantité de chaque produit qu'il a prit : s'il a choisit au moins un produit, on affiche la catégorie !
    Voilà une solution simple qui devrait avoir le mérite de faire ce que tu veux :
    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
     
    <?php
    $nbr_cat = intval($_POST['nbr_cat']); // intval pour être sûr de récupérer un nombre
    $nbr_fourni = intval($_POST['nbr_fourni']);
     
    if ($nbr_fourni > 0)
    { 
        for ($nc=0; $nc < $nbr_cat;$nc++)
        {
            $cat = htmlentities($_POST['categorie'.$nc], ENT_QUOTES, 'UTF-8');
            $display_categorie = TRUE; // On souhaite afficher la catégorie s'il y a au moins un produit
            for ($nf=0; $nf < $nbr_fourni;$nf++)
            {
                $qte = intval($_POST['qte_'.$nf]);
                $catqt = htmlentities($_POST['catqt_'.$nf], ENT_QUOTES, 'UTF-8');
                if ($qte > 0 && $catqt == $nc) 
                {
                    if ($display_categorie) // Premier passage dans la condition
                    {
                    	echo '<tr><td colspan="5" class="fbleuclair" align="center">'.$cat.'</td></tr >';
                        $display_categorie = FALSE; // La catégorie est affichée, on ne veut pas l'afficher une deuxième fois !
                    }
                    $nom_fournit = htmlentities($_POST['nom_fournit_'.$nf], ENT_QUOTES, 'UTF-8'); // on filtre pour l'affichage
                    $image_f = htmlentities($_POST['image_f_'.$nf], ENT_QUOTES, 'UTF-8');
                    $condit_f = htmlentities($_POST['condit_f_'.$nf], ENT_QUOTES, 'UTF-8');
                    $max_cde_f = htmlentities($_POST['max_cde_f_'.$nf], ENT_QUOTES, 'UTF-8');
                    echo '<tr><th scope="col">'.$nom_fournit.'</th><th scope="col">'.$image_f.'</th><th scope="col">'.$condit_f.'</th><th scope="col">'.$max_cde_f.'</th><th scope="col">'.$qte.'</th></tr>';
                }
            }
        }   
    }
    ?>
    si ce post vous a été utile, si votre problème est résolu.
    Pensez-y !
    __________________________________
    Doc officielle PHP | FAQ PHP | Cours PHP

  6. #6
    Candidat au Club
    Homme Profil pro
    chezmoi
    Inscrit en
    Février 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : chezmoi
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2013
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Merci pour ton aide :-)
    En fait, mon post est en "résolu" depuis hier.
    Ta solution aurait surement convenu, mais en fait, effectivement, le formulaire de base choix produits.php méritait d'être modifié.
    Mais j'ai bien noté l'usage de display que je ne connaissais pas.

    Ce développement est un peu compliqué pour moi, j'aurai surement d'autres questions :-)

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

Discussions similaires

  1. [Joomla!] Affichage des catégories dans un tableau
    Par jeromeG dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 0
    Dernier message: 26/02/2010, 14h05
  2. Affichage tableau
    Par lazzeroni dans le forum BIRT
    Réponses: 1
    Dernier message: 13/04/2006, 09h31
  3. affichage tableau
    Par rdams dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 22/02/2006, 11h15
  4. [Tableaux] affichage tableau
    Par klimero dans le forum Langage
    Réponses: 4
    Dernier message: 12/01/2006, 15h47
  5. affichage tableau
    Par je®ome dans le forum C
    Réponses: 5
    Dernier message: 27/10/2005, 17h59

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