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

Langage PHP Discussion :

[Dates] Conversion d'une chaîne de caractères en numérique


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Inscrit en
    Avril 2005
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 1
    Points : 2
    Points
    2
    Par défaut [Dates] Conversion d'une chaîne de caractères en numérique
    Bonjour à tous, je voudrais comparer un champ texte à une valeur numérique mais je n'y parvient pas.

    En fait fait je souhaite comparer un champ texte qui n'est autre qu'une année (2004,2005) à l'année du système. J'ai donc essayé les fonctions de conversion intval et strval mais pas possible.

    Voici un bout de mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
                // Liste des réceptions sur commandes antérieures
                $date = date("Y");
                $RstListeRecept = mssql_query("Select *
                From tblrecept,tblcde,tblcdc,tblcompte,tblservice
                Where tblrecept.eidcde=tblcde.idcde
                And tblrecept.eidcompte=tblcompte.idcompte
                And tblrecept.eidcdc=tblcdc.idcdc
                And tblcdc.eidservice=tblservice.idservice
                And anneecderecept <= strval('".$date."')
                order by numcde,numcdc");
    Mon problème concerne l'avant dernière ligne. Si qqn a une idée.

    Merci d'avance

  2. #2
    Membre éclairé
    Avatar de genova
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 487
    Points : 790
    Points
    790
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (2005 == intval('2005'))
    te renverra TRUE normalement ...

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 60
    Points : 81
    Points
    81
    Par défaut Conversion inutile
    Hum hum hum...

    C'est quoi l'erreur ? Je pense que ton serveur SQL te dis qu'il ne connaît pas strval. Enlève-le, tu n'as pas besoin de conversion (MSSQL le fait).

    Si sans strval, ça ne marche toujours pas, essaie d'eenlever les quotes (') autour de $date, ça peut le gêner pour la conversion.

    http://fr2.php.net/strval

    strval est une fonction PHP, et tu la mets dans une requête SQL.
    Ca ne marchera pas,
    sauf si PHP parse la chaîne et exécute strval, mais il ne le fera pas (parce que tu as bien pris soin de séparer $date du reste de la chaîne), ou sauf si strval existe en SQL (mais ça aurait peut de sens).

    Tu n'as pas besoin de convertir. PHP ne connaît pas les types de données, il convertire automatiquement $date en chaîne de caractère avant d'envoyer la requête à MSSQL.
    MSSQL (s'il fait vraiment du SQL) ne prendra QUE du texte : une requête SQL, c'est du texte. Il se chargera de l'interpréter.
    Si la colonne année est de type numérique (entier par exemple), il convertira autolmatiquement $date en entier.


    Bref ( ) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
                $date = date("Y"); //strval(date"Y") à la limite
                $RstListeRecept = mssql_query("Select *
                From tblrecept,tblcde,tblcdc,tblcompte,tblservice
                Where tblrecept.eidcde=tblcde.idcde
                And tblrecept.eidcompte=tblcompte.idcompte
                And tblrecept.eidcdc=tblcdc.idcdc
                And tblcdc.eidservice=tblservice.idservice
                And anneecderecept <= ".$date."
                order by numcde,numcdc");
    Voilà, j'espère que ça marchera !
    Sinon, n'oublie pas de donner le message d'erreur (et éventuellement, le typ du champ anneecderecept), merci !

    --
    ROm_1

  4. #4
    Membre chevronné
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Points : 1 839
    Points
    1 839
    Par défaut
    et pourquoi ne pas utiliser la fonction DATE de mysql ?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ...
    AND anneecderecept <= DATE_FORMAT(CURDATE(),'%Y')
    ...

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 60
    Points : 81
    Points
    81
    Par défaut
    +1 !!
    ska_root, ta solution est DE LOIN la meilleure.
    Je suis cassé, là.

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

Discussions similaires

  1. Conversion d'une chaîne de caractère (UTF-8)
    Par aristide13 dans le forum Android
    Réponses: 2
    Dernier message: 28/05/2014, 01h50
  2. Réponses: 1
    Dernier message: 01/04/2014, 16h42
  3. Conversion d'une chaîne de caractères en quint64
    Par dida_plt dans le forum Débuter
    Réponses: 6
    Dernier message: 14/03/2012, 22h33
  4. [Dates] Exploitation d'une chaîne de caractères
    Par javaboy dans le forum Langage
    Réponses: 5
    Dernier message: 10/04/2007, 15h48

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