Affichage update

Bonjour,
Mon code est celui ci-dessous, mon probleme est que je dois cliqué 2 fois sur modifier pour que le produit soit mis à jour dans la BDD et dans l'affichage! J'espere que vouis trouverez la solution, merci d'avance!!

<?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' style='border-style: solid; border-width: 1; background-color: #FF2400; color: #FFFFFF'> </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
?>
Configuration: Windows XP Internet Explorer 6.0

10 réponses

  1. Bonjour,

    Le problème ne vient pas du fait que tu à mis ton form dans la boucle,ainsi que ton bouton submit?
    1. non je vien de mettre mon bouton submit hors de la boucle et la mis à jour ne se fait carrément plus..mais merci quand meme!

      tu aurais pas une autre idée par hasard?
      1. salut,
        Essaie d'inclure le programme d'affichage des données modifiées dans la page d'action de ton formulaire, et enléve les : value='<?php echo $donnees['numprod'];?>... du formulaire .

        ça peut marcher ;)
        1. ça à l'air une bonne idée mais comment je fais pour ajouter les données modifiées dans l'action.

          Je connais pas cette méthod^^
          1. dans le formulaire, ne met pas de code php, seulement des zones des boutons...

            Dans le code de la page d'action ajoute une partie php où tu met:
            <?php
            /aprés la connexion à la base et la selection de table:
            $v=$_POST['num'] / num doit etre le nom de la zone de texte où tu saisi le numero d produit
            $v1=$_POST['text1']/ text 1 le nom de la zone où tu saisi la valeur du premier champs à modifier
            $v2=$_POST['text2']
            $req = mysql_query('SELECT * FROM nomtable ') or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
            while($data = mysql_fetch_array($req)){
            $sql = "UPDATE nomtable SET champs1='".$v1."', champs2='".$v2."' WHERE numprod='".$v."' ";
            mysql_query ($sql) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error()); }
            }
            / ferme la connexion
            ?>

            ça doit marcher
            1. Ok mais dans le code que tu viens de me mettre, ils sont affiché ou tout mes produits??!
              1. ah wé, pour l'affichage, voici ce que tu peux faire:
                dans le tableau où les données doivent s'afficher tu crée uniquement la 1ère ligne (num, nom, prix...)
                dans le méme tableau, c'est à dire la méme balise <table>...</table>, tu met

                <?php
                //connexion
                $req = mysql_query('SELECT * FROM table ORDER BY num') or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
                while($data = mysql_fetch_array($req))
                {echo '<tr><td>'.$data['numprod'].'</td><td>'.$data['nomprod'].'</td><td>'.$data['prixprod'].'</td></tr>';}
                ?>

                de cette façon, pour chaque enregistrement dans la table, s'ajoute à ton tableau automatiquement une ligne, remplisse avec les données d'un produit.