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 :

[PostGreSQL] Requête d'insertion qui ajoute des champs vides


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 27
    Points : 16
    Points
    16
    Par défaut [PostGreSQL] Requête d'insertion qui ajoute des champs vides
    Bonjour,

    J'ai deux petit souci que je n'arrive pas à résoudre.

    Tout d'abord, J'ai un souci sur l'éxecution des requête Insert. En effet, si j'ai un champs non rempli, j'ai alors le message suivant " Warning: pg_query(): Query failed: ERROR: invalid input syntax for integer: "" ". A priori cela ne touche que les champs numérique.

    Voici mon bout de code :

    Partie fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ConnectBD();
     $sql = "INSERT INTO schema_gestion_cimetco.$table ($champs) VALUES ($variable)";
     pg_query($sql);
     $id = pg_insert_id();
     DisconnectBD();
     return $id;
    Partie appli
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $table = "coordonne";
            $variable = "'".$_POST["adresse1"]."','".$_POST["adresse2"]."','".$_POST["code_postal"]."','"
                        .$_POST["ville"]."','".$_POST["tel1"]."','".$_POST["tel2"]."','".$_POST["tel3"]."','"
                        .$_POST["fax"]."','".$_POST["mail"]."','".$_POST["web"]."','1'";
            $champs ="adresse1_coordonne, adresse2_coordonne, codepostal_coordonne, ville_coordonne, 
                      tel1_coordonne, tel2_coordonne, tel3_coordonne, fax_coordonne, mail_coordonne, 
                      siteweb_coordonne, id_type_coordonne";
            echo $variable;
            $idCoordonne = ReqInsertion($table, $variable, $champs);
    Mon deuxième problème concerne pg_insert_id(). Cela ne fonctionne pas. Seriez vous comment je dois l'utilisé ?

    Merci et bonne journée.

    Ludo

  2. #2
    Membre éprouvé Avatar de FCYPBA
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 745
    Points : 952
    Points
    952
    Par défaut
    Le warning apparait parceque tu tentes d'inserer la chaine vide dans une colone de type entier. Donc forcément, cela ne fonctionne pas.

    Pour éviter ce genre de désagréments, il faut tester la valeur, si c'est un entier, tu le laisses tel quel sinon tu fais ce qui faut ( erreur utilisateur, insertion de la valeur null, valeur par défaut, ...)

    Pour pg_insert_id(), je n'ai pas vu trace de cette fonction dans la doc. Donc cela semble normal que cela ne marche pas
    Pierre
    1. Dans le manuel ( PHP, MySQL,..., rayez la mention inutile), tu te plongeras à deux fois plutôt qu'aucune.
    2. Dans la doc php, tu liras attentivement les sections Chaines de caractères, Tableaux et Système de fichiers
    3. Un code rapide c'est bien, un code maintenable c'est mieux
    ...

    Why was the font tag an orphan ? Because it didn't have a font-family.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 27
    Points : 16
    Points
    16
    Par défaut
    Cela veut dire que je ne peu pas rentrer de valeur vide ?

  4. #4
    Membre éprouvé Avatar de FCYPBA
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 745
    Points : 952
    Points
    952
    Par défaut
    Ce n'est pas un champ texte, donc la seule façon d'insérer une valeur 'vide' dans une colonne de type entier c'est de mettre un NULL dans cette colonne.

    De toute façon il faut que tu testes les valeurs avant insertion pour éviter les soucis ( SQL injection ). A ce moment, si la valeur indiqué est la chaine vide alors que la base attends un entier, tu la change par la chaine 'NULL'
    Pierre
    1. Dans le manuel ( PHP, MySQL,..., rayez la mention inutile), tu te plongeras à deux fois plutôt qu'aucune.
    2. Dans la doc php, tu liras attentivement les sections Chaines de caractères, Tableaux et Système de fichiers
    3. Un code rapide c'est bien, un code maintenable c'est mieux
    ...

    Why was the font tag an orphan ? Because it didn't have a font-family.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 27
    Points : 16
    Points
    16
    Par défaut
    Alors j'ai mis en place le test suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    function TestValeur ($valeur)
    {
     If ($valeur ="")
     {
       $valeur = NULL;
       return $valeur;
     } else 
     {
       return $valeur;
     }
    }
    Mais il me met :

    Warning: pg_query(): Query failed: ERROR: invalid input syntax for integer: ""

    Avec la rquête suivant :

    INSERT INTO schema_gestion_cimetco.contact (num_client_contact, id_personne, id_type_contact, id_statut, date_statut_contact) VALUES ('iuiu-10-2006','49','','','')

    Je comprend bien le message d'erreur, mais moi ce que je veux ces que ces champs soit des fois sans valeur.

    Donc comment puis je faire ?

    Merci

  6. #6
    Membre éclairé
    Avatar de Dia_FR
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    512
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2006
    Messages : 512
    Points : 708
    Points
    708
    Par défaut
    If ($valeur ="") est une affectation

    => If ($valeur == "") est un test


    tu pourrais monter comment tu as appelé la fonction que t'as écrite au moment de la construction de la requête ?

    ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "INSERT INTO schema_gestion_cimetco.contact (num_client_contact, id_personne, id_type_contact, id_statut, date_statut_contact) VALUES ('iuiu-10-2006','49'," . TestValeur($truc) . "," . TestValeur($machin) . ",'')


    si ça marche toujours pas, tu mets une valeur numérique spécifique dans ton champ si l'utilisateur a rien entré, une valeur qui ne peut pas être entrée par l'utiklisateur lui-même

    exemple
    entrez votre age :

    si (age == '')
    age = 9999

    envoyer requête
    Dia [ Page DVP ] [ Site pro ]

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 27
    Points : 16
    Points
    16
    Par défaut
    Honte à moi

    Et dire que ca fais bien plus d'une heure que je suis dessu.

    Merci mille fois

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

Discussions similaires

  1. [Batch] FOR sur une liste qui a des champs vides
    Par un_mec dans le forum Scripts/Batch
    Réponses: 5
    Dernier message: 18/03/2011, 12h04
  2. Réponses: 2
    Dernier message: 02/03/2011, 14h02
  3. Réponses: 3
    Dernier message: 07/05/2010, 14h54
  4. [WD14] Thread qui ajoute des lignes à une table
    Par rndhnqz dans le forum WinDev
    Réponses: 11
    Dernier message: 09/02/2010, 13h48
  5. Richtextbox qui ajoute des lignes vides
    Par Seto dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 19/09/2006, 15h10

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