Bonjour,
J'ai un petit souci avec php, je m'explique, je voudrais afficher des noms qui appartiennent à ma base de données dans une liste déroulante pour ensuite les afficher dans un tableau (ça c'est OK, tout fonctionne).
Ensuite dans ce tableau, j'aimerais pouvoir modifier les valeurs qui y sont inscrites et c'est ici que je bloque, j'ai beau chercher sur internet mais je trouve juste des exemples bateau.

Voici mon code (alors il ne vient pas de moi mais j'ai réussi à comprendre l'essentiel).

<html>
	<head>
	
	</head>
	
	<body>

		<?php
			if(isset($_POST['liste1']))
			{
				$liste1=$_POST['liste1'];
			}else
			{
				$liste1=-1;
			}
		?>
		<TABLE border=0 width=97% BGCOLOR=#FFFFFF>
			<TR align="center">
				<TD> Modification </TD>
			</TR>
		</TABLE>
		<BR><BR>
		
		Sélectionnez un Nom :
		<form name="form1" method="post" action="">
			<select name="liste1" onchange=" form1.submit();">
				<option value=-1>-- Choisissez -- </option>
				<?php

					$connection = mysql_connect('localhost', 'root', '');
					$base = mysql_select_db('mabdd');

					$requete = "SELECT id, nom, adresse, telephone FROM bdd";
					$execution_requete = mysql_query($requete);
					while($total = mysql_fetch_array($execution_requete))

					{
						echo "<option value=\"".$total["nom"]."\"";
						if($liste1==$total['nom']) { echo "selected"; }
						echo ">".$total['nom']."</option>\n";

					}

				?>
			</select>
		</form>
		<?php
			if($liste1 != -1)
			{ 
				$requete = "SELECT id, nom, adresse, telephone FROM bdd WHERE nom='".$liste1."'";
				$execution_requete = mysql_query($requete);

				$total = mysql_fetch_array($execution_requete);
				//echo "Nom: ".$total['nom']."<br />Matricule: ".$total['matricule']."<br />Vacation: ".$total['vacation']."<br />Equipe: ".$total['equipe'];
				// }  si on déplace cette accolade plus bas ça a l'avantage de na pas afficher la partie Informations tant que le choix n'a pas été fait dans la lsite1
				?>

				<br />
				</div>
				<div id="right_bas"></div>
				<div id="right_haut"></div>
				<div id="rightbk">
				<br />

				<TABLE border=0 width=97% bgcolor=#FFFFFF>
					<TR align=center>
						<TD> Informations</TD>
					</TR>
				</TABLE>

				<form method="post" action="">
					<center>
						<TABLE BORDER="0">
							<CAPTION> </CAPTION>
							<TR>
								<TH>Nom :</TH>
								<TD><input type="text" name="nom" value="<?php echo $total['nom'] ?>" size="20" ></TD>
								<TH></TH>
								<TH></TH>
								<TH> Adresse :</TH>
								<TD><input type="text" name="adresse" value="<?php echo $total['adresse'] ?>" size="20" ></TD>
								<TR></TR>
								<TH>Telephone :</TH>
								<TD><input type="text" name="telephone" value="<?php echo $total['telephone'] ?>" size="20" ></TD>
							</TR>
						</TABLE>
						<br><br>
						<input type="submit" name="modifier" value="Modifier">
						<input type="hidden" name="id" value="<?php echo $total['id'] ?>">
					</center>
				</form>
		<?php
			}

			if(isset($_POST['modifier']))
			{
				$id = $_POST["id"];
				$result = mysql_query("UPDATE FROM bdd WHERE id='".$id."' LIMIT 1");
				
				if (!$result) {
					echo "La modification a échouée<br>";
				} else {
					echo "Agent modifié !<br>";
				}
			}
		?>
		
	</body>
</html>


Merci beaucoup, si vous pouvez m'apporter une aide.
J'ai pas regardé en détail, mais si tu veux modifier une valeur que tu as en bdd par une autre valeur, alors ta requete n'est ps bonne.

Elle devrait plutôt être du type :

UPDATE FROM bdd SET tonchamp = tanouvellevaleur WHERE id='".$id."' LIMIT 1
Merci J_B

Donc si je comprends bien, je devrais avoir ça :

<?php
			}

			if(isset($_POST['modifier']))
			{
				$id = $_POST["id"];
				$result = mysql_query("UPDATE FROM bdd SET nom = $total['nom'], adresse = $total['adresse'], telephone = $total['telephone'] WHERE id='".$id."' LIMIT 1");
				
				if (!$result) {
					echo "La modification a échouée<br>";
				} else {
					echo "Agent modifié !<br>";
				}
			}
		?>


Je viens de tester et cela ne fonctionne pas, j'ai une erreur de syntaxe, j'essaye de trouver sur internet mais si quelqu'un le trouve avant moi, merci de mettre la réponse Smiley smile .
Modifié par aurel1993 (16 Oct 2015 - 15:21)
Ce serait plutôt quelque chose comme ça :

"UPDATE FROM bdd SET nom = ".$total['nom'].", adresse = ".$total['adresse'].", telephone = ".$total['telephone']." WHERE id=".$id." LIMIT 1"


Edit : tu peux aussi remplacer les , par AND
Modifié par J_B (16 Oct 2015 - 17:06)
Bonjour, excusez moi de répondre que maintenant mais j'ai une erreur syntaxe sur mon code, je ne trouve pas l'erreur, est ce quelqu'un peut m'aiguiller svp, merci.



if(isset($_POST['modifier']))
{
	$id = $_POST["id"];
	$result = mysql_query("UPDATE FROM bdd SET nom = ".$total['nom'].", adresse = ".$total['adresse'].", telephone = ".$total['telephone']." WHERE id=".$id." LIMIT 1)";
	
	if (!$result) {
		echo "La modification a échouée<br>";
	} else {
		echo "Agent modifié !<br>";
	}
}



J'ai trouvé mon erreur c'est une paranthèse que j'ai oublié à la fin de ma requête.

Par contre lorsque j'exécute la requête, il n'y a rien qui se passe
Merci pour votre aide
Modifié par aurel1993 (03 Nov 2015 - 17:44)
salut,
il faut déjà que tu protège les valeurs que tu ajoutes à ta bases de données, si non celle-ci sera vulnérable. N'intègre jamais et au grand jamais des données utilisateurs dans ta requête sans avoir vérifier celles-ci.
Ta requête pourrait peut être ressembler à ça

$result = mysql_query("UPDATE FROM bdd SET nom = '".$total['nom']."', adresse = '".$total['adresse']."', telephone = '".$total['telephone']."' WHERE id='".$id."' LIMIT 1)";