Partage
  • Partager sur Facebook
  • Partager sur Twitter

Champ modifiable dans un tableau

Sujet résolu
    11 juillet 2019 à 11:25:13

    Bonjour, 
    Je suis de nouveau bloquée sur une partie de mon projet (PS : Je dis "de nouveau" car j'ai posté il y a deux jours pour un autre souci).
    Je vous explique..
    J'ai 3 bases de données différentes. 
    Deux se trouvent sur le même serveur (PDO), ce sont : bdd1 et bdd2.
    La troisième, se trouve sur un autre serveur (MySQL) : bdd3.
    La bdd1 contient 3 tables : article (champs : reference_article, description, prix_article, sommeil, code_famille), famille (champs : code_famille, detail), maison (champs : reference_maison, reference_article, prix_maison).
    La bdd2 contient 1 table : tarif (champs : un, deux, date, reference_article).
    La bdd3 ne contient pas encore de tables, elles restent à déterminer selon le besoin.
    Le projet consiste à faire ressortir certaines informations sous forme d'un tableau et à pouvoir en modifier également.
    Mon souci étant donc de pouvoir faire apparaître un champ modifiable pour certaines colonnes de ce tableau (qui sont déjà définies).
    Néanmoins lors de la modification du champ, il ne faut pas que la requête vienne modifier directement la table (de la bdd1 ou bdd2) mais créer une nouvelle entrée dans une nouvelle table (bdd3).
    En gros les bdd1 et bdd2 servent uniquement en lecture et la bdd3 est là pour gérer les modifications (qui viendront être modifiées dans les bdd1 et bdd2 manuellement).. 
    Je sais pas si c'est très clair :euh:
    Je n'ai fais encore aucune tentative d'insertion de champ modifiable car je ne sais tout simplement pas où je dois mettre l'information.
    J'ai regardé plusieurs questions posées par des personnes sur différents forum et plusieurs cours qui traitent de ce sujet mais je n'ai pas réussi à y appliquer à cette situation.
    Voilà le code que j'ai pour l'instant : 
    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8"/>
            <title>Suivi</title>
        </head>
        <body>
            <div class="container aspect">
                <table>
            <?php
            try //Connexion à la base de données
            {
    		$srv="serveur_bdd1_bdd2";
    		$user="user";
    		$pwd="pass";
            $pdo = new PDO ("dblib:host=$srv","$user","$pwd");
    	    $pdo->exec("set names utf8");
    	    } 
            catch (PDOException $e) 
            {
    		echo "Failed to get DB handle: " . $e->getMessage() . "\n";
    		exit;
    	    }
            $reponse = $pdo->query('SELECT f.detail, f.code_famille, a.reference_article, a.description, a.prix_article, a.sommeil, m.reference_maison, m.prix_maison, t.un, t.deux, t.date, ((t.deux - t.un) / (t.un * 100)) AS pourcentage_tarif, (a.prix_article + (a.prix_article * ((t.deux - t.un) / (t.un * 100)))) AS prix_estime, ((a.prix_article - t.deux) / t.deux * 100) AS marge_estimee FROM bdd1.article AS a INNER JOIN bdd1.famille as f ON f.code_famille = a.code_famille INNER JOIN bdd1.maison AS m ON m.reference_article = a.reference_article INNER JOIN bdd2.tarif AS t ON t.reference_article = a.reference_article  WHERE a.sommeil = 0 ORDER BY a.reference_article');
            echo '<center><div class="liste"><table>';
            echo '<tr>';
            echo '<th class="thliste">Detail famille</th>';
            echo '<th class="thliste">Code famille</th>';
            echo '<th class="thliste">Référence maison</th>';
            echo '<th class="thliste">Référence article</th>';
            echo '<th class="thliste">Description article</th>';
            echo '<th class="thliste">Tarif Un</th>';
            echo '<th class="thliste">Tarif Deux</th>';
            echo '<th class="thliste">Pourcentage tarif</th>';
            echo '<th class="thliste">Date</th>';
            echo '<th class="thliste">Prix estime</th>';
            echo '<th class="thliste">Marge estimee</th>';
            echo '<th class="thliste">Prix reel</th>'; // Reprendre le prix estime et le rendre modifiable dans un champ
            echo '<th class="thliste">Pourcentage réel</th>'; // Reprendre le pourcentage tarif et le rendre modifiable dans un champ
            echo '<th class="thliste">Marge réelle</th>'; // Reprendre la marge estimee et la rendre modifiable dans un champ
            echo '</tr>';
            while($donnees = $reponse->fetch()) //Renvoie les valeurs de la BDD
            {
                echo '<tr>';
                echo '<td class="tdliste">' . $donnees['detail'] . '</td>';
                echo '<td class="tdliste">' . $donnees['code_famille'] . '</td>';
                echo '<td class="tdliste">' . $donnees['reference_maison'] . '</td>';
                echo '<td class="tdliste">' . $donnees['reference_article'] . '</td>';
                echo '<td class="tdliste">' . $donnees['description'] . '</td>';
                echo '<td class="tdliste">' . $donnees['un'] . '</td>';
                echo '<td class="tdliste">' . $donnees['deux'] . '</td>';
                echo '<td class="tdliste">' . $donnees['pourcentage_tarif'] . '</td>';
                echo '<td class="tdliste">' . $donnees['date'] . '</td>';
                echo '<td class="tdliste">' . $donnees['prix_estime'] . '</td>';
                echo '<td class="tdliste">' . $donnees['marge_estimee'] . '</td>';
                echo '<td class="tdliste"> Calcul </td>'; //Champ modifiable à appliquer
                echo '<td class="tdliste"> Calcul </td>'; //Champ modifiable à appliquer
                echo '<td class="tdliste"> Calcul </td>'; //Champ modifiable à appliquer
                echo '<tr>';
            }
            $pdo = null;
            ?>
                </table>
            </div>
        </body>
    </html>
    Tout ça m'affiche donc un tableau avec les différentes données dans les colonnes..
    Merci d'avance pour votre aide !
    • Partager sur Facebook
    • Partager sur Twitter
      11 juillet 2019 à 11:55:26

      Salut,

      Ca ressemble à un topic récent, mais en gros dans chaque tour de boucle, tu rajoutes un formulaire avec un champ input hidden qui contient en valeur l'id de la ligne dans ta table. Tu ajoutes les champs d'input voulu comme pour n'importe quel formulaire banal, à la récupération des données tu insert à l'id que tu auras récupéré grâce à l'input hidden.

      • Partager sur Facebook
      • Partager sur Twitter
        11 juillet 2019 à 11:59:46

        Merci de ta réponse ! 

        J'ai à peu près compris ce que tu m'as dis mais aurais-tu soit un exemple soit le lien du topic que je regarde ça en appliqué ? ;)

        • Partager sur Facebook
        • Partager sur Twitter
          11 juillet 2019 à 12:01:26

          Bonjour.

          La balise HTML center est à supprimer et à ne plus utiliser car elle est dépréciée.

          PtitOursTutTut a écrit:

          Merci de ta réponse ! 

          J'ai à peu près compris ce que tu m'as dis mais aurais-tu soit un exemple soit le lien du topic que je regarde ça en appliqué ? ;)

          Tu dois bien savoir créer un formulaire, donc pourquoi vouloir un exemple, ce n'est pas différent d'un formulaire standard, n'oublies pas d'ajouter un élément de formulaire pour soumettre les données de celui-ci.

          -
          Edité par Lartak 11 juillet 2019 à 12:07:42

          • Partager sur Facebook
          • Partager sur Twitter

          Face a quelqu'un pour qui l'on n'éprouve que de l'aversion et du mépris, les yeux d'un homme deviennent extrêmement froids et cruels.

            11 juillet 2019 à 12:03:23

            Bonjour,

            Tu modifies ligne par ligne ou tu vas modifier plusieurs lignes ?

            - Si une ligne alors la réponse de VDD est correcte.

            - Si plusieurs alors tes inputs devront avoir un name bien spécifique qui reprends l'id à modifier et le nom du champs

             echo '<td class="tdliste"><input name="'.$donnee['id_article'].'_'$donnee['name'].'" ></td>';

            Du côté du traitement, une boucle foreach sur $_POST et un explode de ce dernier pour récupérer l'id et le nom afin de faire la bonne requête

            • Partager sur Facebook
            • Partager sur Twitter
              12 juillet 2019 à 8:16:32

              Bonjour, 

              Aurélien.C a écrit:

              Bonjour,

              Tu modifies ligne par ligne ou tu vas modifier plusieurs lignes ?

              - Si une ligne alors la réponse de VDD est correcte.

              - Si plusieurs alors tes inputs devront avoir un name bien spécifique qui reprends l'id à modifier et le nom du champs

               echo '<td class="tdliste"><input name="'.$donnee['id_article'].'_'$donnee['name'].'" ></td>';

              Du côté du traitement, une boucle foreach sur $_POST et un explode de ce dernier pour récupérer l'id et le nom afin de faire la bonne requête

              Merci, j'ai bien réussi à mettre les champs en modifiable.
              Par contre la boucle foreach  je dois la placer où ? 

              Lartak a écrit:

              Bonjour.

              La balise HTML center est à supprimer et à ne plus utiliser car elle est dépréciée.

              Tu dois bien savoir créer un formulaire, donc pourquoi vouloir un exemple, ce n'est pas différent d'un formulaire standard, n'oublies pas d'ajouter un élément de formulaire pour soumettre les données de celui-ci.

              -
              Edité par Lartak il y a environ 20 heures


              Merci pour l'info, j'ai du coup supprimé la balise center.

              Oui j'ai déjà créé un formulaire néanmoins les infos qui étaient renseignées n'étaient que Nom, Prénom, E-mail et ces infos m'étaient directement envoyées sur mon adresse mail à moi. Donc je pense qu'il y a quelques éléments qui ne doivent pas correspondre...

              Merci à tous pour votre aide.

              • Partager sur Facebook
              • Partager sur Twitter
                12 juillet 2019 à 9:51:04

                Salut ^^

                Que veux tu dire par "la boucle foreach, je dois la placer où?" 

                Après le submit de ton formulaire, peut être vérifier que $_POST n'est pas vide, et tu boucles dessus ^^. 

                Concernant le formulaire en lui-même, ce n'est pas forcément différent de ce que tu as vu. C'est juste du HTML. Après concernant le fait que ça te soit envoyé par mail ou non, ce n'est que le traitement en back (PHP pour ton cas) qui change ^^.

                • Partager sur Facebook
                • Partager sur Twitter

                Développeuse Web back end PHP, pour vous servir :)

                Champ modifiable dans un tableau

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                • Editeur
                • Markdown