Précédent   Forum des professionnels en informatique > PHP > Langage > Formulaires
Formulaires Forum d'entraide sur les formulaires avec PHP. Avant de poster -> FAQ formulaires, Cours de formulaires et Sources de formulaires
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/04/2007, 08h26   #1
Invité de passage
 
Inscription : avril 2007
Messages : 5
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 5
Points : 1
Points : 1
Par défaut [Résolu] Modifier les valeurs contenues dans une BD avec un formulaire dynamique

Bonjour,

Tout d'abord je précise que je débute en php. Et malgré de longue recherche, je n'arrive pas à trouver la solution à mon problème.

J'ai fait un formulaire ou les clients saisissent leurs coordonnées. Ces données sont enregistrées dans la BD. Ensuite, j'ai créé un formulaire dynamique contenant les coordonnées des différents clients qui sont enregistrés. A présent, je souhaite pouvoir modifier les enregistrements de la table client, mais je ne sais pas comment faire comme j'utilise un formulaire dynamique.


fiche_clients.php

Code :
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
 
<?php 
 
// connection à la Base de Données   
$db = ……….
 
$sql = "SELECT DISTINCT *
FROM CLIENTS
"; 
 
$res = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
 
echo ("<form id=\"form1\" name=\"form1\" method=\"post\" action=\"modif_clients.php\">");
 
while ($row = mysql_fetch_assoc($res))
{
echo ("<input type=\"text\" size=\"8\" name='".$row['c_nom']."' "); echo 'value="'.$row['c_nom'].'">';
echo ("<input type=\"text\" size=\"8\" name='".$row['c_prenom']."' "); echo 'value="'.$row['c_prenom'].'">';
echo ("<input type=\"text\" size=\"20\" name='".$row['c_adresse']."' "); echo 'value="'.$row['c_adresse'].'">';
echo ("<input type=\"text\" size=\"8\" name='".$row['c_tel']."' "); echo 'value="'.$row['c_tel'].'">';
echo '<br />';
}
echo ("<br /><input align=\"center\" type=\"submit\" name=\"Submit\" value=\"Enregistrer\"></form>");
mysql_free_result ($res); 
mysql_close ();  
?>

Voilà pour le moment ce que j'ai fait :

modif_clients.php
Code :
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
 
<?php
 
// connection à la Base de Données   
$db = ………. 
 
$sql = "SELECT DISTINCT *
FROM CLIENTS
"; 
 
$res = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$data = mysql_num_rows($res);
 
for($i=0; $i != $data ; $i++) 
{
if(isset($_POST['c_nom']))      $c_nom=$_POST['c_nom'];
else      $c_nom="";
if(isset($_POST['c_prenom']))      $c_prenom=$_POST['c_prenom'];
else      $c_prenom="";
if(isset($_POST['c_adresse']))      $c_adresse=$_POST['c_adresse'];
else      $c_adresse="";
if(isset($_POST['c_tel']))      $c_tel=$_POST['c_tel'];
else      $c_tel="";
 
$sql = "UPDATE INTO CLIENTS SET c_nom = UPPER (c_nom), c_prenom = UPPER (c_prenom), c_adresse = UPPER (c_adresse), c_tel = UPPER (c_tel)";
}
echo 'les modifications ont été enregistré avec succès';
echo '<br /><a href="clients.php">retour</a>';
mysql_close ();  
?>
Merci de bien vouloir m'aider.
Cali
cali62100 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/04/2007, 08h38   #2
Fabouney
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
Salut, je vois pas l'intéret d'attribuer dinamyquement des noms différent à des champs de ton formulaire, seul les "value" doivent être remplacées par les données extraitent de la base.

par contre il serait utile de renseigner dans un champ caché, l'id du client, afin de savoir lequel souhaite modifier ses informations.

ou si tu as un système d'authentification, alors sauvegarde l'id dans une session ou cookie, et réutilise le une fois les modification effectuées.

tu te donne du mal à rien là .
  Envoyer un message privé Réponse avec citation 00
Vieux 19/04/2007, 11h24   #3
Invité de passage
 
Inscription : avril 2007
Messages : 5
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 5
Points : 1
Points : 1
Je pensais qu'il fallait avoir un nom different pour avoir des champs de taille différents (size).

Celà dit, ca ne me dit pas comment faire pour résourdre mon problème, mais au moins ca me permet d'amériorer mon code.

Donc merci pour tes conseils.
cali62100 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/04/2007, 11h06   #4
Invité de passage
 
Inscription : avril 2007
Messages : 5
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 5
Points : 1
Points : 1
Par défaut [Résolu]

Ca y est j'ai trouvé la solution à mon problème, et tout seul en plus!!
Donc je me félicite. lol

Citation:
Envoyé par Fabouney
je vois pas l'intéret d'attribuer dinamyquement des noms différent à des champs de ton formulaire, seul les "value" doivent être remplacées par les données extraitent de la base.
Et bien si, il faut bien attribuer un nom dynamique pour les différents champs enfin de pouvoir les récuperer avec $_POST, sinon ca ne fonctionne pas!!

Pour ceux que ça intéresse, je laisse mon code :

Code :
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
 
<?php 
$db = mysql_connect('localhost', 'root', '')  or die('Erreur de connexion '.mysql_error());
    mysql_select_db('test',$db)  or die('Erreur de selection '.mysql_error()); 
 
$sql = "SELECT DISTINCT *
FROM CLIENTS
"; 
 
$res = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
 
echo ("<form id=\"form1\" name=\"form1\" method=\"post\" action=\"modif_clients.php\">");
$i=0;
while ($row = mysql_fetch_assoc($res))
{
$id_client = $row['id_client'];
echo $id_client;
?>
//checkbox inutile pour le moment
/*<input type="checkbox" name="<?php echo $id_client;?>" value="checkbox" id="<?php echo $id_client;?>"/>*/
<input type="text" size="8" name="<?php echo 'c_nom'.$i;?>" value="<?php echo $row['c_nom'];?>"/>
<input type="text" size="8" name="<?php echo 'c_prenom'.$i;?>" value="<?php echo $row['c_prenom'];?>"/>
<input type="text" size="20" name="<?php echo 'c_adresse'.$i;?>" value="<?php echo $row['c_adresse'];?>"/>
<input type="text" size="9" name="<?php echo 'c_tel'.$i;?>" value="0<?php echo $row['c_tel'];?>"/>
<br />
<?php
$i= $i+1;
}
echo ("<br /><input align=\"center\" type=\"submit\" name=\"Submit\" value=\"Enregistrer\"></form>");
 
mysql_free_result ($res); 
mysql_close ();  
?>
modif_clients.php

Code :
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
 
<?php
 
$db = mysql_connect('localhost', 'root', '')  or die('Erreur de connexion '.mysql_error());
    mysql_select_db('test',$db)  or die('Erreur de selection '.mysql_error()); 
 
$sql = "SELECT DISTINCT *
FROM
"; 
 
$res = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$i=0;
while ($row = mysql_fetch_assoc($res))
{
$id_client = $row['id_client'];
 
if(isset($_POST['c_nom'.$i]))      $c_nom = $_POST['c_nom'.$i];
else      $c_nom="";
 
if(isset($_POST['c_prenom'.$i]))      $c_prenom = $_POST['c_prenom'.$i];
else      $c_prenom="";
 
if(isset($_POST['c_adresse'.$i]))      $c_adresse = $_POST['c_adresse'.$i];
else      $c_adresse="";
 
if(isset($_POST['c_tel'.$i]))      $c_tel = $_POST['c_tel'.$i];
else      $c_tel="";
 
$sql = "UPDATE clients SET c_nom = '$c_nom', c_prenom = '$c_prenom', c_adresse = '$c_adresse', c_tel = '$c_tel' WHERE id_client='$id_client'";
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
$i=$i+1;
}
echo '<br />Les modifications ont été enregistrées avec succès';
echo '<br /><a href="fiche_clients.php">retour</a>';
mysql_close ();  
?>
N'ésitez pas à poster pour toutes critiques ou pour améliorer le code.
Merci

++
cali62100 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/04/2007, 12h01   #5
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Votre requête UPDATE n'est pas protégée : il faudrait appliquer mysql_real_escape_string sur les données issues du formulaire (POST).

L'utilisation d'un tableau au lieu de noms dynamiques aurait surement simplifiée la chose mais si ça marche ... (une requête de moins notamment).
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h32.


 
 
 
 
Partenaires

Hébergement Web