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 :

[SQL] Problème de requête


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 18
    Par défaut [SQL] Problème de requête
    Bonjour

    j'ai un problème dans ma fonction, lorsque je teste la requête SQL, elle fonctionne correctement, mais dans ma fonction, rien ne s'affiche, pouvez-vous m'aider et me dire ce qui ne va pas ? Merci

    Code php : 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
    function datesqlcategory($catego, $date1, $date2){
    	$sql = mysql_query("SELECT avg( a.delai )
    FROM (
     
    SELECT id, category, DATEDIFF( closedate, date ) AS delai
    FROM glpi_tracking
    WHERE ( date
    BETWEEN '$date1%'
    AND '$date2%' )
    AND (
     
    STATUS = 'old_done'
    AND category = '%$catego'
    )
    ) AS a
    GROUP BY category");
    	$req = mysql_fetch_row($sql) or die ("Non cloturé ".mysql_error()); 
    	echo "<td>".$req[0]."</td>";

  2. #2
    Membre chevronné Avatar de BornBanane
    Homme Profil pro
    dev
    Inscrit en
    Mars 2007
    Messages
    284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Mars 2007
    Messages : 284
    Par défaut
    Je l'aurais écrit comme ca :
    ( mettre la requête dans un variable fait un peu plus propre je trouve )

    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
     
    $query = ' SELECT avg( a.delai ) '.
    ' FROM ( '.
    ' SELECT id, category, DATEDIFF( closedate, date ) AS delai '.
    ' FROM glpi_tracking '.
    ' WHERE ( date '.
    ' BETWEEN "'.$date1.'%" '.
    ' AND "'.$date2'%" ) '.
    ' AND ('.
    ' STATUS = "old_done" '.
    ' AND category = "%'.$catego.'" '.
    ' ) '.
    ' ) AS a '.
    'GROUP BY category';
    //echo $query; // Ca aide toujours à voir ce qui peut cloquer dans la requête
    $sql = mysql_query($query);
    $req = mysql_fetch_row($sql) or die ("Non cloturé ".mysql_error());
    echo "<td>".$req[0]."</td>";
    Est-ce mieux ?

  3. #3
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 18
    Par défaut
    Ca n'affiche toujours rien,
    j'ai décommenter //echo $query, j'obtiens ça :

    SELECT avg( a.delai ) FROM ( SELECT id, category, DATEDIFF( closedate, date ) AS delai FROM glpi_tracking WHERE ( date BETWEEN "2006-12-01%" AND "2006-12-01%" ) AND ( STATUS = "old_done" AND category = "6" ) ) AS a GROUP BY category

  4. #4
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    salut
    En plaçant un mysql_error sur l'execution de la requête, ça renvoie quelque chose ?
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = mysql_query($query) or die (" erreur : ".mysql_error());

    edit : koo
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  5. #5
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Par défaut
    Remplaces ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $sql = mysql_query($query);
    $req = mysql_fetch_row($sql) or die ("Non cloturé ".mysql_error());
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $sql = mysql_query($query)or die ("Non cloturé ".mysql_error());
    $req = mysql_fetch_row($sql);
    pour vérifier que ton mysql_query() se passe bien.

    Sinon, tu es sur que SELECT * FROM ( autre requete) est valable en SQL ? Dans mes lointains souvenirs il fallait utiliser IN pour utiliser des requetes imbriquées (mais ca a peut etre changé depuis, je demande au cas où).

    EDIT : Celira ^^, grillé again!

  6. #6
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 18
    Par défaut
    Citation Envoyé par koopajah
    Remplaces ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $sql = mysql_query($query);
    $req = mysql_fetch_row($sql) or die ("Non cloturé ".mysql_error());
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $sql = mysql_query($query)or die ("Non cloturé ".mysql_error());
    $req = mysql_fetch_row($sql);
    J'ai fait ta modif, alors là rien ne s'affiche mais le code continue de s'afficher pour le reste (il y a des espaces vides certes, mais le reste s'affiche alors qu'avant, ça bloquait aux espaces vides)

  7. #7
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Par défaut
    Ca veut dire que ta requete est bien formée du point de vue de SQL. Par contre je viens de m'apercevoir que tu utilises BETWEEN en SQL avec des % dans la valeur. Les % sont utilisés pour le LIKE, il ne faut pas les mettre pour le BETWEEN a mon avis c'est pour ca que tu n'as aucun résultat qui revient de ta requête, et ca me surprend qu'elle marche dans ton phpmyAdmin ou autre frontal SQL.

    en plus pourquoi passer par un FROM() au lieu de ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT id, category, AVG(DATEDIFF( closedate, date )) AS delai FROM glpi_tracking WHERE ( date BETWEEN "2006-12-01%" AND "2006-12-01%" ) AND ( STATUS = "old_done" AND category = "6" ) ) AS a GROUP BY category

  8. #8
    Membre chevronné Avatar de BornBanane
    Homme Profil pro
    dev
    Inscrit en
    Mars 2007
    Messages
    284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Mars 2007
    Messages : 284
    Par défaut
    Citation Envoyé par eduardosan
    SELECT avg( a.delai ) FROM ( SELECT id, category, DATEDIFF( closedate, date ) AS delai FROM glpi_tracking WHERE ( date BETWEEN "2006-12-01%" AND "2006-12-01%" ) AND ( STATUS = "old_done" AND category = "6" ) ) AS a GROUP BY category
    Est-ce la requête que tu voulais, si tu l'avais écrit sur papier ?
    Et si tu as la possibilité de lancer la requête sql avec un phpmyadmin ( ou par un autre moyen ) pour voir ce qu'il peut en ressortir.

  9. #9
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 18
    Par défaut
    Citation Envoyé par francoisIT
    Est-ce la requête que tu voulais, si tu l'avais écrit sur papier ?
    Et si tu as la possibilité de lancer la requête sql avec un phpmyadmin ( ou par un autre moyen ) pour voir ce qu'il peut en ressortir.
    La requête sous phpmyadmin fonctionne, mais une fois dans ma fonction plus rien, je ne vois pas le problème pourtant

Discussions similaires

  1. [SQL] Problème de requête et <tr>+<td>
    Par ruty dans le forum PHP & Base de données
    Réponses: 16
    Dernier message: 15/08/2006, 09h10
  2. [SQL] Problème bizarre requête date
    Par masseur dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 17/02/2006, 13h12
  3. [Oracle] [SQL] problème de requête
    Par joselito dans le forum PHP & Base de données
    Réponses: 24
    Dernier message: 25/01/2006, 12h55
  4. [SQL]problème de requête.
    Par shnouf dans le forum Oracle
    Réponses: 21
    Dernier message: 24/01/2006, 11h12
  5. [SQL] Problème de requête SQL de plus de 8060 caractères ?
    Par webtheque dans le forum MS SQL Server
    Réponses: 13
    Dernier message: 06/04/2005, 15h07

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