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 :

insertion valeur null dans base de données [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Femme Profil pro
    Architecte de base de données
    Inscrit en
    Septembre 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Septembre 2014
    Messages : 12
    Par défaut insertion valeur null dans base de données
    Bonjour,

    J'ai créé un formulaire qui prend 2 seuils, une durée et des commentaires.
    Dans la base de données, les types sont les suivants: les 2 seuils sont en FLOAT, la durée en INT et les commentaires en TEXT.


    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    if(isset($_POST['confirmation'])){
    //seuil_min
        if(isset($_POST['seuil_min'])){$seuil_min=safe($_POST['seuil_min']);}
        else{$seuil_min ="NULL";}
    //seuil_max
        if(isset($_POST['seuil_max'])){$seuil_max=safe($_POST['seuil_max']);}
        else{$seuil_max ="NULL";}
    //duree
        if(isset($_POST['duree'])){$duree=($_POST['duree']);}
        else{$duree ="NULL";}
    //commentaire
        if($_POST['commentaire']!=""){$commentaire=safe($_POST['commentaire']);}
        else{$commentaire ="NULL";}
     
        $numfiche = $_POST['current_fiche'];
        //echo $numfiche ;
        /* On teste si une réponse existe déjà */
        $affich = "SELECT * FROM uni_reponses
            WHERE iduser='".$_SESSION['iduser']."' and idcritere=$numfiche";
        $result = mysql_query($affich) or die("erreur sql");
     
        // Si pas de réponse on insert
        if(mysql_numrows($result)==0){
        $query="INSERT INTO `uni_reponses` (`seuil_min`, `seuil_max` ,`duree`, `commentaire`, `idcritere`, `iduser`, `date`,`heure`) 
        VALUES ( '$seuil_min', '$seuil_max' ,'$duree','$commentaire', $numfiche,".$_SESSION['iduser'].", curdate() , current_time())";
        mysql_query($query,$connection);
        // sinon update
        }else{
            $query="UPDATE `uni_reponses` SET `seuil_min`=$seuil_min , `seuil_max`= $seuil_max , `duree`= $duree ,`commentaire`='$commentaire', `date`= curdate(), `heure`=current_time() 
            WHERE iduser='".$_SESSION['iduser']."' and idcritere=$numfiche";
            mysql_query($query,$connection);
        }
    //=======================================================================//
    // Vérification si une réponse existe déjà pour la fiche demandée  
    //=======================================================================//
     
    $affich = "SELECT * FROM uni_reponses
        WHERE iduser='".$_SESSION['iduser']."' and idcritere=$numfiche";
        $result = mysql_query($affich) or die("pas de chance");
     
    $prec_validite = '';
    $prec_faisabilite = '';
    $prec_suffisant = '';
    $prec_seuilmin= '';
    $prec_seuilmax= '';
    $prec_duree = '';    
    $prec_coms = '';    
    // On les actives si des réponses existent déjà
    if(mysql_numrows($result)!=0){
        $tab = mysql_fetch_array($result);
        $prec_validite = $tab[0];
        $prec_faisabilite = $tab[1];
        $prec_suffisant= $tab[2];
        $prec_seuilmin = $tab[3];
        $prec_seuilmax = $tab[4];
        $prec_duree = $tab[5];    
        $prec_coms = $tab[6];
    }
     
    /* On défini la valeur du commentaire dès maintenant */
    if($prec_seuilmin!= '' AND $prec_seuilmin!= 'NULL'){$valeur_comsmin=$prec_seuilmin;}else{$valeur_comsmin="";}
    if($prec_seuilmax!= '' AND $prec_seuilmax!= 'NULL'){$valeur_comsmax=$prec_seuilmax;}else{$valeur_comsmax="";}
    if($prec_duree!= '' AND $prec_duree!= 'NULL'){$valeur_duree=$prec_duree;}else{$valeur_duree="";}
    if($prec_coms!= '' AND $prec_coms!= 'NULL'){$valeur_coms=$prec_coms;}else{$valeur_coms="";}
     
    <tr><td> <div class="centrage"> Inférieure ou égale à  <TEXTAREA cols ="12" rows="1" name="seuil_min"><?php echo $valeur_comsmin;?> </TEXTAREA></div></td></tr>
     
        <tr><td> <div class="centrage">Supérieure ou égale à  <TEXTAREA cols ="12" rows="1" name="seuil_max"><?php echo $valeur_comsmax;?></TEXTAREA> </td></tr></table>
    Lorsque je rentre une donnée dans mon formulaire tout se passe bien. Mais si je souhaite la modifier en supprimant la valeur mise précédemment alors il me met l'erreur suivante:
    UPDATE `uni_reponses` SET `seuil_min`= , `seuil_max`= , `duree`= NULL ,`commentaire`='NULL', `date`= curdate(), `heure`=current_time() WHERE iduser='259' and idcritere=31

    Je souhaiterais donc que la valeur NULL se mette dans la base si seuil_max="".

    Surtout que mon code marche très bien pour les commentaires

    Merci d'avance pour votre aide

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2015
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

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

    Informations forums :
    Inscription : Juin 2015
    Messages : 98
    Par défaut
    Bonjour,

    Tu indiques la requête qui est mis en cause mais pas le code d'erreur.
    Quel est le message d'erreur complet ?

  3. #3
    Membre averti
    Femme Profil pro
    Architecte de base de données
    Inscrit en
    Septembre 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Septembre 2014
    Messages : 12
    Par défaut
    C'était l'update qui ne fonctionnait pas. J'ai donc mis directement la requête. Que faudrait-il que je mette dans le die pour voir l'erreur déjà?
    Mais je pense que l'erreur sera que le seuil_min n'est pas trouvé.

  4. #4
    Membre expérimenté
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2015
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

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

    Informations forums :
    Inscription : Juin 2015
    Messages : 98
    Par défaut
    ta variable $seuil_min est bien initialisé en début de script.
    Tu dois avoir des champs de ta bdd dont le null est interdit.

    Tu peux rajouter un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo mysql_errno($connection) . ": " . mysql_error($connection);
    avant la ligne 33.

    Après il faut mieux utiliser une connexion PDO car mysql_query, mysql_errno, mysql_error sont obsolètes depuis PHP 5.5.0

  5. #5
    Membre averti
    Femme Profil pro
    Architecte de base de données
    Inscrit en
    Septembre 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Septembre 2014
    Messages : 12
    Par défaut
    Voici l'erreur que j'obtiens

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' `seuil_max`= 0 , `duree`= NULL ,`commentaire`='NULL', `date`= curdate(), `heure' at line 1

  6. #6
    Membre expérimenté
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2015
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

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

    Informations forums :
    Inscription : Juin 2015
    Messages : 98
    Par défaut
    Peux tu rajouter un
    après la ligne 30 et poster ce qui s'affiche

  7. #7
    Membre averti
    Femme Profil pro
    Architecte de base de données
    Inscrit en
    Septembre 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Septembre 2014
    Messages : 12
    Par défaut
    Voila l'affichage:

    UPDATE `uni_reponses` SET `seuil_min`= , `seuil_max`= , `duree`= NULL ,`commentaire`='NULL', `date`= curdate(), `heure`=current_time() WHERE iduser='259' and idcritere=31

  8. #8
    Membre expérimenté
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2015
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

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

    Informations forums :
    Inscription : Juin 2015
    Messages : 98
    Par défaut
    on revient a ton message initial
    Le problème vient du fait que tes variables POST sont toujours définies même dans le cas de l'update.
    ll faut que tu rajoutes sur tes variables POST du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if(isset($_POST['seuil_min']) AND $_POST['seuil_min'] != ''){$seuil_min=safe($_POST['seuil_min']);}

  9. #9
    Membre averti
    Femme Profil pro
    Architecte de base de données
    Inscrit en
    Septembre 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Septembre 2014
    Messages : 12
    Par défaut
    En effet, c'était cela. Merci.

    J'aurais une seconde requête à vous demander.
    Je valide le formulaire du critère sans mettre aucune valeur. Et lorsque je reviens sur le critère, les cases sont remplies à 0. Comment je peux faire pour éviter ça?

  10. #10
    Membre expérimenté
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2015
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

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

    Informations forums :
    Inscription : Juin 2015
    Messages : 98
    Par défaut
    Quelles sont les valeurs de la BDD une fois que tu as validé le formulaire à vide ? 0 ou null ?
    Si c'est pas null, vérifie que tes champs MySQL acceptent le null

  11. #11
    Membre averti
    Femme Profil pro
    Architecte de base de données
    Inscrit en
    Septembre 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Septembre 2014
    Messages : 12
    Par défaut
    J'ai mis "NULL" comme valeur par défaut et cela a bien marché.

    Par contre, j'ai quand même rencontré une exception, qui est la suivante:

    Je complète seuil_min et seuil_max
    Je valide le questionnaire

    Je retourne sur la page, je supprime seuil_min, je valide
    Je retourner sur la page, le seuil_min est supprimé. Je supprime alors seuil_max.
    Je retourne sur la page, le seuil_max ne s'est pas supprimé.

    Si en revanche, je les supprime en meme temps et je valide. La suppression s'effectue bien.

    A quoi cela est-il du?

  12. #12
    Membre expérimenté
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2015
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

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

    Informations forums :
    Inscription : Juin 2015
    Messages : 98
    Par défaut
    as tu fait cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(isset($_POST['seuil_min']) AND $_POST['seuil_min'] != ''){$seuil_min=safe($_POST['seuil_min']);}
    pour la valeur max également ?

  13. #13
    Membre averti
    Femme Profil pro
    Architecte de base de données
    Inscrit en
    Septembre 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Septembre 2014
    Messages : 12
    Par défaut
    Oui oui également

  14. #14
    Membre expérimenté
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2015
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

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

    Informations forums :
    Inscription : Juin 2015
    Messages : 98
    Par défaut
    et commençant par supprimer le seuil max (au lieu de commencer par le seuil min) ?

  15. #15
    Membre averti
    Femme Profil pro
    Architecte de base de données
    Inscrit en
    Septembre 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Septembre 2014
    Messages : 12
    Par défaut
    Si je fais l'inverse dans ce cas là ça marche

  16. #16
    Membre expérimenté
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2015
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

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

    Informations forums :
    Inscription : Juin 2015
    Messages : 98
    Par défaut
    Dans le cas de figure ou cela ne fonctionne pas :
    1) Edit ta variable $_POST. Exemple print_r($_POST);
    2) Edit $query

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 16/07/2013, 17h00
  2. Insertion de date dans base de données
    Par amine2208 dans le forum Langage
    Réponses: 1
    Dernier message: 06/04/2013, 19h57
  3. [MySQL] Insertion lien image dans base de données
    Par Addict` dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 23/02/2009, 13h40
  4. [E-03] insertion de lignes dans base de données
    Par alainmante dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 29/10/2008, 18h01
  5. Réponses: 9
    Dernier message: 28/08/2007, 09h18

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