Bonjour a tous,
Voila je rencontre un petit problème avec mon code.

Je souhaiterais pouvroir me faire un formulaire qui modifie les tarifs des prix de ventes de mes produits stockée dans une base access.

pour cela j'utilise de champs input qui execute mes requetes :

  • 1er: identification du produits par sont ID ($sql)
  • 2eme: update du prix ($majprix)

Voila mon code que j'utilise mais lorsque que je modifie mon prix via le formulaire, rien ne se passe.

<html>
<body>

<?php
$conn=odbc_connect("ODBC_Articles","","");
if (!$conn) {exit("Echec de connection : " . $conn);}

    $majprix="UPDATE Produits SET PrVente_E='".$_POST["prix"]."' WHERE Code='".$_POST['code']."'";
    $sql="SELECT * FROM Produits WHERE Code='".$_POST['code']."'";
    $rs=odbc_exec($conn,$sql);
    $rs2=odbc_exec($conn,$majprix);

if (!$rs) {exit("Erreur dans la requête SQL");}

    while (odbc_fetch_row($rs)) {

    $Listeproduits = $Listeproduits . '<tr><td>' . odbc_result($rs,"Code") . '</td><td>';
    $Listeproduits = $Listeproduits . odbc_result($rs, "Designation") . '</td><td>';
    $Listeproduits = $Listeproduits . odbc_result($rs, "PrVente_E") . '</td></tr>' ;
}
odbc_close($conn);
?>
        <form action = "formulaire.php" method="post">
            Saisir le code : <input type="text" name="code" placeholder="saisir...">
             <input type="submit" name="envoi">
        </form>
            <?php
            if(isset($_POST['envoi'])){ // si formulaire soumis
            $_POST['code'];
            }
            ?>
        <form action = "formulaire.php" method="post">
            Saisir le nouveau prix : <input type="text" name="prix" placeholder="Nouveau prix">
             <input type="submit" name="valider" value="valider">
        <br>
        </form>
            <?php
            if(isset($_POST['valider'])){ // si formulaire soumis
            $_POST['prix'];
            }
            ?>
    <table border=1 cellspacing=0>
    <tr><td>Code</td><td>Designation</td><td>Prix de vente</td></tr>

    <?php echo $Listeproduits; ?>
 <br>
</table>
</body>
</html>

j'ai effectuer un test avec ma requete update avec le prix en fixe dans mon code et elle fonctionne
$majprix="UPDATE Produits SET PrVente_E=10 WHERE Code='".$_POST['code']."'";

et la ça fonctionne :/

Merci a vous pour vos conseils.

3 réponses


Utiliser les requêtes préparées c'est mieux

// exemple
<?php
$req = $bdd->prepare('UPDATE Produits SET PrVente_E=?  WHERE Code=?');
$req->execute(array($_POST['prix'], $_POST['code']));
?>

Refais ton code avec les requêtes préparées

moh2210
Auteur

Merci pour ta réponse, je ne connais pas vraiment les requetes preparées.
la variable $bdd que tu a mi doit ètre remplacé par ma variable de connexion , c'est ça ?

Il veut pas vraiment que tu fasses ça, il veut (et il faudrait) que tu utilise PDO, qui est la façon Orienté Object de gerer les requêtes SQL.
Et dont avec tu peux faire des requêtes préparer qui mitigent par défaut les injections SQL
Car ce que tu fais (injecter les variables POST dans la requête SQL directement) est HYPER dangereux (genre plus facile pour corrompre tes données y a pas).
Aussi vu que tu utilises les fonctions pour la base d'Oracle (il me semble) qui diffère déjà un peu de MySQL/MariaDB (que plus personne utilise à cause de PDO) bah pour débugger ton code ça aide pas.
Donc meilleurs conseil que j'ai à te donner pour le moment c'est de regarder comment fonctionne PDO, réécire ton code en utilisant PDO et puis si tu as toujours un problème revenir demander de l'aide :)