Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1959 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [Résolu]Tester champs NULL sous access, étrange

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Résolu]Tester champs NULL sous access, étrange

n°1729360
micfont999
Simplement Moi
Posté le 07-05-2008 à 10:25:11  profilanswer
 

Bonjour à tous et à toutes :)
 
Voila je rencontre un petit soucis que je n'arrive pas à résoudre.
J'ai une base de données comportant certains champs null ..
 
Lorsque le type de champs est en Date/Heure, Integer et autres, pas de soucis j'arrive à tester correctement le fait qu'ils soit null ou pas.  
 
En revanche, lorsque le champs est en Texte, je n'arrive absolument pas à tester s'il sont null alors qu'avec une requête en WHERE le champs IS NULL ça fonctionne très bien.
 
Je vous explique.  
Je récupère a valeur du champs dans un input, que je publie après en méthode POST.  
C'est au moment de la récupération du $_POST que ça déconne. Pour une date ça fonctionne, integer aussi, et tout le reste en fait, mais pas pour un type Texte.  
 
A partir de cette récupération je génère une requete d'update, et il me faut impérativement dans mon where des IS NULL. C'est pourquoi je test si mon post l'est ou pas.  
 
Je vous montre  

Code :
  1. else
  2.     {
  3.      if($numeroName == 0)
  4.      {
  5.       $clauseWhere .= " ".$v;
  6.      }// on regarde si on est à la première instruction pas de AND
  7.      else
  8.      {
  9.       $clauseWhere .= " AND ".$v;
  10.      }
  11.      // on regarde si on est null
  12.      if(trim($_POST["anc".$v]) == "" || trim($_POST["anc".$v]) == " " || $_POST["anc".$v] == " " || $_POST["anc".$v] == "" || trim($_POST["anc".$v]) === NULL || is_null(trim($_POST["anc".$v])) || is_null($_POST["anc".$v]) || empty($_POST["anc".$v]))
  13.      {
  14.       $clauseWhere .= ' IS NULL ';
  15.      }
  16.      else
  17.      {
  18.       // ---------------------------------------------------------------------------------------
  19.       // --------------------------------------------------------------------------------------- si on à une date
  20.       if($typeChamp == "DATE" || $typeChamp == "TIME" || $typeChamp == "DATETIME" )
  21.       {
  22.        $clauseWhere .= "=cvdate('".addslashes(htmlentities($_POST["anc".$v]))."')";
  23.       }
  24.       else
  25.       {
  26.        $clauseWhere .= "='".addslashes(htmlentities($_POST["anc".$v]))."'";
  27.       }
  28.      }
  29.     }
  30.    }
  31.    // on incrémente pour dire qu'on est plus à la première instruction
  32.    $numeroName ++;
  33.   } // fin du while
  34.   echo "<br><br><br><br>".$clauseWhere."<br><br><br><br>";
  35.   $clauseWhere = str_replace("=''"," IS NULL ",$clauseWhere);
  36.   $clauseWhere = str_replace("=' '"," IS NULL ",$clauseWhere);
  37.   $clauseWhere = str_replace(NULL," IS NULL ",$clauseWhere);
  38.   $clauseWhere = str_replace("NULL"," IS NULL ",$clauseWhere);
  39.   echo "<br><br><br><br>".$clauseWhere."<br><br><br><br>";


 
et voici ce qu'il m'affiche
 

Code :
  1. WHERE ABO_ID=18 AND CLIENTDM_ID=' ' AND CLIENTDAT_ID=' ' AND CLIENTPATCH_ID=' ' AND ABO_IDENT='AMUE' AND ABO_PW='XX.?.XX' AND ABO_NOM='AMUE' AND ABO_PNOM='.' AND ABO_SOC='AMUE' AND ABO_MAIL='.' AND ABO_NBCX=643 AND ABO_DATCONN=cvdate('2008-03-27 17:06:15') AND ABO_HABCONSULT='Z' AND ABO_HABMAJ='Z' AND ABO_IDEXT='091' AND ABO_GENERIQUE=' ' AND ABO_PW_AT=' ' AND ABO_PW_ADMIN='NCDQ'
  2. WHERE ABO_ID=18 AND CLIENTDM_ID=' ' AND CLIENTDAT_ID=' ' AND CLIENTPATCH_ID=' ' AND ABO_IDENT='AMUE' AND ABO_PW='XX.?.XX' AND ABO_NOM='AMUE' AND ABO_PNOM='.' AND ABO_SOC='AMUE' AND ABO_MAIL='.' AND ABO_NBCX=643 AND ABO_DATCONN=cvdate('2008-03-27 17:06:15') AND ABO_HABCONSULT='Z' AND ABO_HABMAJ='Z' AND ABO_IDEXT='091' AND ABO_GENERIQUE=' ' AND ABO_PW_AT=' ' AND ABO_PW_ADMIN='NCDQ'


 
Vous voyez il ne prend pas en compte le fait d'avoir les ='', il me prend pas en compte le fait d'être null, enfin c'est la misère quoi.
Normalement je devrais obtenir
 
 

Code :
  1. WHERE ABO_ID=18 AND CLIENTDM_ID IS NULL AND CLIENTDAT_ID IS NULL AND CLIENTPATCH_ID IS NULL AND ABO_IDENT='AMUE' AND ABO_PW='XX.?.XX' AND ABO_NOM='AMUE' AND ABO_PNOM='.' AND ABO_SOC='AMUE' AND ABO_MAIL='.' AND ABO_NBCX=643 AND ABO_DATCONN=cvdate('2008-03-27 17:06:15') AND ABO_HABCONSULT='Z' AND ABO_HABMAJ='Z' AND ABO_IDEXT='091' AND ABO_GENERIQUE IS NULL AND ABO_PW_AT IS NULL AND ABO_PW_ADMIN='NCDQ'


 
Voila
Est ce que quelqu'un sais pourquoi il me fait ça.. Je ne comprend pas, vraiment j'ai fais tous les tests possible et inimaginable et la je pige pas.
Si vous pouvez m'aider ça serai gentil. Je pense que l'espace entre les ' ' dois avoir une valeur bien spécifique, mais je sais pas laquelle.  
 
En vous remerciant d'avance, j'espère que vous saurez m'aider ^^  
Cordialement
 [:magnasuprema]
 
 
EDIT : Bon bah ne cherchez pas plus, je ne sais pas pourquoi mais le NULL était automatiquement transformé en &nbsp; et donc je ne voyais absolument rien à l'interprétation ... :)  :fou:  
Si ça arrive un jour à quelqu'un il saura quoi faire ^^


Message édité par micfont999 le 07-05-2008 à 12:59:41

---------------
> http://graphicriver.net/user/micfo [...] micfont999  
mood
Publicité
Posté le 07-05-2008 à 10:25:11  profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [Résolu]Tester champs NULL sous access, étrange

 

Sujets relatifs
[Résolu] XSLT 2.0 dans PHP avec Saxon[Résolu] Formulaire Pages Jaunes/Blanches
php -->parcourir l'arborescence du système[résolu]Acces au helpers dans ERB (resolu)
[access] requête de suppression dans un bouton de commande ?[résolu] Problème avec le tuto wxWidgets/SDL
[résolu] frames / elements dans un cadreExécuter du code écrit dans une table Access
Optimisation Flash pour affichage HTML [Résolu][Résolu]]Recuperer plusieurs varibles dans un foreach
Plus de sujets relatifs à : [Résolu]Tester champs NULL sous access, étrange


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR