[RESOLU] Recuperation des donnees d'un formulaire php

Eléphanteau du PHP | 25 Messages

18 juil. 2012, 13:44

Bonjour,

Je vous écrit car j'ai un soucis sur lequel je cal et n'avance plus a cause de cela. je vais d'abord vous montrez le script et ensuite vous expliquerais se que je recherche.
 <?php

//include ('tools/debug.inc.php');


 $link = mysql_connect("localhost", "httpmedia", "******"); // Connexion à la base de données
 mysql_select_db("mediadb", $link); // Sélection de la base de données 
 $result = mysql_query ("SELECT * FROM artistes WHERE ID_Artiste LIKE '%" . $_GET['id'] . "%'"); // Requête SQL
 
 while ($donnees = mysql_fetch_assoc($result)) // On boucle pour afficher toutes les données et on met toutes données dans un tableau
 {
	echo "<html>
		<head>
		<title>Liste d'artistes</title>
		<link rel='stylesheet' href='../design/style1.css' type='text/css'/>
		</head>
		<body><p class='titre'>Fiche de l'Artiste</p>
		<fieldset id='coordonnees'>
				
					<label> Nom : </label><br/>
						  " . $donnees['name'] . "<br/><br/>
					<label> Prénom : </label><br/>
						  " . $donnees['firstname'] . "<br/><br/>
					<label> Surnom : </label><br/>
						  " . $donnees['nickname'] . "<br/><br/>
					<label> Date de naissance : </label><br/>
						  " . $donnees['birthdate'] . "<br/><br/>
					<label> Lieu de Naissance : </label> <br/> 
						  " . $donnees['birthlocation'] . "<br/><br/>
					<label> Nationalité : </label><br/>
						  " . $donnees['nationality'] . "<br/><br/>
					<label> Biographie : </label><br/><br/>
						  " . $donnees['biography'] . "<br/><br/>
					<label> Site officiel : </label><br/>
						  " . $donnees['website'] . "<br/><br/><br/>
					<p id='buttons'>
						<input type='submit' value='Modifier' onClick=\"location.href='modify.php'\" />
						<input type='button' value='Effacer' />
						<input type='button' value='Retour' onClick=\"location.href='index.php'\" />
					</p>
				</fieldset>
		</body>
		</html>";
 }
 

 mysql_close(); // On oubli pas de déconnecter la base de données*/
?> 
Alors voici mon script php sur lequel j'ai une présentation de données envoyées par le biais d'un formulaire. Mon but et que avec l'aide de mon boutton Modifier, je puis envoyer toute les donnes dans un autre formulaire qui va me permettre d'executer la commande UPDATE en sql. Mon probléme ces que je n'arrive pas a envoyer c donner au formulaire en question et que je ne suit pas sur que cela modifie exactement le bon champs car je n'ai pas d'ID envoyer avec mes données. appart bien évidement pour cette page de présentation ou l'id apparait effectivement dans l'url.

Je ne sais pas si j'ai ete assez claire .

Merci d'avance.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

18 juil. 2012, 14:14

salut,

tu fait comme pour la page actuelle tu passe l'info dans l'url par exemple modify.php?id=$donnees['id']

@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 25 Messages

18 juil. 2012, 14:39

salut,

tu fait comme pour la page actuelle tu passe l'info dans l'url par exemple modify.php?id=$donnees['id']

@+

( ! ) Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\wamp\www\donnee.php on line 37

Problème de syntaxe encore et toujours lol.

Ta solution je l'ai déjà testée, mais ça me fait cette erreur à chaque fois.

Merci pour ta réponse

ViPHP
xTG
ViPHP | 7331 Messages

18 juil. 2012, 14:58

echo "....
<input type='submit' value='Modifier' onClick=\"location.href='modify.php'?id=" . $donnees['id'] . "\" />
....";

Eléphanteau du PHP | 25 Messages

18 juil. 2012, 15:14

echo "....
<input type='submit' value='Modifier' onClick=\"location.href='modify.php'?id=" . $donnees['id'] . "\" />
....";
Merci pour ta réponse xTG, mais toujours le même message d'erreur.

Les données qui sont présente sur cette fiches, on t déjà été envoyer par la methode get et utiliser afin de présenter les infos, moi je veux reprendre l'id et appartir de cette fiche pouvoir envoyer l'id a un autre script pour faire les modification.

ViPHP
xTG
ViPHP | 7331 Messages

18 juil. 2012, 16:15

La syntaxe que je t'ai donné ne génère absolument aucune erreur.
Montres nous comment tu l'utilises.

Eléphanteau du PHP | 25 Messages

18 juil. 2012, 16:19

J'ai laisser tomber cette approche il y avais moyen de faire plus simple et sur une seul page, j'ai prit la fiche avec des champs texte ou j'ai inséré les données par le biais des variables.

Seul soucis, c que je pense m'être tromper dans ma commande sql UPDATE
<?php

//include ('tools/debug.inc.php');


 $link = mysql_connect("localhost", "httpmedia", "abc123"); // Connexion à la base de données
 mysql_select_db("mediadb", $link); // Sélection de la base de données 
 $result = mysql_query ("SELECT * FROM artistes WHERE ID_Artiste LIKE '%" . $_GET['id'] . "%'"); // Requête SQL
 
 while ($donnees = mysql_fetch_assoc($result)) // On boucle pour afficher toutes les données et on met toutes données dans un tableau
 {
 
 function update() {
 
 $link = mysql_connect("localhost", "httpmedia", "abc123"); // Connexion à la base de données
 mysql_select_db("mediadb", $link); // Sélection de la base de données 
 $result = mysql_query ("UPDATE artistes SET name='%" . $donnees['name'] . "%', firstname='%" . $donnees['firstname'] . "%', nickname='%" . $donnees['nickname'] . "%' "); // Requête SQL
 }
	
	echo "<html>
		<head>
		<title>Liste d'artistes</title>
		<link rel='stylesheet' href='../design/style1.css' type='text/css'/>
		</head>
		<body><p class='titre'>Fiche de l'Artiste</p>
		<fieldset id='coordonnees'>
				
					<label> Nom : </label><br/>
						  <input type='text' value=" . $donnees['name'] . "><br/><br/>
					<label> Prénom : </label><br/>
						  <input type='text' value=" . $donnees['firstname'] . "><br/><br/>
					<label> Surnom : </label><br/>
						  <input type='text' value=" . $donnees['nickname'] . "><br/><br/>
					<label> Date de naissance : </label><br/>
						  <input type='text' value=" . $donnees['birthdate'] . "><br/><br/>
					<label> Lieu de Naissance : </label> <br/> 
						  <input type='text' value=" . $donnees['birthlocation'] . "><br/><br/>
					<label> Nationalité : </label><br/>
						  <input type='text' value=" . $donnees['nationality'] . "><br/><br/>
					<label> Biographie : </label><br/><br/>
						  <input type='text' value=" . $donnees['biography'] . "><br/><br/>
					<label> Site officiel : </label><br/>
						  <input type='text' value=" . $donnees['website'] . "><br/><br/><br/>
					<p id='buttons'>
						<input type='submit' value='Modifier' onClick='update()'>
						<input type='button' value='Effacer' />
						<input type='button' value='Retour' onClick=\"location.href='index.php'\" />
					</p>
				</fieldset>
		</body>
		</html>";
 }
 

 mysql_close(); // On oubli pas de déconnecter la base de données*/
?> 
Aussi la question que je me pose, est ce que je peux utiliser comme je l'ai fait la function update() et la mettre dans mon button submit j'ai des doutes .

ViPHP
xTG
ViPHP | 7331 Messages

18 juil. 2012, 21:18

Jamais de déclaration de fonction dans un script qui boucle !
Sinon fatal error car tu redéclares la fonction à chaque itération...
Déclares ta fonction update en dehors de toute boucle.

Et sinon ton souci c'est la portée des variables.
Faut soit passer les variables que tu utilises dans la fonction en global, soit les passer en arguments à ta fonction.
Et surtout l'appeler la fonction... (chose que tu ne fais pas dans ce script, onclick = javascript et non PHP)
Je te recommande de lire ces quelques articles très courts : http://phpdebutant.org/article118.php
Tu trouveras la suite dans le menu de droite.
Car visiblement à voir ton dernier jet tu n'as absolument aucune idée de comment ça fonctionne et il te manque de sérieuses bases en PHP.

Eléphanteau du PHP | 25 Messages

19 juil. 2012, 09:24

Jamais de déclaration de fonction dans un script qui boucle !
Sinon fatal error car tu redéclares la fonction à chaque itération...
Déclares ta fonction update en dehors de toute boucle.

Et sinon ton souci c'est la portée des variables.
Faut soit passer les variables que tu utilises dans la fonction en global, soit les passer en arguments à ta fonction.
Et surtout l'appeler la fonction... (chose que tu ne fais pas dans ce script, onclick = javascript et non PHP)
Je te recommande de lire ces quelques articles très courts : http://phpdebutant.org/article118.php
Tu trouveras la suite dans le menu de droite.
Car visiblement à voir ton dernier jet tu n'as absolument aucune idée de comment ça fonctionne et il te manque de sérieuses bases en PHP.
Je suis en formation, donc j'apprends toujours ^^ le hic la n'est pas la connaissance des bases, merci pour les liens j'ai déjà eu tout ces courts. Le soucis c'est qu'on nous à lancer dans un labo assez complexe
et que je dois m'en sortir avec mes connaissances et les informations que je pourrais trouver. Je veux pas qu'on fasse mon code a ma place, c'est juste que je seche a certain endroit, parfois je m'auto corrige
en utilisant une autre méthode. Sinon je demande a des personnes qui en connaissent plus que moi histoire de voir l'erreur que j'ai fait et de bien comprendre comment la solution fonctionne ^^.

Comment je l'ai dit plus haut j'avais un doute sur l'utilisation de la fonction, et tu me l'as confirmer. ^^

Donc en utilisant ma méthode, est ce que je dois quand même envoyer toute les données à un autres script qui va appliquer ma fonction update ou est ce qu'il y a possibilité de le faire sur ce script ?

ViPHP
xTG
ViPHP | 7331 Messages

19 juil. 2012, 09:34

Tu peux le faire sur ce script en utilisant des conditions.
Avec un lien du type :
echo '<a href="monScript.php?action=modif&id=' . $id . '">Modifier</a>';
Et utiliser donc une condition pour l'affichage du formulaire de modification :
if( isSet($_GET['action'], $_GET['id']) && $_GET['action'] == "modif" && is_int($_GET['id']) ){
  // Récupération des informations en bdd  
  // et affichage du formulaire
}

Eléphanteau du PHP | 25 Messages

19 juil. 2012, 11:35

if( isSet($_GET['action'], $_GET['id']) && $_GET['action'] == "modif" && is_int($_GET['id']) ){
  // Récupération des informations en bdd  
  // et affichage du formulaire
}
ca remplaceras mon WHILE c'est ça?

je vais tester, sinon je pensais transformer cette fiche en formulaire elle même a renvoyer sur un autre script par la méthode post, mais ça ne fonctionne pas je reçoit un tableau vide et en get l’URL et la mais pas les données :s

echo $_GET; ne m'affiche que Array

Pour infos j'ai commencer php mercredi passer ^^

Eléphanteau du PHP | 25 Messages

19 juil. 2012, 13:29

Petite mise ajour par rapport a se que j'ai fait.

J'ai réussit a faire en sorte que les informations des mise à jours reste sur le même script, de là j'ai inséré un include avec ma requête sql tenant compte des bonnes variables.
Seulement la mise a jour de la base de données se fait, mais toujours par un id=0 et se quoi qu'il arrive, même si je change moi même l'id dans ma requête sql.

voici les 2 scripts:
<?php

//include ('tools/debug.inc.php');




 $link = mysql_connect("localhost", "httpmedia", "abc123"); // Connexion à la base de données
 mysql_select_db("mediadb", $link); // Sélection de la base de données 
 $result = mysql_query ("SELECT * FROM artistes WHERE ID_Artiste LIKE '%" . $_GET['id'] . "%'"); // Requête SQL
 
 while ($donnees = mysql_fetch_assoc($result)) // On boucle pour afficher toutes les données et on met toutes données dans un tableau
 {
 
 
	
	echo "<html>
		<head>
		<title>Liste d'artistes</title>
		<link rel='stylesheet' href='../design/style1.css' type='text/css'/>
		</head>
		<body><p class='titre'>Fiche de l'Artiste</p>
		<form action='' method='post'>
		<fieldset id='coordonnees'>
				
					<label> Nom : </label><br/>
						  <input type='text' name='name' value=" . $donnees['name'] . "><br/><br/>
					<label> Prénom : </label><br/>
						  <input type='text' name='firstname' value=" . $donnees['firstname'] . "><br/><br/>
					<label> Surnom : </label><br/>
						  <input type='text' name='nickname' value=" . $donnees['nickname'] . "><br/><br/>
					<label> Date de naissance : </label><br/>
						  <input type='text' name='birthdate' value=" . $donnees['birthdate'] . "><br/><br/>
					<label> Lieu de Naissance : </label> <br/> 
						  <input type='text' name='birthlocation' value=" . $donnees['birthlocation'] . "><br/><br/>
					<label> Nationalité : </label><br/>
						  <input type='text' name='nationality' value=" . $donnees['nationality'] . "><br/><br/>
					<label> Biographie : </label><br/><br/>
						  <input type='text' name='biography' value=" . $donnees['biography'] . "><br/><br/>
					<label> Site officiel : </label><br/>
						  <input type='text' name='website' value=" . $donnees['website'] . "><br/><br/><br/>
						<p id='buttons'>
							<input type='submit' value='Modifier' />
							<input type='button' value='Effacer' />
							<input type='button' value='Retour' onClick=\"location.href='index.php'\" />
						</p>
					
				</fieldset>
				</form>
		</body>
		</html>";
		
 }
 include ('tools/update.inc.php');
 echo '<pre>';
 var_dump($_POST);
 echo '<pre>';
 var_dump($_GET['id']);

mysql_connect("localhost", "httpmedia", "abc123"); // Connexion à la base de données
	mysql_select_db("mediadb"); // Sélection de la base de données 
 
	mysql_query ("UPDATE artistes SET name='" . $_POST['name'] . "', firstname='" . $_POST['firstname'] . "', nickname='" . $_POST['nickname'] . "', birthdate='" . $_POST['birthdate'] . "', birthlocation='" . $_POST['birthlocation'] . "', nationality='" . $_POST['nationality'] . "', biography='" . $_POST['biography'] . "', website='" . $_POST['website'] . "' WHERE ID_Artiste='" . $_POST['ID_Artiste'] . "'"); // Requête SQL
 
    mysql_close(); // On oubli pas de déconnecter la base de données*/
Pour cette requete, j'ai essayer de changer la variable $_POST['ID_Artiste'] par la variable $_GET['id'] toujours bien presente et confirmer par var_dump($_GET['id']);
Mais ca ne changer rien du tout :'(

Eléphanteau du PHP | 25 Messages

19 juil. 2012, 14:41

Merci de vous être prit la tête pour essayer de m'aider, je vais tout recommencer a zéro sur de nouvelle base, je verrais bien se que ça donne :)