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 :

Obtenir "NULL" dans la DB [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre habitué Avatar de wdionysos
    Profil pro
    Consultant informatique
    Inscrit en
    Novembre 2003
    Messages
    222
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 222
    Points : 189
    Points
    189
    Par défaut Obtenir "NULL" dans la DB
    salut a tous !


    dans la fonction Insert de mon DAO je verifie chaque champs avant de construire ma requete, notament si la valeur a inserer est du bon type et si elle n'est pas nulle, si elle est nulle je voudrais la mettre a NULL pour que Mysql le reconaisse comme telle, mon code pour une propriété est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if (is_string($exp->getTypeContratExp()) || (!is_null($exp->getTypeContratExp()))){
     
    		}else{
    			settype(($exp->getTypeContratExp()), "null");
    		}
    mais mon probleme avec le settype c'est que mon champ mysql est vide est pas "NULL"

    comment doisje faire pour parvenir a mes fins

    WD
    Je ne voudrais pas faire partie d'un club qui voudrait m'avoir moi pour membre.... [Grouchot Marx]
    Mais en tant que Marxiste, je playdoye pour le travail communautaire. C'est un paradoxe olympien ! Comprend qui peut !!!

  2. #2
    Membre éprouvé Avatar de macbook
    Inscrit en
    Février 2006
    Messages
    838
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 838
    Points : 1 009
    Points
    1 009
    Par défaut
    C'est l'eternel problème entre la valeur vide et la valeur NULL... Si tu affèctes à $exp->getTypeContratExp() la valeur vide plutôt que le pseudo type "null", et que la valeur par défaut du champs de ta table est NULL, alors peut-être que tu obtiendras ce que tu cherches ?
    Consultant idéaliste.

  3. #3
    Membre habitué Avatar de wdionysos
    Profil pro
    Consultant informatique
    Inscrit en
    Novembre 2003
    Messages
    222
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 222
    Points : 189
    Points
    189
    Par défaut
    ben j'ai des soupcons sur ma requete car quand il s'agit de string je met des simple quote dans ma requete en dure et je crois que ca joue et qu'il considere ca comme ''.

    ma requete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $requete  = "INSERT INTO experience ";
    		$requete .= "VALUES ('".$exp->getIdExp()."','".$exp->getIdCat()."','".$exp->getIdSoc()."','".$exp->getTitreExp()."','".$exp->getSousTitreExp()."','".$exp->getDateDebExp()."','";
    		$requete .= $exp->getDateFinExp()."','".$exp->getTypeContratExp()."','".$exp->getResumeExp()."','".$exp->getDetailExp()."');";
     
    		echo "<br /><br />".$requete;
    je creer mon opbjet comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $exp = new experience(null,3,1,null,null,$deb,$fin,null,null,null);
    ce qui me donne :
    INSERT INTO experience VALUES ('','3','1','','','1143756000','1143842400','','','');ajout de experience
    ok
    comment faire, dois je plutot faire une fonction externe qui met la chaine entre cote ?

    WD

    PS : le contrepoint, en java j'aurai ecrit cela comme ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if (info.getIdcountry() != null) {
    				ps.setObject(1, info.getIdcountry());
    			} else {
    				ps.setNull(1, Types.NULL);
    			}
    j'aurai bien voulu avoir qqch d'equivalent meme si dans le code java il s'agit d'un prepared statement et que je travaille sans framework en php donc j'ai pas acces a ca... uiune idée pour faire un code propre et normalisé ?
    Je ne voudrais pas faire partie d'un club qui voudrait m'avoir moi pour membre.... [Grouchot Marx]
    Mais en tant que Marxiste, je playdoye pour le travail communautaire. C'est un paradoxe olympien ! Comprend qui peut !!!

  4. #4
    Membre éprouvé Avatar de macbook
    Inscrit en
    Février 2006
    Messages
    838
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 838
    Points : 1 009
    Points
    1 009
    Par défaut
    Cela dépends de la structure de ta table. Si la valeur par défaut n'est pas définie tu n'obtiendra pas ce que tu cherches.

    Par contre si dans ta table tu as définis une valeur par défaut à NULL alos ce sera ok.

    Question : Quelle importance cela a pour toi d'avoir une valeur NULL au lieu d'une valeur *vide* ?
    Consultant idéaliste.

  5. #5
    Membre habitué Avatar de wdionysos
    Profil pro
    Consultant informatique
    Inscrit en
    Novembre 2003
    Messages
    222
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 222
    Points : 189
    Points
    189
    Par défaut
    note la remarque que j'ai editer dans mon precedent message, on s'est croisé

    ben pour ta remarque, une chaine peut etre vide mais si elle est NULL ca veut dire que cette propriété n'est pas activé ou disponible pour cet objet

    WD

    mes champs mysql sont bien a null par defaut !
    Je ne voudrais pas faire partie d'un club qui voudrait m'avoir moi pour membre.... [Grouchot Marx]
    Mais en tant que Marxiste, je playdoye pour le travail communautaire. C'est un paradoxe olympien ! Comprend qui peut !!!

  6. #6
    Membre habitué Avatar de wdionysos
    Profil pro
    Consultant informatique
    Inscrit en
    Novembre 2003
    Messages
    222
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 222
    Points : 189
    Points
    189
    Par défaut
    oui je confirme car si je ne met pas de quote simple dans ma requete en dure alors j'ai ce message d'erreur car il trouve ,, dans la requete :
    INSERT INTO experience VALUES ('','3','1',,'','1143756000','1143842400','','','');requete impossibleYou have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''','1143756000','1143842400','','','')' at line 1
    ce qui est normal mais je voudrais vraiment qu'il ecrive NULL dans mysql

    WD
    Je ne voudrais pas faire partie d'un club qui voudrait m'avoir moi pour membre.... [Grouchot Marx]
    Mais en tant que Marxiste, je playdoye pour le travail communautaire. C'est un paradoxe olympien ! Comprend qui peut !!!

  7. #7
    Membre éprouvé
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Points : 1 164
    Points
    1 164
    Par défaut
    tu as essayé le mot clef NULL en mysql ?

    http://dev.mysql.com/doc/refman/4.1/en/working-with-null.html

  8. #8
    Membre habitué Avatar de wdionysos
    Profil pro
    Consultant informatique
    Inscrit en
    Novembre 2003
    Messages
    222
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 222
    Points : 189
    Points
    189
    Par défaut
    salut epox,

    je viens de lire ton lien, interressant mais j'ai jamais ecrit de telle requete dans mysql et je saisie pas trop comment my prendre avec IFNULL dans le cas de ma requete.

    parce qu'en fait je devrai d'abord enlever mes simples cotes hardcodée dans ma requete sql et gerér l'erreur. dommage qu'il existe pas un types.NULL en php (comme en java)

    comment tu ferai toi ?

    WD
    Je ne voudrais pas faire partie d'un club qui voudrait m'avoir moi pour membre.... [Grouchot Marx]
    Mais en tant que Marxiste, je playdoye pour le travail communautaire. C'est un paradoxe olympien ! Comprend qui peut !!!

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    882
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 882
    Points : 691
    Points
    691
    Par défaut
    si il existe sinon is_null n'existerai pas

  10. #10
    Membre habitué Avatar de wdionysos
    Profil pro
    Consultant informatique
    Inscrit en
    Novembre 2003
    Messages
    222
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 222
    Points : 189
    Points
    189
    Par défaut
    ben comme dit macbook : " c'est pas faux";

    WD

    je voulais dire par là que type.NULL comme je l'ai écrit plus haut dans le bout de code en java affecte automatiquement le bon "null" en fonction du type de la variable en php si je veux pas d'erreur je suis obligé d'hardcode des simple cote, ce qui fait que mon null devient chaine vide, y'a peut etre moyen de travailler plus intelligement que moi, c'est pour ca que je post pour savoir comment vous feriez, l'ideal serait de pouvoir avoir un prepared statement mais je galere un peu avec le framework

    wd
    Je ne voudrais pas faire partie d'un club qui voudrait m'avoir moi pour membre.... [Grouchot Marx]
    Mais en tant que Marxiste, je playdoye pour le travail communautaire. C'est un paradoxe olympien ! Comprend qui peut !!!

  11. #11
    Membre éprouvé
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Points : 1 164
    Points
    1 164
    Par défaut
    ben je comprends pas, pourquoi ifnull ? regarde ce lien ci : http://dev.mysql.com/doc/refman/4.1/en/problems-with-null.html
    particulierement les deux premieres requetes

    Sinon en php5 en tout cas, la valeur null existe, comme l'a judisieucement remarquer jeff_!.

    Je ne me m'aventurerai pas à dire que c'est un type à part entière pour ma part, par manque de connaissance.

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

Discussions similaires

  1. [vbnet 1.1]Inserer deux simple quote sans texte dans une db
    Par ChristopheOce dans le forum Windows Forms
    Réponses: 8
    Dernier message: 15/03/2007, 08h51

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