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 :

correction d'une requete


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Inscrit en
    Septembre 2008
    Messages
    123
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 123
    Par défaut correction d'une requete
    Bonjour,

    Merci de me corriger cette requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $sql = mysql_query('select sum(montant) as total from facture where  code_client ="1"
     and '.date(.'Y','date_facture'.).'='.date("Y".time()).'');
    je veux calculer le cumul des montant de facture seulement pour l'année courante.
    j'ai un problème de concatenation je ne sais pas comment faire.

    Merci pour votre aide

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = mysql_query('SELECT SUM(montant) AS total FROM facture WHERE code_client = "1" AND YEAR(date_facture) = YEAR(CURRENT_DATE)');

  3. #3
    Membre confirmé
    Inscrit en
    Septembre 2008
    Messages
    123
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 123
    Par défaut
    Citation Envoyé par julp Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = mysql_query('SELECT SUM(montant) AS total FROM facture WHERE code_client = "1" AND YEAR(date_facture) = YEAR(CURRENT_DATE)');
    Bonjour,

    Merci pour votre réponse mais ça donne cette erreur:

    Fatal error: Call to undefined function YEAR().......

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Une erreur PHP quand c'est MySQL qui doit traiter ses propres fonctions ? Vous êtes sûrs de bien avoir recopié le code tel quel ?

  5. #5
    Membre confirmé
    Inscrit en
    Septembre 2008
    Messages
    123
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 123
    Par défaut
    Citation Envoyé par julp Voir le message
    Une erreur PHP quand c'est MySQL qui doit traiter ses propres fonctions ? Vous êtes sûrs de bien avoir recopié le code tel quel ?
    oui je l'est rcopié tel qu'il est et j'ai meme cherché la fonction YEAR(CURRENT_DATE) dans le manuel sur www.php.net mais je l'ai pas trouvé.

  6. #6
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    C'est une fonction MySQL pas PHP.

    Par contre, à moins d'un problème de syntaxe (PHP), je ne comprends pas comment PHP en arrive à chercher une fonction à lui qui s'appelle year.

  7. #7
    Membre confirmé
    Inscrit en
    Septembre 2008
    Messages
    123
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 123
    Par défaut
    Citation Envoyé par julp Voir le message
    C'est une fonction MySQL pas PHP.

    Par contre, à moins d'un problème de syntaxe (PHP), je ne comprends pas comment PHP en arrive à chercher une fonction à lui qui s'appelle year.
    Oui vous avez raison mais malheureusement tous les fonctions montrées dans le lien que vous m'avez donné ne fonctionnent pas et le même erreur s'affiche

  8. #8
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Pour quel code ? (complet)

    Quelle erreur ? (en intégralité)

  9. #9
    Membre confirmé
    Inscrit en
    Septembre 2008
    Messages
    123
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 123
    Par défaut
    Citation Envoyé par julp Voir le message
    Pour quel code ? (complet)

    Quelle erreur ? (en intégralité)
    Pardon,j'ai pas compris exactement votre question mais je parle des exemples donnés dans le lien http://dev.mysql.com/doc/refman/5.0/...functions.html
    par exemple DATEDIFF()...
    P.S. :je travaille pas par la POO.

  10. #10
    Membre confirmé
    Inscrit en
    Septembre 2008
    Messages
    123
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 123
    Par défaut
    Citation Envoyé par saramery Voir le message
    Pardon,j'ai pas compris exactement votre question mais je parle des exemples donnés dans le lien http://dev.mysql.com/doc/refman/5.0/...functions.html
    par exemple DATEDIFF()...
    P.S. :je travaille pas par la POO.
    l'erreur c'est :Fatal error: Call to undefined function DATEDIFF() in....

  11. #11
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    C'est quoi votre code PHP ?

    Parce que toutes les fonctions MySQL (cf lien plus haut) ne fonctionnent bien évidemment pas en PHP : elles ne sont valables que lors de/dans vos requêtes.

  12. #12
    Membre confirmé
    Inscrit en
    Septembre 2008
    Messages
    123
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 123
    Par défaut
    Citation Envoyé par julp Voir le message
    C'est quoi votre code PHP ?

    Parce que toutes les fonctions MySQL (cf lien plus haut) ne fonctionnent bien évidemment pas en PHP : elles ne sont valables que lors de/dans vos requêtes.
    par exemple :
    echo DATEDIFF('1997-12-31 23:59:59','1997-12-30');

  13. #13
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Mais ça ne peut pas marcher : c'est une fonction MySQL non PHP, il faut donc l'exécuter sous forme d'une requête (mysql_query) avec PHP !

    Exemple reprenant votre DATE_DIFF :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    mysql_connect('localhost', 'login', 'motdepasse') or die(mysql_error());
    mysql_select_db('base_de_données') or die(mysql_error());
    $query = mysql_query("SELECT DATEDIFF('1997-12-31 23:59:59','1997-12-30')") or die(mysql_error());
    $res = mysql_fetch_row($query);
    echo $res[0];
    (si je ne me suis pas planté ayant mis l'extension mysql au placard)

  14. #14
    Membre confirmé
    Inscrit en
    Septembre 2008
    Messages
    123
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 123
    Par défaut
    Citation Envoyé par julp Voir le message
    $query = mysql_query("SELECT DATEDIFF('1997-12-31 23:59:59','1997-12-30')") or die(mysql_error());
    $res = mysql_fetch_row($query);
    echo $res[0];[/code]
    (si je ne me suis pas planté ayant mis l'extension mysql au placard)
    Merci bien julp maintenant je comprends .

    et pour la requete :
    $sql = mysql_query('SELECT SUM(montant) AS total FROM facture WHERE code_client = "1" AND YEAR(date_facture) = YEAR(CURRENT_DATE)');
    elle ne donne rien seulement une page blanche.

  15. #15
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Vous avez testé la requête avec phpMyAdmin ou autre interface de ce genre ?

    Vous récupérez bien le résultat de votre requête ? (fonction mysql_fetch_[row|assoc|array] voir mysql_result)

  16. #16
    Membre confirmé
    Inscrit en
    Septembre 2008
    Messages
    123
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 123
    Par défaut
    Citation Envoyé par julp Voir le message
    Vous avez testé la requête avec phpMyAdmin ou autre interface de ce genre ?

    Vous récupérez bien le résultat de votre requête ? (fonction mysql_fetch_[row|assoc|array] voir mysql_result)
    oui je travaille avec dreamweaver .
    mais je crois que le probleme vient du type de champs datefiche: c'est bigint(20) et il esr remplit par le timestamp .
    est ce que je dois faire un type Date?
    et merci bien pour vos reponse

  17. #17
    Membre confirmé
    Inscrit en
    Septembre 2008
    Messages
    123
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 123
    Par défaut
    Citation Envoyé par julp Voir le message
    Vous avez testé la requête avec phpMyAdmin ou autre interface de ce genre ?

    Vous récupérez bien le résultat de votre requête ? (fonction mysql_fetch_[row|assoc|array] voir mysql_result)
    oui je travaille avec dreamweaver .
    mais je crois que le problème vient du type de champs datefiche: c'est bigint(20) et il esr remplit par le timestamp .
    est ce que je dois faire un type Date?
    et merci bien pour vos réponses

  18. #18
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    A vous de voir, niveau type, ce qui vous est le plus pratique à l'usage.

    Si vous gardez vos timestamp Unix, on peut adapter la requête, normalement, genre :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT SUM(montant) AS total FROM facture WHERE code_client = "1" AND YEAR(FROM_UNIXTIME(date_facture)) = YEAR(CURRENT_DATE)

  19. #19
    Membre confirmé
    Inscrit en
    Septembre 2008
    Messages
    123
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 123
    Par défaut
    Citation Envoyé par julp Voir le message
    A vous de voir, niveau type, ce qui vous est le plus pratique à l'usage.

    Si vous gardez vos timestamp Unix, on peut adapter la requête, normalement, genre :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT SUM(montant) AS total FROM facture WHERE code_client = "1" AND YEAR(FROM_UNIXTIME(date_facture)) = YEAR(CURRENT_DATE)
    Merci bien Julp ça fonctionne très bien.

    vos réponses sont très utiles.

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

Discussions similaires

  1. [PDO] Verifier qu'une requete a été correctement executée
    Par thebarbarius dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 21/02/2011, 11h42
  2. [MySQL] Ecrire une requete mysql correctement
    Par mejrs dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 22/01/2010, 17h22
  3. [Debutant]Correction d'une requete normée svp
    Par Wisefool dans le forum Langage SQL
    Réponses: 3
    Dernier message: 24/01/2006, 10h54
  4. requete correcte si une seule reponse
    Par xave dans le forum Langage SQL
    Réponses: 5
    Dernier message: 20/07/2005, 10h20
  5. [VB6] [Excel] Résultat d'une requete ds une feuille
    Par elifqaoui dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 07/01/2003, 17h52

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