[RESOLU] Condition if dans while (retard d'affichage)

Petit nouveau ! | 1 Messages

14 mars 2017, 17:54

Bonjour,
Je suis bloqué sur l'affichage de couleur conditionnel d'un tableau.
J'ai une section html qui permet d'entrer des données sur une ligne, une fois les données entrée, elles sont stockées dans une base de données mysql. Une requête $_POST envoie les informations vers un fichier php qui récupère les informations et les prépare pour l'affichage. Enfin, j'ai une section mysql-php qui affiche les données dans un tableau. Jusqu'ici tout marche bien, mais j'aimerai ajouter des couleurs à chaque ligne de façon conditionnel, par exemple "si la valeur de telle entrée est égal à cela, affiche le fond en telle couleur" .
Cependant, quand je place mes conditions dans la boucle while ($donnees = $reponse->fetch()) { la ligne est stocké dans la base mysql, mais n'est pas affiché et quand j'entre une seconde ligne la précédente ligne est alors affiché.
Merci d'avance pour votre aide! :D

Préparation des données à l'affichage : Tableau_post.php
<?php

        // Connexion à la base de données

        try

        {

        $bdd = new PDO('mysql:host=localhost;dbname=Logistique;charset=utf8', 'root', 'Intranet*33*');

        }

        catch(Exception $e)

        {

        die('Erreur : '.$e->getMessage());

        }

        // Insertion du message à l'aide d'une requête préparée
        if (!empty ($_POST['TRANSPORTEUR']))
        {

        $req = $bdd->prepare('INSERT INTO Commandes (DATE, TYPE, ACTIVITE, TRANSPORTEUR, OPERATION, QUANTITE,
        ALLEE, HARRIVE, CARISTE, HDEPART, HFIN, VALIDATION) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)');

        $req->execute(array($_POST['DATE'], $_POST['TYPE'], $_POST['ACTIVITE'], $_POST['TRANSPORTEUR'], $_POST['OPERATION']
        , $_POST['QUANTITE'], $_POST['ALLEE'], $_POST['HARRIVE'], $_POST['CARISTE'], $_POST['HDEPART'], $_POST['HFIN'],    $_POST['VALIDATION'] ));
        }


        

        header('Location: Tableau.php');

?>
Affichage du tableau : Tableau.php
<?php
        // Connexion à la base de données

        try

        {

        $bdd = new PDO('mysql:host=localhost;dbname=Logistique;charset=utf8', 'root', 'Intranet*33*');

        }

        catch(Exception $e)

        {

        die('Erreur : '.$e->getMessage());

        }

        $reponse = $bdd->query ('SELECT DATE, TYPE, ACTIVITE, TRANSPORTEUR, OPERATION
        , QUANTITE, ALLEE, HARRIVE, CARISTE,  HDEPART, HFIN, ID, VALIDATION FROM Commandes ORDER BY ID DESC LIMIT 0, 80');
        $donnees = $reponse->fetch();
 



while ($donnees = $reponse->fetch())  {


        switch ($donnees['VALIDATION']){
                case 'EN COURS':
                        $color='#FF6347';
                break;
                case 'OK':
                        $color='#9ACD32';
                break;
        }
         if($donnees['TYPE'] == 'CAMION') {
                $color2 = '#FFA500';
        }
        elseif($donnees['TYPE'] != 'CAMION') {
                $color2 = '#9ACD32';
        }

        if(!empty($donnees['HDEPART'])) {
                $color2 = '#C0C0C0';
        }

        if(!empty($donnees['HFIN'])) {
                $color2 = '#FFFAFA';
        }


echo '<form action="Supprimer.php" method="POST">
        <tr style="font-weight:bolder;"><td><strong>' . '<input style="background-color: '.$color2.';" id="test" class="tdrow" style="text-align:center;" type="text" name="date" value="'.htmlspecialchars($donnees['DATE']).'">'
        . '</strong></td><td>' . '<input  style="background-color: '.$color2.';" id="" class="tdrow" type="text" name="type" value="'.htmlspecialchars($donnees['TYPE']).'">'
        . '</strong></td><td>' . '<input  style="background-color: '.$color2.';" class="tdrow" type="text" name="activite" id="" value="'.htmlspecialchars($donnees['ACTIVITE']).'">'
        . '</strong></td><td>' . '<input  style="background-color: '.$color2.';" class="tdrow" type="text" id="transporteur" name="" value="'.htmlspecialchars($donnees['TRANSPORTEUR']).'">'
        . '</strong></td><td>' . '<input  style="background-color: '.$color2.';" class="tdrow" type="text" name="operation" id="" value="'.htmlspecialchars($donnees['OPERATION']).'">'
        . '</strong></td><td>' . '<input  style="background-color: '.$color2.';" class="tdrow" type="text" id="quantite" name="" value="'.htmlspecialchars($donnees['QUANTITE']).'">'
        . '</strong></td><td>' . '<input  style="background-color: '.$color2.';" class="tdrow" type="text" id="allee" name="" value="'.htmlspecialchars($donnees['ALLEE']).'">'
        . '</strong></td><td>' . '<input  style="background-color: '.$color2.';" class="tdrows" type="text" name="harrive" id="" value="'.htmlspecialchars($donnees['HARRIVE']).'">'
        . '</strong></td><td>' . '<input  style="background-color: '.$color2.';" class="tdrow" type="text" name="cariste" id="" value="'.htmlspecialchars($donnees['CARISTE']).'">'
        . '</strong></td><td>' . '<input  style="background-color: '.$color2.';" class="tdrows" type="text" id="hpris" name="" value="'.htmlspecialchars($donnees['HDEPART']).'">'
        . '</strong></td><td>' . '<input  style="background-color: '.$color2.';" class="tdrows" type="text" id="hfin" name="" value="'.htmlspecialchars($donnees['HFIN']).'">'
        . '</strong></td><td>' . '<input  style="background-color: '.$color.';" class="tdrow" type="text" id="validation" name="validation" value="'.htmlspecialchars($donnees['VALIDATION']).'">'
        . '</strong></span></td><th>' . '<input type="hidden" id="id" name="id" value="'.$donnees['ID'].'">
                                  <input type="submit" id="Supp" name="Supp" value="Supp" onclick="return confirm(\'Êtes-vous sûr de vouloir supprimer cette ligne ?\');">'
        . '</strong></td><th>' . '<input type="hidden" id="mod" name="mod" value="'.$donnees['ID'].'">
                                  <input type="submit" id="Modif" name="Modif" value="Modif" onclick="return confirm(\'Êtes-vous sûr de vouloir modifier cette ligne ?\');">'
        . '</th></tr></form>';  }
exit;

?></table>

ynx
Eléphant du PHP | 275 Messages

15 mars 2017, 17:38

Salut,

Si j'ai bien compris, il semble que ton problème vienne du premier fetch effectuée juste après la requête sql.
En effet la première instruction $donnees = $reponse->fetch(); récupère la première ligne de résultat mais celle-ci n'est jamais affichée. La boucle while juste après parcours donc les données à partir de la deuxième ligne de résultat.

Supprime le premier appel à fetch afin que toutes tes lignes soient affichées dans ta boucle.

Bonne journée,

Avatar de l’utilisateur
Modérateur PHPfrance
Modérateur PHPfrance | 8733 Messages

16 mars 2017, 16:00

Modération :
Le multipostage est interdit sur le forum.

Ce sujet a été verrouillé et sera supprimé sous peu.
Des réponses peuvent être apportées à cette adresse :
php-debutant/couleur-conditionnelle-pro ... 78047.html .
Il en faut peu pour être heureux ......