Problème pour mettre à jour mes données

Résolu/Fermé
Zeerroo Messages postés 199 Date d'inscription lundi 12 septembre 2011 Statut Membre Dernière intervention 12 décembre 2019 - 16 oct. 2012 à 09:04
Zeerroo Messages postés 199 Date d'inscription lundi 12 septembre 2011 Statut Membre Dernière intervention 12 décembre 2019 - 16 oct. 2012 à 15:10
Bonjour,

Voilà j'ai suivis les indications données dans un bouquin (Sites Web Dynamique PHP-MySQL-Javascript-AJAX) pour mettre à jour les informations de ma base de données via le navigateur en utilisant un formulaire PHP puis le script qui doit mettre à jour mais celui ne fonctionne pas.

Voici les codes de mes deux fichiers:

edite.php
<?php 
$liaison = mysql_connect ("localhost", "root", "");
mysql_select_db("biblio");
$sql = "select * from livre" .
	   " where id=". mysql_real_escape_string($_REQUEST["id"]);
$resultat = mysql_query($sql);
$livre = mysql_fetch_assoc($resultat);
?>

<html>
	<head>
		<title>Biblio</title>
	</head>
	<body>
		<h1>Modification</h1>
			<form action="metajour.php" method="post">
				<input type="hidden" name="id"
						value="<?php echo $livre["id"]; ?>" />
				<fieldset>
					<legend><?php echo $livre["titre"]; ?></legend>
					<label>titre</label>
						<input type="text" name="titre"
							value="<?php echo $livre["titre"]; ?>" /><br />
					<label>auteur</label>
						<input type="text" name="auteur"
							value="<?php echo $livre["auteur"]; ?>" /><br />
					<label>année</label>
						<input type="text" name="annee"
							value="<?php echo $livre["annee"]; ?>" /><br />
					<label>genre</label>
						<select name="genre">
							<option value="Roman"
									<?php if ($livre["genre"] == "Roman")
										echo "selected"?>>Roman</option>
							<option value="Poésie"
									<?php if ($livre["genre"] == "Poésie")
										echo "selected"?>>Poésie</option>
						</select><br />
					<label>état<label>
						<input type="radio" name="etat" value="1"
								<?php if ($livre["etat"] == 1) echo "checked"?> />
								neuf
						<input type="radio" name="etat" value="0"
								<?php if ($livre["etat"] == 0) echo "checked"?> />
								occasion
					<br />
					<input type="submit" value="Enregistrer" />
				</fieldset>
				<a href="liste.php">Retour à la liste</a>
	</body>
</html>

<?php 
mysql_close($liaison);
?>


metajour.php
<?php
	$liaison = mysql_connect("localhost", "root", "");
	mysql_select_db("biblio");
	$sql = "update livre set"
			." titre=".mysql_real_escape_string($_REQUEST['titre']).","
			." auteur=".mysql_real_escape_string($_REQUEST['auteur']).","
			." annee=".mysql_real_escape_string($_REQUEST['annee']).","
			." genre=".mysql_real_escape_string($_REQUEST['genre']).","
			." etat=".mysql_real_escape_string($_REQUEST['etat']).","
			." where id=".mysql_real_escape_string($_REQUEST['id']);
	mysql_query($sql);
	mysql_close($liaison);
?>
Mise à jour effectuée
<a href="liste.php">retour</a>.


J'ai fait toute les autres étapes, c'est à dire supprimer, ajouter un nouveau livre (dans le cas de l'exercice) et cela fonctionne, je réutilise la même structure que metajour.php en changeant juste la requête sql (insert into value, delete..)et cela fonctionne .


J'espère que mes explications sont claires, sinon n'hésitez pas à me demande des précisions.

Je vous remercie d'avance pour vos réponses.
A voir également:

3 réponses

maka54 Messages postés 698 Date d'inscription mercredi 8 avril 2009 Statut Membre Dernière intervention 4 décembre 2016 80
Modifié par maka54 le 16/10/2012 à 12:37
." etat=".mysql_real_escape_string($_REQUEST['etat']).","  
." where id=".mysql_real_escape_string($_REQUEST['id']);


Il y a une virgule en trop apres etat = ....

et il faudrait ajouter des quotes dans ta requete pour les données de type string

." etat='".mysql_real_escape_string($_REQUEST['etat'])."'"  
1
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
16 oct. 2012 à 10:18
je ne comprend pas trop ce qui ne fonctionne pas mais essayes comme ça:
edite.php

<?php 
$liaison = mysql_connect ("localhost", "root", "");
mysql_select_db("biblio");
//les instructions Mysql en majuscules (SELECT etc....) c'est plus facile à lire
$sql = "SELECT * fFROM livre" .
	   " WEHRE id=". mysql_real_escape_string($_GET["id"]);
	   //je suppose que id est passé vial l'url
$resultat = mysql_query($sql);
$livre = mysql_fetch_assoc($resultat);
?>

<html>
	<head>
		<title>Biblio</title>
	</head>
	<body>
		<h1>Modification</h1>
			<form action="metajour.php" method="post">
				<input type="hidden" name="id"
						value="<?php echo $livre["id"]; ?>" />
				<fieldset>
					<legend><?php echo $livre["titre"]; ?></legend>
					<label>titre</label>
						<input type="text" name="titre"
							value="<?php echo $livre["titre"]; ?>" /><br />
					<label>auteur</label>
						<input type="text" name="auteur"
							value="<?php echo $livre["auteur"]; ?>" /><br />
					<label>année</label>
						<input type="text" name="annee"
							value="<?php echo $livre["annee"]; ?>" /><br />
					<label>genre</label>
						<select name="genre">
							<option value="Roman"
									<?php if ($livre["genre"] == "Roman")
										echo "selected"?>>Roman</option>
							<option value="Poésie"
									<?php if ($livre["genre"] == "Poésie")
										echo "selected"?>>Poésie</option>
						</select><br />
					<label>état<label>
						<input type="radio" name="etat" value="1"
								<?php if ($livre["etat"] == 1) echo "checked"?> />
								neuf
						<input type="radio" name="etat" value="0"
								<?php if ($livre["etat"] == 0) echo "checked"?> />
								occasion
					<br />
					<!-- il faut mettre une name  input  submit -->
					<input name="modifier" type="submit" value="Enregistrer les modifications" />
				</fieldset>
				<a href="liste.php">Retour à la liste</a>
	</body>
</html>

<?php 
mysql_close($liaison);
?>



metajour.php

<?php
//on verifie que le formulaire de modif a été posté
//utilises $_POST au lieu de $_REQUEST
if(isset($_POST['modifier'])){
	$liaison = mysql_connect("localhost", "root", "");
	mysql_select_db("biblio");
	$sql = "UPDATE livre SET"
			." titre=".mysql_real_escape_string($_POST['titre']).","
			." auteur=".mysql_real_escape_string($_POST['auteur']).","
			." annee=".mysql_real_escape_string($_POST['annee']).","
			." genre=".mysql_real_escape_string($_POST['genre']).","
			." etat=".mysql_real_escape_string($_POST['etat']).","
			." where id=".mysql_real_escape_string($_POST['id']);
	$modification=mysql_query($sql);
	mysql_close($liaison);
	//pour afficher le mesage il faut verifier que la modif s'est bien passée
	if($modification){
		echo 'Mise à jour effectuée pour le livre: '.$_POST['titre'];
	}else{
		echo 'Pb avec la requette de mise à jour ! ';
	}


}
?>
<br /><br /><a href="liste.php">retour</a>.
0
Zeerroo Messages postés 199 Date d'inscription lundi 12 septembre 2011 Statut Membre Dernière intervention 12 décembre 2019 11
16 oct. 2012 à 15:10
Merci pour vos réponses.

@maka54 Effectivement la virgule était en trop.

Cela fonctionne correctement maintenant :)

Encore merci.
0