INSERT php mysql

Résolu/Fermé
anthonyr_25 Messages postés 165 Date d'inscription mercredi 5 janvier 2022 Statut Membre Dernière intervention 6 juillet 2022 - Modifié le 7 mars 2022 à 21:57
anthonyr_25 Messages postés 165 Date d'inscription mercredi 5 janvier 2022 Statut Membre Dernière intervention 6 juillet 2022 - 7 mars 2022 à 22:52
Bonjour à tous,

Alors voila j'aimerais ajoutez des données dans ma bdd depuis une page php, ses valeurs je les récupères depuis la page php, voici mon code :

<?php
session_start();
$bdd = new PDO('mysql:host=localhost;dbname=mydb', 'root', 'root');
if(!$_SESSION['mdp']){
    header('Location: indexView.php');
}

?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Afficher les produits</title>
</head>
<body>
    <!-- afficher tout les produits -->
    <?php
        $recupProd = $bdd->query('SELECT * FROM produit');
        while($prod = $recupProd->fetch()){
            ?>
            <p><?= $prod['produit']; ?> <a href="supp.php?id=<?=$prod['id']; ?>">Supprimer le produit</a> </p>
            <?php
        }
    ?>
    <!-- fin d'afficher tous les produits -->

    <!-- ajoutez un produit -->
    <form method="POST">
        <input type="text" name="newprod" placeholder="nom du produit">
        <input type="number" name="prodnumb" placeholder="prix du produit">
        <a href="add.php?produit=<?=$_POST['newprod'];?>?prix=<?=$_POST['prodnumb'];?>" name="valider">Ajoutez un produit</a>
    </form>
    <!-- fin d'ajoutez un produit -->
</body>
</html>


la je récupère mes données et normalement je les envoies dans ma bdd grâce à sa :

<?php
session_start();
$bdd = new PDO('mysql:host=localhost;dbname=mydb', 'root', 'root');
if(isset($_POST['valider'])) {
    if(!empty(($_POST['newprod'])) AND !empty($_POST['prodnumb'])) {

        $getprod = htmlspecialchars($_POST['newprod']);
        $getprice = $_POST['prodnumb'];

        $insert = $bdd->prepare('INSERT INTO produit (produit, prix) VALUES (?, ?)');
        $insert->execute(array($getprod, $getprice));

        header('Location: produits.php');
    } else {
        echo "Le produit n'as pas été ajoutez";
    }
} else {
    echo "erreur l'action n'as pas pu être effectuer";
}
?>


sa me redirige bien vers ma page "add.php" en revanche sa m'affiche mon msg d'"erreur l'action..." donc mon code ne fonctionne pas ... est ce qu'une âme charitable pourrais m'aider ?

Configuration: Windows / Chrome 98.0.4758.102
A voir également:

1 réponse

jordane45 Messages postés 38241 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 septembre 2024 4 689
7 mars 2022 à 22:20
Bonjour
Pour envoyer les données en $_POST il faut utiliser un bouton submit dans ton formulaire et non pas un lien...
Bouton qui aura l'atribu name "valider" vu le code de ta page add.PHP
1
anthonyr_25 Messages postés 165 Date d'inscription mercredi 5 janvier 2022 Statut Membre Dernière intervention 6 juillet 2022 6
7 mars 2022 à 22:24
Bonjour Jordane, je te remercie de ta réponse, le problème étant que même en $_POST j'ai l'impression que mes données sont incorrectes ou qu'elles ne se récupère pas d'une page à l'autre... ais-je juste besoin d'écrire $_POST['newprod'] dans ma seconde page pour récupéré mes valeurs de la premiere page ou alors est ce qu'il faut que je les lie d'une manière ou d'une autre ou même que je les transfert en paramètre pour pouvoir les récupéré ?
0
jordane45 Messages postés 38241 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 septembre 2024 4 689 > anthonyr_25 Messages postés 165 Date d'inscription mercredi 5 janvier 2022 Statut Membre Dernière intervention 6 juillet 2022
7 mars 2022 à 22:28
Visiblement tu n'as pas correctement lu ma réponse...
Pour que ton formulaire fonctionne il ne faut pas utiliser un lien mais mettre un bouton de type submit...
Je t'invite fortement à suivre une formation sur l'utilisation des formulaires en HTML et PHP.
Tu ne semble pas disposrr des connaissances minimum requises pour réussir ce que tu essaies de faire...
1
anthonyr_25 Messages postés 165 Date d'inscription mercredi 5 janvier 2022 Statut Membre Dernière intervention 6 juillet 2022 6 > jordane45 Messages postés 38241 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 septembre 2024
7 mars 2022 à 22:34
Si j'ai bien lue ta réponse et j'ai déjà fait un formulaire fonctionnel, simplement je pensse que je devrais peut être mettre un action en attribue de form pour éxécuter ma page add.php, ensuite je voulais savoir si le code de ma page add.php était correct ou non cars l'insertion ne se fait pas ...
0
anthonyr_25 Messages postés 165 Date d'inscription mercredi 5 janvier 2022 Statut Membre Dernière intervention 6 juillet 2022 6 > jordane45 Messages postés 38241 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 septembre 2024
Modifié le 7 mars 2022 à 22:37
ha bha c'est bon c'était sa, il fallait que je mette une action... mais éffectivement avec le lien sa ne marchait pas, merci de ton aide je poste mon code ;)

<?php
session_start();
$bdd = new PDO('mysql:host=localhost;dbname=mydb', 'root', 'root');
if(!$_SESSION['mdp']){
    header('Location: indexView.php');
}

?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Afficher les produits</title>
</head>
<body>
    <!-- afficher tout les produits -->
    <?php
        $recupProd = $bdd->query('SELECT * FROM produit');
        while($prod = $recupProd->fetch()){
            ?>
            <p><?= $prod['produit']; ?> <a href="supp.php?id=<?=$prod['id']; ?>">Supprimer le produit</a> </p>
            <?php
        }
    ?>
    <!-- fin d'afficher tous les produits -->

    <!-- ajoutez un produit -->
    <form method="POST" action="add.php">
        <input type="text" name="newprod" placeholder="nom du produit">
        <input type="number" name="prodnumb" placeholder="prix du produit">
        <input type="submit" name="valider"><p>Ajoutez un produit</p>
    </form>
    <!-- fin d'ajoutez un produit -->
</body>
</html>


en tout cas sympa de croire en moi Jordane tu me blesse la ^^ ...
0
jordane45 Messages postés 38241 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 septembre 2024 4 689 > anthonyr_25 Messages postés 165 Date d'inscription mercredi 5 janvier 2022 Statut Membre Dernière intervention 6 juillet 2022
7 mars 2022 à 22:42
Au passage, vu que tu fais du PDO, je t'invite fortement à appliquer les conseils donnés dans ce lien
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
1