Page admin

Bonjour à tous,
n'ayant pas encore trouvé de solution je reposte mon probleme!!
-Dans ma page admin, j'ai créer une page modifier.php, elle marche nikel mais mon patron voudrais faire quelque changement sur cette page.

1) voici l'affichage d'un produit. (j'utilise une boucle while pour afficher touts les produits de ma bdd)

NumProd NomProd PrixProd DuréeGarantie Choix
1 SEMPRON LE 1250 29.06 euros 1 ans ici

2) lors du click sur ici, une page s'ouvre

Numéro : 1
Nom : ATHLON 64
Prix : 15
Garantie : 2
[bouton modifié]

3) après click sur modifié, ça met a jour le produit dans la BDD .

Mon patron veut directement changer dans un cadre texte :

NumProd NomProd PrixProd DuréeGarantie Choix
1 SEMPRON LE 1250 29.06 euros 1 ans [modifié]

un click sur [modifié] et le produit ce met a jour dans la bdd!

merci de votre aide !!!!!
.
Configuration: Windows XP Internet Explorer 6.0

33 réponses

Résumé de la discussion

Le problème porte sur la modification directe d’un produit affiché dans une page admin, réalisée avec PHP et MySQL, sans quitter la page ni ouvrir une fiche dédiée. L’objectif est d’éditer en ligne les champs NumProd, NomProd, PrixProd et DuréeGarantie directement dans des cadres texte et de valider le changement par un seul clic sur Modifier. Les interventions suggèrent d’afficher chaque ligne sous forme de formulaire et d’utiliser une requête UPDATE, mais le code fourni oblige actuellement deux clics pour que le remplacement soit effectif. En guise de nuance utile, certains indiquent que la double connexion à MySQL et le réemploi de POST sans réaffectation explicite des variables peuvent expliquer le besoin d’un deuxième clic.

Bobot (l’IA à votre service)
  1. Voici mon code qui marche presque nikel sauf qu'il faut appuyé 2 fois sur modifié pour que le changement soit pris en compte:

    <?php
    //connexion à mysql
    mysql_connect("localhost", "root", "") or die ("Erreur de connexion sur mysql.");
    mysql_select_db("see-inf") or die ("Erreur de connexion sur la base.");

    $req=mysql_query("SELECT numprod, nomprod, prixprod, duréegarantie, nomtype, poids, description FROM produit order by numprod");

    echo "<p align=center><table border=1><tr><TH align='center'>Num</TH><TH align='center'>Nom</TH>
    <TH align='center'>Prix</TH><TH align='center'>Garantie</TH>
    <TH align='center'>Type</TH><TH align='center'>Poids</TH><TH align='center'>Description</TH><th>Choix</th></tr><tr>" ;

    while($donnees=mysql_fetch_assoc($req))

    {
    ?>

    <form action="modifie2.php" method="POST">
    <td><input type='text' name='numprod' value='<?php echo $donnees['numprod'];?>' size='1'></td>
    <td><input type='text' name='nomprod' value='<?php echo $donnees['nomprod']; ?>' size='25'></td>
    <td><input type='text' name='prixprod' value='<?php echo $donnees['prixprod']; ?>' size='4'></td>
    <td><input type='text' name='garantie' value='<?php echo $donnees['duréegarantie']; ?>' size='2'></td>
    <td><input type='text' name='nomtype' value='<?php echo $donnees['nomtype']; ?>' size='13'></td>
    <td><input type='text' name='poids' value='<?php echo $donnees['poids']; ?>' size='3'></td>
    <td><input type='text' name='description' value='<?php echo $donnees['description']; ?>' size='50'></td>
    <td><input type='submit' name='valider' value='Modifier'> </td>

    </tr></p>
    </form>

    <?php

    }
    mysql_close();
    ?>
    </table>
    <?php
    //connexion à mysql
    mysql_connect("localhost", "root", "") or die ("Erreur de connexion sur mysql.");
    mysql_select_db("see-inf") or die ("Erreur de connexion sur la base.");

    @@$num=$_POST['numprod'];
    @@$nom=$_POST['nomprod'];
    @@$prix=$_POST['prixprod'];
    @@$garantie=$_POST['garantie'];
    @@$poids=$_POST['poids'];
    @@$type=$_POST['nomtype'];
    @@$description=$_POST['description'];

    $req2=mysql_query("UPDATE produit SET nomprod='$nom', prixprod='$prix', duréegarantie='$garantie', nomtype='$type', poids='$poids',description='$description' WHERE numprod='$num'");

    mysql_close(); // Déconnexion de MySQL
    ?>

    Je pense qu'il faudrait faire une condition if pour afficher le formulaire avec tous mes produits mais je ne sais pas encore laquelle mettre!!
    si vous avez une idée ou meme d'autres idées pour m'aider se serait très gentil! :D
    1. oué bizarre, faut qiue je trouve un moyen que ça le fait pas trop la ^^
      1. arf dernier petit probleme, j'arrive a changer les données du produit, seul probleme, il faut que j'écrive une premiere fois par exemple: prix = 2.85 puis un click sur [modifié] -la rien ne se passe

        puis je refais la meme manip une seconde fois, et le changement se fait...
        1. Pas de souci ;) se fera 100 euros ;)
          Bonne continuation.
          Tu travail ou au faite ?

          P.S : Pense a marquer résolu ;)
          1. oué ça à l'air bon, j'avais juste quelques erreur de name dans mon formulaire et j'avais oublié $num dans ma req2!

            jcrois que ça va marché! merci beaucoup pour ton aide
            +10!!! lol
            1. Ben jcomprends pas, regarde mon code...

              <?php
              //connexion à mysql
              mysql_connect("localhost", "root", "") or die ("Erreur de connexion sur mysql.");
              mysql_select_db("see-inf") or die ("Erreur de connexion sur la base.");

              $req=mysql_query("SELECT numprod, nomprod, prixprod, duréegarantie, nomtype, poids, description FROM produit order by numprod");
              ?>

              <?php
              echo "<p align=center><table border=1><tr><TH align='center'>Num</TH><TH align='center'>Nom</TH>
              <TH align='center'>Prix</TH><TH align='center'>Garantie</TH>
              <TH align='center'>Type</TH><TH align='center'>Poids</TH><TH align='center'>Description</TH><th>Choix</th></tr><tr>" ; ?>
              <?php

              while($donnees=mysql_fetch_assoc($req))

              {
              ?>

              <form action="modifie2.php" method="POST" name="modifie">
              <td><input type='text' name='numprod' value='<?php echo $donnees['numprod'];?>' size='1'></td>
              <td><input type='text' name='nomprod' value='<?php echo $donnees['nomprod']; ?>' size='25'></td>
              <td><input type='text' name='prixprod' value='<?php echo $donnees['prixprod']; ?>' size='4'></td>
              <td><input type='text' name='garantie' value='<?php echo $donnees['duréegarantie']; ?>' size='2'></td>
              <td><input type='text' name='nomtype' value='<?php echo $donnees['nomtype']; ?>' size='13'></td>
              <td><input type='text' name='poids' value='<?php echo $donnees['poids']; ?>' size='3'></td>
              <td><input type='text' name='poids' value='<?php echo $donnees['description']; ?>' size='50'></td>
              <td><input type='submit' name='valider'> </td>
              <input type="hidden" name="validation" value="ok" />
              </tr></p>
              </form>
              <?php
              }
              if($_POST['validation'] == 'ok') {
              @@$num=$_POST['numprod'];
              @@$nom=$_POST['nomprod'];
              @@$prix=$_POST['prixprod'];
              @@$garantie=$_POST['dureegarantie'];
              @@$poids=$_POST['poids'];
              @@$type=$_POST['typeprod'];
              @@$description=$_POST['description'];
              @@$numligne=$_POST['numligne'];
              }
              ?>
              </table>

              <?php

              $req_type="select nomtype from produit where numprod='$num'";
              $exe_type=mysql_query($req_type) or die($req_type);
              $res_type=mysql_fetch_array($exe_type);

              $req2=mysql_query("UPDATE produit SET nomprod='$nom', prixprod='$prix', duréegarantie='$garantie', nomtype='".$res_type["nomtype"]."', poids='$poids', nomtype='$type', description='$description' WHERE numprod='$num'");

              mysql_close(); // Déconnexion de MySQL
              ?>
              1. Tu doit réaliser un post pour chaque ligne a mon avis ou tu mettre comde name le num de la ligne a l'intérieur en hidden.
                Ensuite tu faire comme ta fait...
                1. Pour le moment je n'y arrive pas!

                  jte montre mon code, si t'as le temps d'essayé de le comprendre..

                  <?php
                  //connexion à mysql
                  mysql_connect("localhost", "root", "") or die ("Erreur de connexion sur mysql.");
                  mysql_select_db("see-inf") or die ("Erreur de connexion sur la base.");

                  $req=mysql_query("SELECT numprod, nomprod, prixprod, duréegarantie, nomtype, poids, description FROM produit order by numprod");
                  ?>

                  <form action="modifie2.php" method="POST" name="modifie">
                  <?php
                  echo "<p align=center><table border=1><tr><TH align='center'>NumProd</TH><TH align='center'>NomProd</TH>
                  <TH align='center'>PrixProd</TH><TH align='center'>DuréeGarantie</TH>
                  <TH align='center'>NomType</TH><TH align='center'>Poids</TH><TH align='center'>Description</TH><th>Choix</th></tr><tr>" ; ?>
                  <?php

                  while($donnees=mysql_fetch_assoc($req))

                  {
                  ?>

                  <td><input type='text' name='numprod' value=<?php echo $donnees['numprod'];?> ></td>
                  <td><input type='text' name='nomprod' value=<?php echo $donnees['nomprod']; ?>></td>
                  <td><input type='text' name='prixprod' value=<?php echo $donnees['prixprod']." euros"; ?>></td>
                  <td><input type='text' name='garantie' value=<?php echo $donnees['duréegarantie']." ans"; ?>></td>
                  <td><input type='text' name='nomtype' value=<?php echo $donnees['nomtype']; ?>></td>
                  <td><input type='text' name='poids' value=<?php echo $donnees['poids']." kg"; ?>></td>
                  <td><input type='text' name='poids' value=<?php echo $donnees['description']; ?>></td>
                  <td><a href="modifie2.php?numero=<?php echo $donnees['numprod'];?>&modifie=1">modifier</a></td>
                  </tr></p>

                  <?php
                  }

                  @@$num=$_POST['numprod'];
                  @@$nom=$_POST['nomprod'];
                  @@$prix=$_POST['prixprod'];
                  @@$garantie=$_POST['dureegarantie'];
                  @@$poids=$_POST['poids'];
                  @@$type=$_POST['typeprod'];
                  @@$description=$_POST['description'];
                  echo $_POST['nomprod'];

                  $req_type="select nomtype from produit where numprod='$num'";
                  $exe_type=mysql_query($req_type) or die($req_type);
                  $res_type=mysql_fetch_array($exe_type);

                  $req2=mysql_query("UPDATE produit SET nomprod='$nom', prixprod='$prix', duréegarantie='$garantie', nomtype='".$res_type["nomtype"]."', poids='$poids', nomtype='$type', description='$description' WHERE numprod='".$_GET['numero']."'");

                  mysql_close(); // Déconnexion de MySQL
                  ?>

                  </table>
                  </form>

                  </body>
                  </html>
                  1. Avec un bouton pour chaque il suffit de faire un post et de recuperer les valeur dans le php avec $_POST
                    1. ben c'est surtout a toi de voir ce que tu pense etre capable de réussir.

                      moi n'importe quel style me va, j'arrive a afficher la page nikel avec les input, mais quand je clik sur modifié, le update ne se fait pas.

                      Je pense que mes variable $nom
                      $poids
                      $garantie

                      sont mauvaise mais je ne sais pas comment faire pour le moment!!
                      1. ah ben alors je fais la technique la moin complexe et la moin lourde.

                        Un ptit bouton modifié sur chaque ligne sera très bien!
                        1. Bin le probleme avec un seul bouton
                          c'est que tu va etre obligé de faire un update de tout tes champs car tu ne sera pas lequel a été modifier...
                          1. oh je pense qu'un seul bouton suffira!

                            t'as une idée en tete??
                            1. Tu veut qu'il y ai un seul bouton modifier dans ta nouvelle page ou un a chaque ligne ?
                              • 1
                              • 2