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 :

Résultat d'une 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 éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Par défaut Résultat d'une requête
    Salam; j'ai la requête suivante qui selectionne les données entre semaine N° 1 de l'année 2011 et la semaine 1 de l'année 2012 :
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
    <?php
    if(((isset ($_POST['an']) ) AND ($_POST['an'] <> "")) AND ((isset ($_POST['com']) ) AND ($_POST['com'] <> "")) 	AND (isset ($_POST['anf']) AND ($_POST['anf'] <> "")) AND (isset ($_POST['nsdb']) AND ($_POST['nsdb'] <> ""))  AND (isset ($_POST['nsf']) AND ($_POST['nsf'] <> "")))
    	{
    	try {
     
    		$tbordnat=$cbd->prepare('
    					SELECT 
    					
    					sum(m)as m,sum(f)as f,sum(m1)as m1,sum(f1)as f1,sum(m2)as m2,sum(f2)as f2,sum(m3)as m3,sum(f3)as f3,sum(m4)as m4,sum(f4)as f4,sum(m5)as m5,sum(f5)as f5,sum(m6)as m6,sum(f6)as f6,sum(m7)as m7,sum(f7)as f7,sum(m8)as m8,sum(f8)as f8,
                                            (sum(m)+sum(m1)+sum(m2)+sum(m3)+sum(m4)+sum(m5)+sum(m6)+sum(m7)+sum(m8)) As Total_M ,
    					(sum(f)+sum(f1)+sum(f2)+sum(f3)+sum(f4)+sum(f5)+sum(f6)+sum(f7)+sum(f8)) As Total_F ,
    					(sum(m)+sum(f)+sum(m1)+sum(f1)) AS t5,
    					(sum(m2)+sum(f2)) AS t10,
    					(sum(m3)+sum(f3)) AS t20,
    					(sum(m4)+sum(f4)) AS t30,
    					(sum(m5)+sum(f5)) AS t40,
    					(sum(m6)+sum(f6)) AS t50,
    					(sum(m7)+sum(f7)) AS t60,
    					(sum(m8)+sum(f8)) AS t100
    																									
    					FROM conteneur 
    					WHERE 
    					DATE_FORMAT(datedec,"%V") BETWEEN :nsdb AND :nsf 
    					AND
    					DATE_FORMAT(datedec,"%X") BETWEEN  :an AND :anf
    								
    					');	
    					$andb  	=trim(htmlspecialchars($_POST['an']));
    					$anf   	=trim(htmlspecialchars($_POST['anf']));
    					$nsdb	        =trim(htmlspecialchars($_POST['nsdb']));
    					$nsf	=trim(htmlspecialchars($_POST['nsf']));
     
    					$tbordnat->bindParam(':an',   $andb , PDO::PARAM_INT); 
    					$tbordnat->bindParam(':anf',  $anf 	, PDO::PARAM_INT); 
    					$tbordnat->bindParam(':nsdb', $nsdb , PDO::PARAM_INT); 
    					$tbordnat->bindParam(':nsf',  $nsf 	, PDO::PARAM_INT); 
     
    					$tbordnat->execute();
    					// On récupère en 1er toutes les données
    					$datanat = $tbordnat->fetchAll(PDO::FETCH_ASSOC);
    					// libèré la connexion du serveur
    				        $tbordnat->closeCursor();
    						}	
    					catch( Exception $e ){
    						  echo 'Erreur d\'affichage : ', $e->getMessage();
    						  }
    							/*----------------- fin affichage */
    			}
     
    ?>
    pour voir le résultat , le var_dump retourne :
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    array
      0 => 
        array
     
          'm' => string '8' (length=1)
          'f' => string '8' (length=1)
          'm1' => string '15' (length=2)
          'f1' => string '13' (length=2)
          'm2' => string '1' (length=1)
          'f2' => string '9' (length=1)
          'm3' => string '6' (length=1)
          'f3' => string '6' (length=1)
          'm4' => string '3' (length=1)
          'f4' => string '15' (length=2)
          'm5' => string '2' (length=1)
          'f5' => string '8' (length=1)
          'm6' => string '0' (length=1)
          'f6' => string '8' (length=1)
          'm7' => string '0' (length=1)
          'f7' => string '8' (length=1)
          'm8' => string '10' (length=2)
          'f8' => string '7' (length=1)
          'Total_M' => string '45' (length=2)
          'Total_F' => string '82' (length=2)
          't5' => string '44' (length=2)
          't10' => string '10' (length=2)
          't20' => string '12' (length=2)
          't30' => string '18' (length=2)
          't40' => string '10' (length=2)
          't50' => string '8' (length=1)
          't60' => string '8' (length=1)
          't100' => string '17' (length=2)
    il me retourne le résultat de la première semaine de l'année 2012 au lieu de la somme de la 1 semaine 2011 jusqu’à première semaine 2012.

  2. #2
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Par défaut
    Re, je crois que le problème est dans le DATE_FORMAT:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DATE_FORMAT(datedec,"%X")
    normalement retourne un integer selon la doc mysql
    avec le var_dump sa donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'DATE_FORMAT(datedec,"%X")' => string '2012' (length=4)
    pour les semaines:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DATE_FORMAT(datedec,"%V")
    dans la doc n'est pas spécifier si c'est un integer ou autre !!!!

    j'ai essayé avec *1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    ......
    // partie concernée par le changement 
    WHERE 
    DATE_FORMAT(datedec,"%X") BETWEEN  :an*1 AND :anf*1
    AND
    DATE_FORMAT(datedec,"%V") BETWEEN :nsdb*1  AND :nsf*1
     
    ..........
    rien de positif

  3. #3
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Par défaut essai avec transtypage
    Là je deviens
    j'ai essayé le transtypage :
    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
     
    ........
    $andb=(int)trim(htmlspecialchars($_POST['an']));								
    $anf=(int)trim(htmlspecialchars($_POST['anf']));
    $nsdb=(int)trim(htmlspecialchars($_POST['nsdb']));
    $nsf=(int)trim(htmlspecialchars($_POST['nsf']));
     
    $tbordnat->bindParam(':an',   $andb , PDO::PARAM_INT); 
    $tbordnat->bindParam(':anf',  $anf 	, PDO::PARAM_INT);
    $tbordnat->bindParam(':nsdb', $nsdb , PDO::PARAM_INT); 
    $tbordnat->bindParam(':nsf',  $nsf 	, PDO::PARAM_INT); 
     
    $tbordnat->execute();
    // On récupère en 1er toutes les données
    $datanat = $tbordnat->fetchAll(PDO::FETCH_ASSOC);
    // libéré la connexion du serveur
    $tbordnat->closeCursor();
    ..........
    aucun résultat correct !!!!

  4. #4
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Par défaut aller après 20 minutes rien de bon
    changement de tac tic et hopp...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    .........
    // partie concernée par le changement
    FROM conteneur 
    WHERE 
    // pour avoir la forme de '2011 20'
    DATE_FORMAT(datedec,"%X %V") BETWEEN  :an AND :anf
    ');	
     
    ...........
    $andb  	= trim(htmlspecialchars($_POST['an'])).' '.trim(htmlspecialchars($_POST['nsdb']));
    $anf   	=trim(htmlspecialchars($_POST['anf'])).' '.trim(htmlspecialchars($_POST['nsf']));
    ............
    résultat 50 m sous la mer

  5. #5
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 815
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 815
    Billets dans le blog
    14
    Par défaut
    DATE_FORMAT, comme son nom l'indique, formate une date.
    Ne serait-ce pas plutôt la fonction WEEK qui te serait utile ?

    Citation Envoyé par doc MySQL
    WEEK(date [,mode])

    Avec un seul argument, retourne le numéro de la semaine dans l'année de la date date, dans un intervalle de 0 à 53 (oui, il peut y avoir un début de semaine numéro 53), en considérant que Dimanche est le premier jour de la semaine.
    Voir la description complète dans la doc.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  6. #6
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Par défaut Attention on est a 75 m de profondeur
    Re , Oui CinePhil voila j'ai utilisé YEAR(madate) pour extraire l'année et WEEKOFYEAR(madate) pour extraire le numéro de la semaine.
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
     
    ..............
    try {
    $tbordnat=$cbd->prepare('SELECT 
     
    sum(m)as m,sum(f)as f,sum(m1)as m1,sum(f1)as f1,sum(m2)as m2,sum(f2)as f2,sum(m3)as m3,sum(f3)as f3,sum(m4)as m4,sum(f4)as f4,
    sum(m5)as m5,sum(f5)as f5,sum(m6)as m6,sum(f6)as f6,sum(m7)as m7,sum(f7)as f7,sum(m8)as m8,sum(f8)as f8,
    (sum(m)+sum(m1)+sum(m2)+sum(m3)+sum(m4)+sum(m5)+sum(m6)+sum(m7)+sum(m8)) As Total_M ,
    (sum(f)+sum(f1)+sum(f2)+sum(f3)+sum(f4)+sum(f5)+sum(f6)+sum(f7)+sum(f8)) As Total_F ,
    (sum(m)+sum(f)+sum(m1)+sum(f1)) AS t5,
    (sum(m2)+sum(f2)) AS t10,
    (sum(m3)+sum(f3)) AS t20,
    (sum(m4)+sum(f4)) AS t30,
    (sum(m5)+sum(f5)) AS t40,
    (sum(m6)+sum(f6)) AS t50,
    (sum(m7)+sum(f7)) AS t60,
    (sum(m8)+sum(f8)) AS t100
     
    			FROM conteneur 
    			WHERE 
    			YEAR(datedec) BETWEEN  :an AND :anf
    			AND
    			WEEKOFYEAR(datedec) BETWEEN :nsdb AND :nsf 
     
    			');	
    		$andb=trim(htmlspecialchars($_POST['an']));
    		$anf  	=trim(htmlspecialchars($_POST['anf']));
    		$nsdb	=trim(htmlspecialchars($_POST['nsdb']));
    		$nsf	=trim(htmlspecialchars($_POST['nsf']));
     
     
    		$tbordnat->bindParam(':an',   $andb , PDO::PARAM_INT); 
    		$tbordnat->bindParam(':anf',  $anf 	, PDO::PARAM_INT); 
    		$tbordnat->bindParam(':nsdb', $nsdb , PDO::PARAM_INT); 
    		$tbordnat->bindParam(':nsf',  $nsf 	, PDO::PARAM_INT); 
     
     
    		$tbordnat->execute();
    			// On récupère en 1er toutes les données
    		$datanat = $tbordnat->fetchAll(PDO::FETCH_ASSOC);
    			// libèré la connexion du serveur
    		$tbordnat->closeCursor();
    			}	
    catch( Exception $e ){
    	echo 'Erreur d\'affichage : ', $e->getMessage();
    			}
    							/*----------------- fin affichage */
    	}
    résultat : négatif

  7. #7
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 815
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 815
    Billets dans le blog
    14
    Par défaut
    résultat : négatif
    Plus précisément ?
    Message d'erreur ?
    Pas de résultat ?
    Pas le résultat attendu ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  8. #8
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Par défaut
    Oupps.....
    Pas le résultat attendu ?
    c'est adire:
    normalement je doit avoir la somme de tous les données entre la semaine 1 de l'année 2011 et la semaine 1 de l'année 2012 par exemple .
    le résultat avec la requête ci dessus donne seulement des NULL

  9. #9
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Par défaut Olllaaa
    peut être que le BETWEEN ne fonctionne que sur la même année exemple 2011-2011 et non pas sur 2011-2012 !!!!!

Discussions similaires

  1. Comparer le résultat d'une requête
    Par VirginieGE dans le forum ASP
    Réponses: 3
    Dernier message: 10/08/2004, 15h15
  2. Arrondir le résultat d'une requête
    Par wautierp dans le forum Langage SQL
    Réponses: 2
    Dernier message: 07/06/2004, 11h56
  3. Résultat d'une requête dans une variable...
    Par Hoegaarden dans le forum Bases de données
    Réponses: 6
    Dernier message: 28/04/2004, 13h51
  4. Résultat d'une requète SQL
    Par camino dans le forum Bases de données
    Réponses: 2
    Dernier message: 21/02/2004, 15h22
  5. [BDD] Enregistrer le résultat d'une requête
    Par Mowgly dans le forum C++Builder
    Réponses: 5
    Dernier message: 19/06/2002, 15h26

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