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 :

Tableau ligne conditionnée par leur valeur


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Inscrit en
    Octobre 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 14
    Par défaut Tableau ligne conditionnée par leur valeur
    Bonjour à tous,

    je rencontre un problème avec un des tableaux venant du requête sql.
    En effet, j'ai fait un tableau qui regroupe deux requêtes : une entrée et une sortie. Mon tableau fonctionne mais pour faire la différence entre les entrées et les sorties je souhaite afficher les sorties en rouge.

    J'ai tenté ça mais sans effet :
    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
    <table class="mtable">
     
    			<tr>
    			<th>Date</th>
    			<th>Ref article</th>
    			<th>Nom article</th>
     
    			<th>Quantité</th>
    			<th>faite par </th>
    		<th>Type</th>
     
    			</tr>
    			<?php
    				$mouvement = getmouvement();
     
     
    			if (!empty($mouvement) && is_array($mouvement)) { 
    				foreach ($mouvement as $key => $value) {
    			?>
    			<tr >
    				<td><?= date("d/m/Y" , strtotime ($value['date'])) ?></td>
    				<td><?= $value['e_ref_produit'] ?></td>
    				<td><?= $value['nom_produit'] ?></td>
    				<td><?= $value['quantite_entree'] ?></td>
    				<td><?= $value['e_login'] ?></td>
    				<td class="<? echo $class;?>"><?= $value['type'] ?></td>
     
                     <?php $class = $value['type'] = 'entree'  ? 'lignecoloree' : '' ?>                       
     
    			</tr>
    <style>
        .lignecoloree {
            color:red;
        }
     
    </style>
    J'ai vraiment cherché et essayé plein de chose avec des boucles mais rien ne fonctionne et je suis loin d'être doué. Je débute.

    Je vous remercie d'avance
    Merci d'avance

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 668
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 668
    Par défaut
    j'ai l'impression que vous y êtes presque arrivé et que la seule chose à changer est de mettre le calcul de $class avant l'utilisation avec "echo".

    dans votre code, je suppose que ça colorie la case d'après puisque vous avez calculé la valeur dans le passage précédent de la boucle.

  3. #3
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 322
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 322
    Billets dans le blog
    17
    Par défaut
    Là ça n'a ni queue ni tête, indenté tu t'en rendras compte plus facilement.

    Quelques conseils :
    -- Sépare au max les responsabilités (mélanger le moins possible PHP et HTML),
    -- Indenter correctement ton script
    -- Utilise la syntaxe alternative des structures de données
    -- N'oublie pas htmlspecialchars() à l'affichage
    -- Soit rigoureux dans ta rédaction : ex. tu utilises parfois "<?=" (bien), et ailleurs "<? echo" ; parfois tu délimites tes chaînes avec ', d'autres fois avec " ; pourquoi placer <style> après l'utilisation de la classe que tu y définis ?

    Cela donnerait :

    Code PHP : 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
    <?php
    
    // À toi de faire en sorte que getmouvement() retourne TOUJOURS un tableau
    // Ainsi moins de tests à l'utilisation => Script allégé
    // $mouvement étant un tableau contenant plusieurs éléments, je nomme la variable au pluriel
    // Tu devrais faire pareil pour la fonction
    $mouvements = getmouvements();
    
    ?>
    
    <?php if (empty($mouvements)): ?>
    
        <p>Pas de mouvements !</p>
    
    <?php else: ?>
    
        <table class="mtable">
            <tr>
                <th>Date</th>
                <th>Ref article</th>
                <th>Nom article</th>
                <th>Quantité</th>
                <th>Faite par</th>
                <th>Type</th>
            </tr>
    
            <?php foreach ($mouvements as $key => $value): ?>
                <tr>
                    <td><?= date('d/m/Y', strtotime($value['date'])) ?></td>
                    <td><?= htmlspecialchars($value['e_ref_produit']) ?></td>
                    <td><?= htmlspecialchars($value['nom_produit']) ?></td>
                    <td><?= htmlspecialchars($value['quantite_entree']) ?></td>
                    <td><?= htmlspecialchars($value['e_login']) ?></td>
    
                    <td class="<?= $class ?>"><?= htmlspecialchars($value['type']) ?></td>
    
                    <?php $class = $value['type'] = 'entree'  ? 'lignecoloree' : '' ?>
                </tr>
            <?php endforeach ?>
        </table>
    
    <?php endif ?>

    Voilà, on repère immédiatement que $class est utilisée AVANT sa définition et que tu utilises "=" pour faire une comparaison au lieu de "==" ou "===".

  4. #4
    Membre actif
    Inscrit en
    Octobre 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 14
    Par défaut
    Je suis vraiment désolé ça fait deux semaines que j'apprends le php en me fixant comme objectif de faire un gestionnaire de stock.
    J'ai donc suivi un tuto et l'ai modifié et ça fonctionne. À présent je veux faire les finitions.

    J'ai mis ton code, mais j'ai des erreurs il me dis que la class n'est pas définit. J'ai donc mis la définition de la class avant de l'utiliser :

    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
    <?php
    include 'entete.php';
     
          $bienvenue= $_SESSION["login"]; 
    ?>
     
     
     
    	<div class="home-content">
            <div class="overview-boxes">
     
    			<div class="box2">
    			<table class="mtable">
     
     
    			<?php
     
    // À toi de faire en sorte que getmouvement() retourne TOUJOURS un tableau
    // Ainsi moins de tests à l'utilisation => Script allégé
    // $mouvement étant un tableau contenant plusieurs éléments, je nomme la variable au pluriel
    // Tu devrais faire pareil pour la fonction
    $mouvements = getmouvements();
     
    ?>
     
    <?php if (empty($mouvements)): ?>
     
        <p>Pas de mouvements !</p>
     
    <?php else: ?>
     
        <table class="mtable">
            <tr>
                <th>Date</th>
                <th>Ref article</th>
                <th>Nom article</th>
                <th>Quantité</th>
                <th>Faite par</th>
                <th>Type</th>
            </tr>
     
            <?php foreach ($mouvements as $key => $value): ?>
    		<?php $class = $value['type'] = 'sortie'  ? 'lignecoloree' : 'noncoloree' ?>
                <tr class="<?= $class ?>">
     
                    <td><?= date('d/m/Y', strtotime($value['date'])) ?></td>
                    <td><?= htmlspecialchars($value['e_ref_produit']) ?></td>
                    <td><?= htmlspecialchars($value['nom_produit']) ?></td>
                    <td><?= htmlspecialchars($value['quantite_entree']) ?></td>
                    <td><?= htmlspecialchars($value['e_login']) ?></td>
                    <td ><?= htmlspecialchars($value['type']) ?></td>
     
     
                </tr>
            <?php endforeach ?>
        </table>
     
    <?php endif ?>
    			</div>
     
    		</div>
    	</div>
     
     
      </section>  
    <style>
    .lignecoloree
    { color:red }
    </style>
    <?php
     
    include 'pied.php'
     
    ?>
    Le résultat est Nom : Capture d’écran 2022-12-10 173810.png
Affichages : 94
Taille : 103,0 Ko

    je m'excuse d'avance. J'essaye vraiment de comprendre et d'appliquer tes conseils

  5. #5
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 322
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 322
    Billets dans le blog
    17
    Par défaut
    J'ai mis ton code mais j'ai des erreurs
    Ce n'est pas mon code, c'est le tien remis en forme pour mieux voir les erreurs/anomalies, et comme indiqué ce matin on voit effectivement que $class n'est pas correctement utilisée
    Je vois qu'il n'y a aucun effort effectué sur l'indentation et le reste malgré le temps que j'ai pris à illustrer comme faire.
    EOT me concernant.

  6. #6
    Membre actif
    Inscrit en
    Octobre 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 14
    Par défaut
    Je suis désolé je n'avais pas compris. Je vais me casser la tête et revenir avec mieux. Désolé pour le temps perdu

  7. #7
    Membre actif
    Inscrit en
    Octobre 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 14
    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
    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
    <?php
    include 'entete.php';
     
          $bienvenue= $_SESSION["login"]; 
    ?>
     
     
     
    	<div class="home-content">
            <div class="overview-boxes">
     
    			<div class="box2">
    			<table class="mtable">
     
     
    			<?php
     
    // À toi de faire en sorte que getmouvement() retourne TOUJOURS un tableau
    // Ainsi moins de tests à l'utilisation => Script allégé
    // $mouvement étant un tableau contenant plusieurs éléments, je nomme la variable au pluriel
    // Tu devrais faire pareil pour la fonction
    $mouvements = getmouvements();
     
    ?>
     
    <?php if (empty($mouvements)): ?>
     
        <p>Pas de mouvements !</p>
     
    <?php else: ?>
     
        <table class="mtable">
            <tr>
                <th>Date</th>
                <th>Ref article</th>
                <th>Nom article</th>
                <th>Quantité</th>
                <th>Faite par</th>
                <th>Type</th>
            </tr>
     
            <?php foreach ($mouvements as $key => $value): ?>
    		<?php $class = $value['type'] == 'sortie'  ? 'lignecoloree' : 'noncoloree' ?>
                <tr class="<?= $class ?>">
     
                    <td><?= date('d/m/Y', strtotime($value['date'])) ?></td>
                    <td><?= htmlspecialchars($value['e_ref_produit']) ?></td>
                    <td><?= htmlspecialchars($value['nom_produit']) ?></td>
                    <td><?= htmlspecialchars($value['quantite_entree']) ?></td>
                    <td><?= htmlspecialchars($value['e_login']) ?></td>
                    <td><?= htmlspecialchars($value['type']) ?></td>
     
     
                </tr>
            <?php endforeach ?>
        </table>
     
    <?php endif ?>
    			</div>
     
    		</div>
    	</div>
     
     
      </section>  
    <style>
    .lignecoloree
    { color:red }
    </style>
    <?php
     
    include 'pied.php'
     
    ?>
    C'est bon ça fonctionne je vais télécharger un meilleurs logiciel pour indenter un peu mieux.

    Merci de ton aide.

  8. #8
    Membre chevronné Avatar de ddaweb
    Homme Profil pro
    Webmaster amateur
    Inscrit en
    Janvier 2013
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Webmaster amateur
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Janvier 2013
    Messages : 341
    Par défaut
    Citation Envoyé par skynet57330 Voir le message
    C'est bon ça fonctionne je vais télécharger un meilleurs logiciel pour indenter un peu mieux.
    Indenter avec les tabulations dans votre code.

    Vous utiliser quoi pour coder ?
    Je suis encore avec Notepad ++, mais je suis à la recherche de quelque chose de plus performant, c'est souvent Visual Studio Code qui sort en gratuit ... étant un peu anti GAFAM, j'aimerais l'éviter dans la mesure du possible
    J'ai installé CodeLite IDE hier, pour tester.

    Notepad ++ ne devrait plus me servir que lorsque que suis en vacances ou codage en dehors de chez moi, sur mon portable et avec un clé USB où j'ai un serveur web ... pas de données sur celui-ci

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

Discussions similaires

  1. [RegEx] Substituer des clé par leurs valeur dans une chaine
    Par marcha dans le forum Langage
    Réponses: 6
    Dernier message: 02/07/2010, 15h53
  2. Remplacer des cellules par leurs valeurs
    Par benoitbs dans le forum Excel
    Réponses: 1
    Dernier message: 28/01/2008, 11h21
  3. [RegEx] Pour remplacer des identifiants de fichiers incorporés par leur valeur
    Par Christophe Charron dans le forum Langage
    Réponses: 12
    Dernier message: 23/08/2007, 08h54
  4. [JSTL] Mes variables ne sont pas remplacées par leur valeur
    Par thomine dans le forum Taglibs
    Réponses: 9
    Dernier message: 18/03/2005, 10h00

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