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 :

Requette saute les resulta qui sont '0'


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    455
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 455
    Points : 109
    Points
    109
    Par défaut Requette saute les resulta qui sont '0'
    Bonjour,

    je fait une requette qui marche presque comme je veu sauf que quand il trouve rien il m'affiche pas le 0 et j'aimerai qu'il m'affiche le 0

    voilà mon résultat affiché on voit que le 2009-01-25 et le 2009-01-26 c'est bon j'ai 2 mais après j'ai rien jusqu'au 2009-02-01

    2009-01-25-----2
    2009-01-26-----2
    2009-02-01-----1
    2009-02-26-----1
    2009-02-27-----1
    2009-03-05-----1
    2009-03-26-----1
    2009-04-01-----1
    2009-04-09-----1
    2009-04-17-----1
    2009-04-22-----1
    2009-05-15-----1
    ce que je voudrait c'est u affichage comme sa :

    2009-01-25-----2
    2009-01-26-----2
    2009-01-27-----0
    2009-01-28-----0
    2009-01-29-----0
    2009-01-30-----0
    2009-02-01-----1
    .
    .
    .
    mais j'arrive pas à le faire je vous montre ma requette pour que vous puissier m'aider merci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT  commandes_date,Count(co.commandes_status) AS Nb_commandes FROM customers cu INNER JOIN commandes co ON cu.customers_id=co.customers_id WHERE cu.customers_date_inscription >= '2009-01-24' and co.commandes_status = '1' and cu.customers_from = 'adwords' group by commandes_date
    j'ai essayer de fair sa aussi mais sans résultat

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT  commandes_date, Count(If(co.commandes_status Is Null,1,0)) AS Nb_commandes FROM customers cu INNER JOIN commandes co ON cu.customers_id=co.customers_id WHERE cu.customers_date_inscription >= '2009-01-24' and co.commandes_status = '1'  and cu.customers_from = 'adwords' group by commandes_date
    mais rien a faire je sais pas si c'est parce que je fai qu'un count sur les status =1 que sa me compte pas ceu dont il n'y a rien mais alor comment fair pour que sa affiche comme demandé plus haute

    Je vous remerci(e) de bien vouloir m'aider car je cherche une solution depuis ce matin mais rien

    Merci et bonne journée

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Je ne pense pas que tu puisses recuperer des lignes qui n'existent pas sur la base que le jour existe dans le calendrier.

    Une méthode consiste a construire ta plage de jours avec PHP et de la croiser avec les valeurs effectivement recuperées de la base de données.

  3. #3
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    455
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 455
    Points : 109
    Points
    109
    Par défaut
    c'est a dire que je devrai prendre ma date
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    customers_date_inscription
    l'incrémenté de 1 et de fair une comparaison dans ma requette??

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Non.
    1- Tu etablis en PHP ton tableau des jours de la periode.
    2 -Tu recoltes tes données avec les trous
    3 - Tu rassembles 1 et 2 ce qui te donne un tableau avec tous les jours et toutes les valeurs.

  5. #5
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    455
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 455
    Points : 109
    Points
    109
    Par défaut
    je crois que j'ai rien compris à ce que tu m'a dit et que je vois vraiment pas comment faire.

    car là je regarde pour que dans mon select je regarde un par un une date acrémenté de 1

  6. #6
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    455
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 455
    Points : 109
    Points
    109
    Par défaut
    Salut excuse moi

    mais je voudrais savoir comment faire

    dans ma boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    {
     
    si customers_date_inscription +1 est = null
     
    $comm_nb = 0;
     
    else 
     
    somme des $comm_nb;
    }
    Merci car je voi vraiment pas comment fair ce que tu dis
    si je fait nul c'est que dans ma table des fois j'ai rien par exemple pour le jour suivant et donc ce serai null NON???

  7. #7
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Si tu fais un select en mettant comme condition WHERE une date pour laquelle il n'y a rien dans la base, tu n'aurais pas NULL, tu n'auras rien.

  8. #8
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    455
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 455
    Points : 109
    Points
    109
    Par défaut
    ok mais alors comment je fait car la c'étais ma 100ème depuis ce matin

  9. #9
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Je te l'ai dit : tu laisses ta requete comme telle avec les vides.
    Tu fais une boucle en PHP pour avoir tous les jours de la période que tu veux.

    Tu obtiens donc d'un côté des dates en vrac et des valeurs ; de l'autre des jours qui se suivent.
    Tu mélanges, tu as des jours qui suivent avec des valeurs.

  10. #10
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    455
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 455
    Points : 109
    Points
    109
    Par défaut
    ok mais es-ce que tu a un tuto pour fair sa un truc que je peu prendre exemple

    Merci

  11. #11
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    455
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 455
    Points : 109
    Points
    109
    Par défaut
    excuse moi mais c'est possible de fair ce que tu ma dis quand on sait que la date que l'on cherche est une varible et dans ce cas comment faire des dates a partire d'une date déjà faite???

    j'ai une variable qui contient

    $custom_date = $row["customers_date_inscription"];
    soit ex: 2009-05-02

    mais j'aimerai cas chaque passage de ma boucle sa s'incrémente de 1 sans que sa dépasse le ex: 2009-35-02
    sachant qu'on à que 31 jours

    je sai pas si tu voi mon problème

  12. #12
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Regarde la fonction strtotime() tu as des exemples.

  13. #13
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    455
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 455
    Points : 109
    Points
    109
    Par défaut
    ok merci j'ai pas vraiment utilisé
    strtotime()
    mais plutot: strtotime();
    qui marche très bien

    donc j'ai fait comme tu m'a dit mais par contre j'arrive pas en une requette car j'ai la date de départ qui est ma variable date_du à date_au et donc j'ai besoin de la première requette non??

    je te montre comment j'ai fait et ce serait cool si tu me dis ce qui pourrait être amélioré.

    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
     
    $query = "SELECT DISTINCT customers_id, customers_date_inscription, customers_from FROM customers WHERE customers_from = '".$presta."' " . $custom . " GROUP BY customers_date_inscription ORDER BY customers_date_inscription asc ";
    	$result = mysql_query($query);
    	//date +$a
     
    	while($row = mysql_fetch_assoc($result)) {
    		//$custom_id = $row["customers_id"];
    		$custom_date = $row["customers_date_inscription"];
    		//echo '<br />';	
    	//	echo $custom_date;
    		echo "<tr><td width=\"100\">" . $custom_date . "</td>\r\n";
    	//	echo '<br />';	
    		for ($i=1; $i<=4; $i++) { 
    			$com_dat = strtotime($date_du. '+' .$i. 'days'); 
    			$endDate = date('Y-m-d', $com_dat);
    			//echo '<br />';	echo $endDate ; echo 'test date' ;echo '<br />';	echo '<br />';	
    		//$plus = date("Y-m-d", mktime(0, 0, 0, date("m"), date("d")+$i,  date("Y"))); B.DEP_NOM 
    		$query_comm = "SELECT count(IFNULL(co.commandes_status,'0')) AS Nb_commandes, cu.customers_id, commandes_date FROM customers cu inner JOIN commandes co ON cu.customers_id=co.customers_id WHERE cu.customers_date_inscription = '".$custom_date."'  and cu.customers_from = '".$presta."' and co.commandes_status ='1' and co.commandes_date ='".$endDate."' ";
    		$result_com = mysql_query($query_comm);
     
    			while($row1 = mysql_fetch_assoc($result_com)) {
    				//$custom_id = $row["customers_id"];
    				$custom_id = $row1["customers_id"];	
    				$comm_date = $row1["commandes_date"];	
    				$comm_nb = $row1["Nb_commandes"];
     
    				echo "<td width=\"100\">" . $comm_nb . "</td>\r\n";
    				//echo '<br />';	
    				//echo $custom_id; echo "-----"; echo $comm_date; echo "-----"; echo $comm_nb;  
     
    			}
    	}
    }
    Merci

  14. #14
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu peux aussi manipuler les dates directement dans mysql.
    Par exemple si tu veux de aujourd'hui à dans 7 jours :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE champ_date BETWEEN CURDATE() AND DATE_ADD(CURDATE(), 7 DAYS)

  15. #15
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    455
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 455
    Points : 109
    Points
    109
    Par défaut
    Merci mais je me sert d'un input type="text" pour mettre mes date de début et date de fin donc je pense pas qu'ils soit possible de modifier directement depuis ma requette

  16. #16
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    455
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 455
    Points : 109
    Points
    109
    Par défaut
    houlla en plus je vien de voir que j'ai fait une faute car j'incrémente date du mais quand je cherche a partire de la date $custom_date +1 donc mon résultat est faux

    ce qu'il faut c'est que j'incrément $custom_date donc là c'est bon

    mais le problème c'est que c'est lourd

  17. #17
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    455
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 455
    Points : 109
    Points
    109
    Par défaut
    Là j'ai un pti problème avent j'étais sur easyphp mais quand j'ai fait mes test sur phpmyadmin
    sa ma afficher ce message d'erreur
    Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause
    avec cette requette

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT count(IFNULL(co.commandes_status,'0')) AS Nb_commandes, cu.customers_id, commandes_date FROM customers cu inner JOIN commandes co ON cu.customers_id=co.customers_id WHERE cu.customers_date_inscription = '2009-04-24'  and cu.customers_from like '%adwords%' and co.commandes_status ='1' and co.commandes_date ='2009-04-25'

Discussions similaires

  1. [vb6]:Recuperer les caracteres qui sont dans un fichier text
    Par flav66 dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 23/10/2006, 08h44
  2. Réponses: 2
    Dernier message: 03/10/2006, 18h14
  3. Lister tous les triggers qui sont DISABLE
    Par mpeppler dans le forum Oracle
    Réponses: 2
    Dernier message: 23/08/2006, 10h05
  4. Utiliser les options qui sont dans ma table
    Par valery17 dans le forum Access
    Réponses: 1
    Dernier message: 21/04/2006, 22h45
  5. quels sont les checkbox qui sont cochés?
    Par debutant.informatique dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 16/03/2006, 21h18

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