Un Update qui ne marche ''plus''
Résolu
warbeast1000
Messages postés
56
Date d'inscription
Statut
Membre
Dernière intervention
-
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
Salutation ! *encore*
Je reviens vous voir aujourd'hui suite à un petit soucis que je n'arrive pas à régler depuis 2 jours.
Voila comment sa se présente : une page specprod.php (qui contient toutes les caractéristiques de mes produits (marque, modele, ref... etc) qui contient, à ce jour 2 formulaires avec action vers (modifprod.inc.php et le seconde vers promoprod.inc.php)
les voicis :
le formulaire de promotion (ainsi que son fichier d'UPDATE, promoprod.inc.php) fonctionne.
Le problème vient de modifprod.inc.php, donc de l'UPDATE du produits (PS: la soumission du formulaire est bonne, je pense donc que cela vient de la requête mais je ne sais pas OU ce trouve l'erreur dans la requête).
fichier modifprod.inc.php
VOILA VOILA, merci à ceux qui m'aideront à resoudre ce problème qui m'empeche de poursuivre la création de mon site ^^
Guillaume
echo est plus rapide que print.
Je reviens vous voir aujourd'hui suite à un petit soucis que je n'arrive pas à régler depuis 2 jours.
Voila comment sa se présente : une page specprod.php (qui contient toutes les caractéristiques de mes produits (marque, modele, ref... etc) qui contient, à ce jour 2 formulaires avec action vers (modifprod.inc.php et le seconde vers promoprod.inc.php)
les voicis :
<?php try{ include('inc/cnx.inc.php'); if(isset($_GET['refP'])){ $reqs = "SELECT * FROM produits WHERE refP='".$_GET['refP']."'"; $rereqs = $connexion->query($reqs); $prod = $rereqs->fetch(); echo "<form id='modifproduits' action='inc/modifprod.inc.php' method='POST'>"; echo "<input type='hidden' name='idP' value=".$prod['idP']." />"; echo "<fieldset><label>Référence : </label><input type='text' name='refP' value='".$prod['refP']."' maxlength='13' required [/contents/2121-l-autofocus autofocus] /><br /><br /></fieldset>"; echo "<fieldset><label>Catégorie : </label><input type='text' name='categD' value='".$prod['categD']."' /><br /><br /></fieldset>"; echo "<fieldset><label>Marque : </label><input type='text' name='marqueP' value='".$prod['marqueP']."' required /><br /><br /></fieldset>"; echo "<fieldset><label>Modèle : </label><input type='text' name='modeleP' value='".$prod['modeleP']."' required /><br /><br /></fieldset>"; ?> <fieldset><label>Description : </label><[/contents/493-formulaires-html-cours-et-exemples textarea] name='descriptionP' required>"<?php echo htmlspecialchars($prod['descriptionP'],ENT_QUOTES, 'UTF-8'); ?>"</textarea><br /><br /></fieldset> <?php echo "<fieldset><label>Prix : </label><input type='text' name='prixP' value='".$prod['prixP']."' required /><br /><br /></fieldset>"; echo "<fieldset><label>Quantité : </label> <input type='number' name='quantiteP' min='1' max='30' value='".$prod['quantiteP']."' required /><br /><br /></fieldset>"; echo "<button type='submit' id='modifproduits' name='modifproduits'>Valider Modifications</button><br /><br /><br />"; echo "</form>"; } } [/contents/554-java-les-exceptions catch] (PDOException $e){ die("Source : ".$[/contents/698-odbc-open-database-connectivity DSN]." Erreur : ".$e->getMessage()); } ?> <hr /><br /> <?php try{ include('inc/cnx.inc.php'); $reqp = "SELECT idP, promoP FROM produits WHERE refP='".$_GET['refP']."'"; $rereqp = $connexion->query($reqp); $reqpro = $rereqp->fetch(); echo "<form id='promoprod' action='inc/promoprod.inc.php' method='POST'>"; echo "<input type='hidden' name='idP' value=".$reqpro['idP']." />"; echo "<fieldset><label>Promotion(%) : </label><input type='text' name='promoP' placeholder='Entrez pourcentage promotion' maxlength='2' required autofocus /><br /><br /><br /></fieldset>"; echo "<button type='submit' name='promo' id='promoprod' value='Promo'>Valider % promo</button><br /><br />"; echo "</form>"; } catch (PDOException $e){ die("Source : ".$DSN." Erreur : ".$e->getMessage()); } ?>
le formulaire de promotion (ainsi que son fichier d'UPDATE, promoprod.inc.php) fonctionne.
Le problème vient de modifprod.inc.php, donc de l'UPDATE du produits (PS: la soumission du formulaire est bonne, je pense donc que cela vient de la requête mais je ne sais pas OU ce trouve l'erreur dans la requête).
fichier modifprod.inc.php
<?php include('cnx.inc.php'); $reqprodup = $connexion->prepare ("UPDATE produits SET refP=".$_POST['refP'].'", categD = "'.$_POST['categD'].'", marqueP = "'.$_POST['marqueP'].'", modeleP = "'.$_POST['modeleP'].'", descriptionP = "'.$_POST['descriptionP'].'", prixP = "'.$_POST['prixP'].'", quantiteP = "'.$_POST['quantiteP'].'" WHERE idP = "'.$_POST['idP'].'"'); $reqprodup->execute(); header('Location:../modifprod.php'); ?>
VOILA VOILA, merci à ceux qui m'aideront à resoudre ce problème qui m'empeche de poursuivre la création de mon site ^^
Guillaume
echo est plus rapide que print.
A voir également:
- Un Update qui ne marche ''plus''
- Windows update bloqué - Guide
- Winget update - Guide
- Asus live update - Télécharger - Utilitaires
- Wsus offline update - Télécharger - Systèmes d'exploitation
- Nettoyage windows update - Guide
1 réponse
Bonjour,
1 - Il est préférable de sortir la requête de l'exécution prepare
2 - Il est préférable d'utiliser un ARRAY de param pour les variables de ta requête
3 - (c'est le plus important ! ) on récupère PROPREMENT les variables AVANT de les utiliser. (pour cela on va se servir de la fonction ISSET pour vérifier qu'elles existent bien et de l'écriture TERNAIRE (une sorte de IF/ELSE )).
4 - Tu peux ajouter un bloc try/catch pour intercepter les éventuelles erreurs.
Ce qui donne :
Cordialement,
Jordane
1 - Il est préférable de sortir la requête de l'exécution prepare
2 - Il est préférable d'utiliser un ARRAY de param pour les variables de ta requête
3 - (c'est le plus important ! ) on récupère PROPREMENT les variables AVANT de les utiliser. (pour cela on va se servir de la fonction ISSET pour vérifier qu'elles existent bien et de l'écriture TERNAIRE (une sorte de IF/ELSE )).
4 - Tu peux ajouter un bloc try/catch pour intercepter les éventuelles erreurs.
Ce qui donne :
// récupération des variables $refP = isset($_POST['refP'])?$_POST['refP']:''; $categD = isset($_POST['categD'])?$_POST['categD']:''; $marqueP = isset($_POST['marqueP'])?$_POST['marqueP']:''; $modeleP = isset($_POST['modeleP'])?$_POST['modeleP']:''; $descriptionP = isset($_POST['descriptionP'])?$_POST['descriptionP']:''; $prixP = isset($_POST['prixP'])?$_POST['prixP']:''; $quantiteP = isset($_POST['quantiteP'])?$_POST['quantiteP']:''; $idP = isset($_POST['idP'])?$_POST['idP']:NULL; if($idP){ // préparation des requetes $sql = "UPDATE produits SET refP=:refP ,categD = :categD ,marqueP = :marqueP ,modeleP = :modeleP ,descriptionP = :descriptionP ,prixP = :prixP ,quantiteP = :quantiteP WHERE idP = :idP "; $params = array( ":refP"=>$refP ,":categD"=>$categD ,":marqueP"=>$marqueP ,":modeleP"=>$modeleP ,":descriptionP"=>$descriptionP ,":prixP"=>$prixP ,":quantiteP"=>$quantiteP ,":idP"=>$idP ); //execution de la requete try{ $reqprodup = $connexion->prepare ($sql); $reqprodup->execute($params); } catch(Exception $e){ echo 'Erreur dans la requête : <br>' . $e->getMessage(); } }else{ echo "<br> Erreur : Aucun ID ! "; }
Cordialement,
Jordane
Mais cela ne réalise toujours aucun action sur la bdd :(
Ai-je encore fait une erreur ?
l'erreur, dans le code que j'ai adapter, était celle-ci :
changer en
et sa marche !
MERCI ENCORE a jordane45 !
Guillaume
Tu peux aussi ajouter (avant le TRY) du debogue sur les variables pour voir si elles sont bonnes: