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 05/07/2011, 14h53   #1
Invité régulier
 
Inscription : janvier 2008
Messages : 21
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 21
Points : 6
Points : 6
Par défaut Modifier en fonction de l'ID

Bonjour tout le monde

Après recherche je n'ai pas trouvé ce que je recherche

Je n'arrive pas à modifier les données d'un formulaire en fonction de l'ID cela fait 2 jours que j'ai le nez dessus mais je ne vois pas.

Je suis novice en PHP

Voici le 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
<?php
$sql = "select * from table"; 				
$req = mysql_query($sql) or die(mysql_error());
 
 
$lien = $_POST['lien'];
$contenu = $_POST['contenu'];
$date = $_POST['date'];
 
 
if (isset($_POST['lien']) AND (isset($_POST['contenu'])) AND (isset($_POST['date']))
{  
        mysql_query("UPDATE table SET lien='$lien', contenu='$contenu', date='$date' WHERE id='$id'") or die (mysql_error()); 
}
 echo'<input type="submit" id="submit" value="Modifier"/>';
 
 	while ($don = mysql_fetch_assoc($req))
	{
 
 
                echo'<div class="exp">
 
                  <div class="exp_date"><strong><textarea rows="1" name="date" >'.$don['date'].'</textarea></strong></div>
                  <div class="exp_soc"><strong><textarea rows="1" name="lien" >'.$don['lien'].'</textarea></div>
                  <div class="exp_exp"><textarea rows="15" cols="45" name="contenu" >'.$don['contenu'].'</textarea></div>
                </div><input type="submit" id="submit" value="Modifier"/>';
 
  }
  ?>
Merci d'avance pour votre aide et vos remarques...
pelluche est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2011, 15h07   #2
Membre actif
 
Avatar de albedo0
 
Julien C
Inscription : février 2007
Messages : 207
Détails du profil
Informations personnelles :
Nom : Julien C
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : février 2007
Messages : 207
Points : 167
Points : 167
Bonjour,

- Premier soucis, il y a une paranthèse de trop à la ligne 11 :
(isset($_POST['contenu']))

- Second soucis, si tu consultes la table avant de la mettre à jour, les données que tu vas afficher dans le formulaire seront obsolètes...

Si ça ne répond pas à ta question, il faudrait peut être developper un peu tes problèmes...

Bon courage !
albedo0 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2011, 15h34   #3
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
Bonjour,
tu le récupère où, ce $id ??

D'autre part :
remplace :
Code :
1
2
3
4
5
6
<?php
if (isset($_POST['lien']) AND (isset($_POST['contenu'])) AND (isset($_POST['date']))
{  
        mysql_query("UPDATE table SET lien='$lien', contenu='$contenu', date='$date' WHERE id='$id'") or die (mysql_error()); 
}
?>
par :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
<?php
if ( isset($_POST['lien']) && isset($_POST['contenu']) && isset($_POST['date']) )
{  
	$id 	= '?????????'; // d'où il sort ???
	// PROTECTION des donnees (IMPORTANT !!)
	$lien 	= mysql_real_escape_string($_POST['lien']);
	$contenu = mysql_real_escape_string($_POST['contenu']);
	$date 	= mysql_real_escape_string($_POST['date']);
	$query 	= "UPDATE table SET lien = '".$lien."', contenu = '".$contenu."', date = '".$date."' WHERE id = '".$id."';";
        mysql_query($query) or die (mysql_error()); 
}
?>
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2011, 15h38   #4
Invité régulier
 
Inscription : janvier 2008
Messages : 21
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 21
Points : 6
Points : 6
Bonjour albedo0,

Merci de m'avoir répondu,

Que veux tu dire par

"si tu consultes la table avant de la mettre à jour, les données que tu vas afficher dans le formulaire seront obsolètes... "


Merci
pelluche est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2011, 15h39   #5
Invité régulier
 
Inscription : janvier 2008
Messages : 21
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 21
Points : 6
Points : 6
Citation:
Envoyé par jreaux62 Voir le message
Bonjour,
tu le récupère où, ce $id ??

D'autre part :
Salut

Oui justement de nul part mais alors comment faire pour le déclarer?
pelluche est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2011, 15h43   #6
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
Citation:
Envoyé par pelluche Voir le message
comment faire pour le déclarer?
dans la bouche while, ajouter :
Code :
<input type="hidden" name="id" value="<?php echo $don['id']; ?>"/>
Du coup, ca devient :
Code :
1
2
3
4
5
6
7
<?php
if ( isset($_POST['id']) && isset($_POST['lien']) && isset($_POST['contenu']) && isset($_POST['date']) )
{  
	// PROTECTION des donnees (IMPORTANT !!)
	$id 	= mysql_real_escape_string($_POST['id']);
	// [......]
?>
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2011, 15h46   #7
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
Citation:
Envoyé par albedo0 Voir le message
si tu consultes la table avant de la mettre à jour, les données que tu vas afficher dans le formulaire seront obsolètes...
Il veut dire qu'il faut mettre les lignes :
Code :
1
2
3
4
<?php
$sql = "select * from table"; 				
$req = mysql_query($sql) or die(mysql_error());
?>
APRES le code de modification (if ... UPDATE ...)
Ceci afin de récupérer les données APRES modification.
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2011, 15h52   #8
Invité régulier
 
Inscription : janvier 2008
Messages : 21
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 21
Points : 6
Points : 6
Alors merci beaucoup!!!!! excellent
j'effectue les modification pour voir si cela fonctionne

pelluche est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2011, 15h54   #9
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
Au fait, elles sont où tes BALISES <form ...> </form> ?????
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2011, 16h00   #10
Invité régulier
 
Inscription : janvier 2008
Messages : 21
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 21
Points : 6
Points : 6
ah oui elles y sont mais un plus haut

j'avais mis qu'un bout de code
pelluche est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2011, 16h00   #11
Membre actif
 
Avatar de albedo0
 
Julien C
Inscription : février 2007
Messages : 207
Détails du profil
Informations personnelles :
Nom : Julien C
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : février 2007
Messages : 207
Points : 167
Points : 167
Hou la la effectivement j'en avais zappé pas mal des soucis...
albedo0 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2011, 16h05   #12
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
Ca devrait ressembler à ca :
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<?php
// -----------------------
// TRAITEMENT du formulaire (si envoyé)
// -----------------------
if ( isset($_POST['id']) && isset($_POST['lien']) && isset($_POST['contenu']) && isset($_POST['date']) )
{  
	// --------------
	// recuperation des donnees
	$id 	= $_POST['id'];
	$lien 	= $_POST['lien'];
	$contenu = $_POST['contenu'];
	$date 	= $_POST['date'];
	// --------------
	// PROTECTION des donnees (IMPORTANT !!)
	$id 	= mysql_real_escape_string($id);
	$lien 	= mysql_real_escape_string($lien);
	$contenu = mysql_real_escape_string($contenu);
	$date 	= mysql_real_escape_string($date);
	// --------------
	// MODIFICATION de la fiche
	$query 	= "UPDATE table SET lien = '".$lien."', contenu = '".$contenu."', date = '".$date."' WHERE id = '".$id."';";
       	mysql_query($query) or die (mysql_error()); 
	// --------------
}
// -----------------------
// AFFICHAGE du FORMULAIRE
// -----------------------
// requete : toutes les fiches de la table
	$sql = "select * from table"; 				
	$req = mysql_query($sql) or die(mysql_error());
 
// formulaire
while ($don = mysql_fetch_assoc($req))
{
	// ecriture de chaque ligne
?>
	<div class="exp">
	<form method="post" action="">
		<input type="hidden" name="id" value="<?php echo $don['id']; ?>"/>
		<div class="exp_date">
			<textarea rows="1" name="date" ><?php echo $don['date']; ?></textarea>
		</div>
		<div class="exp_soc">
			<textarea rows="1" name="lien" ><?php echo $don['lien']; ?></textarea>
		</div>
		<div class="exp_exp">
			<textarea rows="15" cols="45" name="contenu" ><?php echo $don['contenu']; ?></textarea>
		</div>
		<input type="submit" id="submit" value="Modifier"/>
	</form>
	</div>
<?php
} // fin while
?>
ps : UN formulaire et UN bouton "Modifier" pour CHAQUE ligne.

Remarque :
Code :
if ( isset($_POST['id']) && isset($_POST['lien']) && isset($_POST['contenu']) && isset($_POST['date']) )
Ca suppose que tous les champs sont obligatoires (et doivent tous etre renseignés)
Si seul le "contenu" (par exemple) est obligatoire :
Code :
if ( isset($_POST['id']) && isset($_POST['contenu']) && $_POST['contenu']!='' )
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2011, 16h33   #13
Invité régulier
 
Inscription : janvier 2008
Messages : 21
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 21
Points : 6
Points : 6
YESSSSSSSSSSSSSSSSSSSSS ça marche!!!!!!

Merci jreaux62!!!!!!!!!

Avec les explication en plus

Je vais m'abonner à ce forum je le sens!

Juste une petite chose pour les personnes désirant récupérer le bout de script

il y a un ";" en trop à la ligne 21
Code :
1
2
 
$query 	= "UPDATE table SET lien = '".$lien."', contenu = '".$contenu."', date = '".$date."' WHERE id = '".$id."';";
A la rigueur si tu peux l'editer jreaux62?
pelluche est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2011, 17h19   #14
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
Citation:
Envoyé par pelluche Voir le message
il y a un ";" en trop à la ligne 21
et NON ! il n'est pas en trop !

- le 1er est dans la requete SQL : il "ferme" la requête (et marque sa fin)
Il n'est pas obligatoire, mais il "sécurise" la requête (en empêchant d'ajouter quoi que ce soit derrière)
C'est une bonne habitude à prendre.
Code :
"UPDATE table SET lien = '".$lien."', contenu = '".$contenu."', date = '".$date."' WHERE id = '".$id."';"
- le 2eme est la fin d'instruction de ligne PHP
Code :
$query 	= .......................;
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2011, 17h49   #15
Invité régulier
 
Inscription : janvier 2008
Messages : 21
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 21
Points : 6
Points : 6
Ah ok autant pour moi!!

En tout cas merci beaucoup je peux avancer maintenant

Bye
pelluche est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h11.


 
 
 
 
Partenaires

Hébergement Web