[RESOLU] Problème UPDATE de base de données

Petit nouveau ! | 2 Messages

28 mai 2013, 17:33

Bonjour,

Grand débutant en PHP, j'essaie de mettre à jour une base de données à partir d'un formulaire :
  • Affichage d'un formulaire de saisie du mot de passe (OK, ça fonctionne)
  • Si le bon mot de passe est saisi, connexion à la bdd et affichage d'un second formulaire, prérempli des valeurs présentes dans la bdd (OK, ça fonctionne aussi)
  • Lors de la validation de ce second formulaire, mise à jour de la bdd : c'est là le problème !
J'obtiens le message suivant :

Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in C:\wamp\www\test w\update_carburant2.php on line 60
		<p>Veuillez entrer votre mot de passe :</p>
		<form action="" method="post">
			<p>
				<input type="password" name="mot_de_passe" htmlonlychars() autofocus/>
				<input type="submit" value="Valider"/>
			</p>
		</form>
		<?php
		//vérifie la saisie du mot de passe et mot de passe OK
			if (isset($_POST['mot_de_passe']) 
				AND $_POST ['mot_de_passe']=="9999")
		//si mot de passe OK, connexion à la bdd, récupération des valeurs actuelles et affichage du formulaire
						
		{
			$bdd=new PDO('mysql:host=localhost;dbname=bases','root','')or die(print_r($bdd->errorInfo()));
			$reponse=$bdd->query('SELECT GO, E10, SP98 from prix_carburant');
			$donnees=$reponse->fetch();
			
	
		?>	
<form action="" method="post">
			<p id="form">				
				<label>GASOIL</label><input type="text" name="GO" id="GO" value="<?php echo $donnees['GO'];?>" required maxlength="5"/></br>
				<label>SP95-E10</label><input type="text" name="E10" id="E10" value="<?php echo $donnees['E10'];?>" required maxlength="5"/></br>
				<label>SP98</label><input type="text" name="SP98" id="SP98" value="<?php echo $donnees['SP98'];?>"required maxlength="5"/>
				<input type="submit" value="Envoyer"/>
				<input type="reset" value="Effacer"/>
			</p>
		</form>
<?php 
			$reponse->closeCursor();//fin de la requete de préremplissage du formulaire
		}	
	              	//connexion à la base//
		
		if (isset($_POST['GO'])			)
		{	
			$bdd=new PDO('mysql:host=localhost;dbname=bases','root','')or die(print_r($bdd->errorInfo()));	
			$req=$bdd->prepare('UPDATE prix_carburant SET GO = :nvGO, E10 = :nvE10, SP98 = :nvSP98');
			$req->execute(array(':nvGO' => $_POST['GO'],
								':nvE1O' => $_POST['E10'],
								':nvSP98' => $_POST['SP98']
								));		
		}
		//si mot de passe KO, reste en formulaire de saisie//
		?>	
J'ai relu plusieurs fois le code, je ne trouve pas l'erreur.
Pourriez_vous m'aider, en excusant mon incompétence ?

Petit nouveau ! | 2 Messages

29 mai 2013, 19:33

Je réponds à moi-même : le problème venait d'un 0(zero) dans la requête. Ça fonctionne en le remplaçant par O.