IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

[PDO] Requête basique non fonctionnelle


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2022
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2022
    Messages : 4
    Par défaut [PDO] Requête basique non fonctionnelle
    Bonjour ,

    Je suis étudiant, et je m'entraine avec un petit logiciel perso de gestion d'entrepôt.
    J'ai modifier ma base de données et adaptée ma requête à la nouvelle table. Sauf qu'elle ne marche pas, et je n'arrive pas à savoir où j'ai fais mon erreur.

    Voilà le code :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    <?php
    if($_POST['nb_max'] == "palette"){
            $palette_max = $_POST['nb_champs'];
            $carton_max = "N/A";
        } else {
            //Si nb_max n'est pas égale à palette, alors il est forcément égale à carton
            $palette_max = "N/A";
            $carton_max = $_POST['nb_champs'];
        }
     
    //Lien avec les informations du sous programme "fonction"
                $linkpdo=connection();  
     
                //Préparation de la requête
                $pdoStat = $linkpdo->prepare('INSERT INTO cahier_charges (id_cc, id_prestataire, nom, description_cc, prix, cycle, hauteur_max, nb_palette_max, nb_carton_max, ob)
                                                VALUES (NULL, :id_prestataire, :nom, :description_cc, :prix, :cycle, :hauteur_max, :nb_palette_max, :nb_carton_max, :ob)');
     
                //Liaison du paramètre nommé
                $pdoStat->bindValue(':id_prestataire', $_POST['prestataire'], PDO::PARAM_INT);
     
                $pdoStat->bindValue(':nom', $_POST['nom'], PDO::PARAM_STR);
     
                $pdoStat->bindValue(':description_cc', $_POST['description'], PDO::PARAM_STR);
     
                $pdoStat->bindValue(':prix', $_POST['prix'], PDO::PARAM_STR);
     
                $pdoStat->bindValue(':cycle', $_POST['cycle'], PDO::PARAM_STR);
     
                $pdoStat->bindValue(':hauteur_max', $_POST['hauteur'], PDO::PARAM_STR);
     
                $pdoStat->bindValue(':nb_palette_max', $palette_max, PDO::PARAM_STR);
                $pdoStat->bindValue(':nb_carton_max', $carton_max, PDO::PARAM_STR);
     
                // ob = 0 car on part du principe qu'une palette n'est pas obsolète vu qu'on l'a créé
                $pdoStat->bindValue(':ob', false, PDO::PARAM_BOOL);
     
                //Éxécuter la requête
                $execute = $pdoStat->execute();
    ?>

    Ma base de données, où "id_prestataire" est index ET "nom" est unique. (le problème ne viens pas de là)
    La table ne contient aucune données:
    Nom : mabdd.png
Affichages : 111
Taille : 98,5 Ko

    Merci d'avance.

  2. #2
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 986
    Par défaut
    Ma base de données ... (le problème ne viens pas de là)
    Non, par contre une information importante s'y trouvre: la colonne id_cc est ta clef primaire, non nulle, en auto increment. Elle n'a donc rien à faire dans ta requête d'insertion et encore moins initialisée à NULL:
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $query = 'INSERT INTO cahier_charges (id_prestataire, nom, description_cc, prix, cycle, hauteur_max, nb_palette_max, nb_carton_max, ob)
              VALUES (:id_prestataire, :nom, :description_cc, :prix, :cycle, :hauteur_max, :nb_palette_max, :nb_carton_max, :ob)';
    $pdoStat = $linkpdo->prepare($query);

  3. #3
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 633
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 633
    Billets dans le blog
    10
    Par défaut
    @CosmoKnacki : non, avec une colonne de type auto_incrément, les deux façons de faire sont possibles.
    Soit on ne déclare pas la colonne dans l'ordre insert, soit on la déclare et on la valorise à "null" comme l'a fait X7_900.

    Si l'insertion ne produit pas le résultat attendu, il faut vérifier que les valeurs de clefs étrangères sont bien présentes dans les tables référencées.

  4. #4
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 986
    Par défaut
    Ah oui, tu as raison, j'ai pris mon habitude pour une règle.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2022
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2022
    Messages : 4
    Par défaut
    Bon.

    Enfaite le problème venait des PDO::PARAM_STR qui fallait les transformer en _INT

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
                $pdoStat->bindValue(':nb_palette_max', $palette_max, PDO::PARAM_INT);
                $pdoStat->bindValue(':nb_carton_max', $carton_max, PDO::PARAM_INT);

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Requête SQL non fonctionnelle
    Par Catif dans le forum Langage SQL
    Réponses: 4
    Dernier message: 03/06/2021, 09h17
  2. [PDO] PDO Update préparé - non fonctionnel
    Par JayZon12 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 30/04/2014, 01h28
  3. [AC-2007] Fonction de suppression de requête non fonctionnelle
    Par facedeharicot dans le forum VBA Access
    Réponses: 9
    Dernier message: 26/07/2011, 11h49
  4. Plugin non fonctionnel après requête AJAX
    Par florianlyon dans le forum jQuery
    Réponses: 8
    Dernier message: 05/07/2011, 08h56
  5. [MySQL] Requête delete non-fonctionnelle
    Par asvin dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 05/12/2008, 21h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo