Modification de données
Résolu
mocoye
Messages postés
90
Statut
Membre
-
mocoye Messages postés 90 Statut Membre -
mocoye Messages postés 90 Statut Membre -
Bonjour,
Voila je me remets au PHP après quelques années et je suis rouillée, je souhaite dans la partie admin de mon site, permettre la modification de données, j'ai crée une première page qui permet via un formulaire de recenser les entrées d'une de mes tables,
jusqu'à la ça fonctionne, en revanche après avoir fait ma modification et cliqué sur envoyer je reviens vers ma page initiale sans aucune modification, bien entendu j'ai demandé la modification sur une page intermédiaire
mais ca ne fonctionne pas je ne vois l'erreur, si quelqu'un peut m'aider ce serait génial.
Merci
Voila je me remets au PHP après quelques années et je suis rouillée, je souhaite dans la partie admin de mon site, permettre la modification de données, j'ai crée une première page qui permet via un formulaire de recenser les entrées d'une de mes tables,
<?php include("include/bdd.inc.php"); ?>
<?php
$req = $bdd->prepare('SELECT * FROM fiches_pratiques WHERE id= ?') or die(print_r ($bdd->errorInfo()));
$req->execute(array($_GET['id']));
?>
<form action="modif_fp2.php" id="form" method="post" enctype="multipart/form-data" >
<table>
<?php
while ($donnees = $req->fetch())
{
?>
<tr>
<td width="119" class="tit_champ">NUMERO</td>
<td width="423"><input name="numero" type="text" id="nom" class="txt_champ" value="<?php echo $donnees['numero']; ?>" /></td>
</tr>
<tr>
<td width="119" class="tit_champ">NOM</td>
<td width="423"><input name="nom" type="text" id="nom" class="txt_champ" value="<?php echo $donnees['nom']; ?>"/></td>
</tr>
<tr>
<td width="119" class="tit_champ">THEME</td>
<td width="423"><input name="theme" type="text" id="nom" class="txt_champ" value="<?php echo $donnees['theme']; ?>"/></td>
</tr>
<tr>
<td width="119" class="tit_champ">ACTIF</td>
<td class="champfichier"><input name="actif" type="checkbox" id="actif" <?php if($donnees["actif"]==1){echo "checked=\"checked\"";}?>/></td>
</tr>
<tr>
<td><input name="id_masque" type="hidden" value="<?php echo $donnees['id']; ?>" /></td>
<td><input name="envoyer" type="image" src="design/envoyer.png" value="envoyer" /></td>
</tr>
<?php
}
$req->closeCursor();
?>
</table>
</form>
jusqu'à la ça fonctionne, en revanche après avoir fait ma modification et cliqué sur envoyer je reviens vers ma page initiale sans aucune modification, bien entendu j'ai demandé la modification sur une page intermédiaire
<?php include("include/bdd.inc.php"); ?>
<?php
$id=addslashes($_POST["id_masque"]);
$numero=addslashes($_POST["numero"]);
$nom=addslashes($_POST["nom"]);
$theme=addslashes($_POST["theme"]);
if(isset($_POST["actif"])){
echo $actif=1 ;
} else {
echo $actif=0;
}
$req = $bdd->prepare('UPDATE fiches_pratiques SET numero = :numero, nom = :nom, theme = :theme, actif = :actif WHERE id = :id');
$req->execute(array(
'numero' => $numero,
'nom' => $nom,
'theme' => $theme,
'actif' => $actif
));
header("location:fiches_pratiques.php");
?>
mais ca ne fonctionne pas je ne vois l'erreur, si quelqu'un peut m'aider ce serait génial.
Merci
| EDIT : Ajout du LANGAGE dans les balises de code (la coloration syntaxique).
Explications disponibles ici : ICI Merci d'y penser dans tes prochains messages. |
1 réponse
-
Bonjour,
Prends l'habitude de séparer les requêtes ainsi que les variables associées de l'exécution de la requête.
Pense également à mettre ton code dans un bloc try/catch pour intercepter les éventuelles erreurs.
Par exemple :$sql = 'UPDATE fiches_pratiques SET numero = :numero, nom = :nom, theme = :theme, actif = :actif WHERE id = :id'; $a_datas = array( 'numero' => $numero, 'nom' => $nom, 'theme' => $theme, 'actif' => $actif ); try{ $req = $bdd->prepare($sql); $resultat = $req->execute($a_datas); }catch(Exception $e){ echo "Erreur ! ".$e->getMessage(); echo "Requete : ".$sql; echo "Variables : <br><pre>"; print_r($a_datas); echo "'</pre>"; exit(); // remplace le "die" } if($resultat){ //si pas de souci dans la requête... redirection ! header("location:fiches_pratiques.php"); }
pour "trapper" les éventuelles erreurs PHP tu peux aussi ajouter au début de tes pages PHP l'instruction :error_reporting(E_ALL);
NB : on n'utilise plus le OR DIE ... mais on préfèrera les TRY/CATCH.
-
Bonjour,
Tout d'abord merci pour ta réponse, que j'ai mis en application, malheureusement voici le message que la page m'affiche.
( ! ) Notice: Undefined variable: numero in C:\wamp\www\crib\regent\modif_fp2.php on line 8
Call Stack
# Time Memory Function Location
1 0.0007 140448 {main}( ) ..\modif_fp2.php:0
( ! ) Notice: Undefined variable: nom in C:\wamp\www\crib\regent\modif_fp2.php on line 9
Call Stack
# Time Memory Function Location
1 0.0007 140448 {main}( ) ..\modif_fp2.php:0
( ! ) Notice: Undefined variable: theme in C:\wamp\www\crib\regent\modif_fp2.php on line 10
Call Stack
# Time Memory Function Location
1 0.0007 140448 {main}( ) ..\modif_fp2.php:0
( ! ) Notice: Undefined variable: actif in C:\wamp\www\crib\regent\modif_fp2.php on line 12
Call Stack
# Time Memory Function Location
1 0.0007 140448 {main}( ) ..\modif_fp2.php:0
( ! ) Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in C:\wamp\www\crib\regent\modif_fp2.php on line 16
Call Stack
# Time Memory Function Location
1 0.0007 140448 {main}( ) ..\modif_fp2.php:0
2 0.0060 148808 execute ( ) ..\modif_fp2.php:16
j'ai copié/collé ton code et l'ai mis à la place du mien de cette façon :
<?php include("include/bdd.inc.php"); ?>
<?php
$sql = 'UPDATE fiches_pratiques SET numero = :numero, nom = :nom, theme = :theme, actif = :actif WHERE id = :id';
$a_datas = array(
'numero' => $numero,
'nom' => $nom,
'theme' => $theme,
'actif' => $actif
);
try{
$req = $bdd->prepare($sql);
$resultat = $req->execute($a_datas);
}catch(Exception $e){
echo "Erreur ! ".$e->getMessage();
echo "Requete : ".$sql;
echo "Variables : <br><pre>";
print_r($a_datas);
echo "'</pre>";
exit(); // remplace le "die"
}
if($resultat){
//si pas de souci dans la requête... redirection !
header("location:fiches_pratiques.php");
}
?> -
-
Tu as oublié de remettre la récupération des variables .....
$id=addslashes($_POST["id_masque"]); $numero=addslashes($_POST["numero"]); $nom=addslashes($_POST["nom"]); $theme=addslashes($_POST["theme"]); if(isset($_POST["actif"])){ echo $actif=1 ; } else { echo $actif=0; }
A écrire comme ça de préférence :$id= isset($_POST["id_masque"]) ? addslashes($_POST["id_masque"]) : NULL; $numero= isset($_POST["numero"]) ? addslashes($_POST["numero"]) : ''; $nom= isset($_POST["nom"]) ? addslashes($_POST["nom"]) : ''; $theme=isset($_POST["theme"]) ? addslashes($_POST["theme"]) : ''; $actif = isset($_POST["actif"]) ? 1 : 0 ;
-
re,
Alors j'ai mis le nouveau code que tu m'as fourni avant le précédent et j'ai le message suivant qui apparait :
( ! ) Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in C:\wamp\www\crib\regent\modif_fp2.php on line 21
Call Stack
# Time Memory Function Location
1 0.0008 143408 {main}( ) ..\modif_fp2.php:0
2 0.0054 152008 execute ( ) ..\modif_fp2.php:21
ci-dessous le code de la page "modif_fp2.php"
<?php include("include/bdd.inc.php"); ?>
<?php
$id= isset($_POST["id_masque"]) ? addslashes($_POST["id_masque"]) : NULL;
$numero= isset($_POST["numero"]) ? addslashes($_POST["numero"]) : '';
$nom= isset($_POST["nom"]) ? addslashes($_POST["nom"]) : '';
$theme=isset($_POST["theme"]) ? addslashes($_POST["theme"]) : '';
$actif = isset($_POST["actif"]) ? 1 : 0 ;
$sql = 'UPDATE fiches_pratiques SET numero = :numero, nom = :nom, theme = :theme, actif = :actif WHERE id = :id';
$a_datas = array(
'numero' => $numero,
'nom' => $nom,
'theme' => $theme,
'actif' => $actif
);
try{
$req = $bdd->prepare($sql);
$resultat = $req->execute($a_datas);
}catch(Exception $e){
echo "Erreur ! ".$e->getMessage();
echo "Requete : ".$sql;
echo "Variables : <br><pre>";
print_r($a_datas);
echo "'</pre>";
exit(); // remplace le "die"
}
if($resultat){
//si pas de souci dans la requête... redirection !
header("location:fiches_pratiques.php");
}
?>
Merci encore pour ton aide, -
-