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

EDI, CMS, Outils, Scripts et API PHP Discussion :

Colonne NULL


Sujet :

EDI, CMS, Outils, Scripts et API PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Avril 2013
    Messages : 13
    Par défaut Colonne NULL
    Bonjour,
    Le site de mon FAI fonctionne sous PHP 5.2.10 et MySQL 5.0.45.
    Pour un champ non obligatoire j'ai entré les paramètres : NULL oui et DEFALT : NULL.

    Que ce soit en MySQL ou en MySQLi et en utilisant la commande : "INSERT INTO table() VALUES() le champ n'affiche rien quand le champ du formulaire est vide et n'affiche surtout pas "NULL" . Ce qui perturbe les requêtes contenant la condition "IS NOT NULL"

    Que faire ?
    Merci d'avance

  2. #2
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 323
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 323
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    function traitementPost($cle){
     $cle = $_POST[$cle]; // ...
     return "'".mysqli_real_escape_string(trim($cle))."'";
    }
    $valeur = empty($_POST['cle']) ? 'NULL' : traitementPost('cle');
    ensuite tout depend de la facon de construire la requete
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'INSERT  values( ' . $valeur . ' )';

  3. #3
    Membre averti
    Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Avril 2013
    Messages : 13
    Par défaut
    Merci à papajoker pour la solution proposée

    MAIS :

    Avec le script proposé j'obtiens bien NULL (au sens VIDE) dans le champ de la table mais un champ vide quand je propose une valeur pour la variable.

    Il m'a semblé qu'il pouvait y avoir une confusion dans le script entre scle et 'clé'.
    J'obtiens le même résultat.

    Où est l'erreur ?
    ----------------------------------------------------------------
    Cidessous le sript ainsi que la table utilisée :

    Les parties objet d'un doute ont été commentées

    Code : 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
    <?php
    $serveur = "localhost";
    $base = "GACR";
    $utilisateur = "root";
    $mdp = "";
    $connexion = @mysqli_connect($serveur,$utilisateur,$mdp ,$base );
    ?>
     
    <?php
     function traitementPost($cle){
     $cle = /* $_POST[$cle]; */ $_POST['cle']; // ...
     return "'".@mysqli_real_escape_string(trim/* ('cle') */ ($cle))."'";
    }
     
    $ville = empty($_POST['ville']) ? 'NULL' : traitementPost($ville); 
    ?>
     
    <?php 
    $commande = "INSERT INTO essai ( ville ) VALUES (".$ville.")";
     
    $resultat =  mysqli_query($connexion,$commande);
    ?>
    ---- ------------------------------------------------
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    CREATE TABLE IF NOT EXISTS `essai` (
     
    `id` int(2) NOT NULL AUTO_INCREMENT,
     
    `ville` varchar(60) COLLATE latin1_general_ci DEFAULT NULL,
     
     PRIMARY KEY (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=1 ;

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     function traitementPost($cle){
       return  mysqli_real_escape_string(trim($_POST[$cle]));
    }
     
    $ville = empty($_POST['ville']) ? 'NULL' : traitementPost('ville');
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

Discussions similaires

  1. ADO et les colonnes NULL
    Par qi130 dans le forum Bases de données
    Réponses: 2
    Dernier message: 01/01/2008, 14h36
  2. composite-id et colonnes nulles
    Par mitje dans le forum Hibernate
    Réponses: 15
    Dernier message: 16/07/2007, 14h34
  3. Vérifier si colonne nulle dans résultat requete
    Par ouiskie dans le forum Requêtes
    Réponses: 1
    Dernier message: 04/03/2007, 07h45
  4. [2.0] Colonne nulle d'une table - Ajout de DataRow via BindingNavigator
    Par sundjata dans le forum Accès aux données
    Réponses: 5
    Dernier message: 16/11/2006, 03h23
  5. Comment faire un count de colonnes null
    Par claralavraie dans le forum Langage SQL
    Réponses: 4
    Dernier message: 25/01/2006, 14h13

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