Se connecter avec
S'enregistrer | Connectez-vous

requete avec boucle? [résolu]

Dernière réponse : dans Programmation

bonsoir,

je souhaite effectuer une recherche sur "id" avec une clause sur le champs "datej" de ma base.
A savoir ce champs "datej" est un champ dont la date est inscrite sous la forme yyyy-mm-dd et j'aimerai pouvoir afficher seulement les résultats compris entre une date de début et une date de fin qui correspondra à la date actuelle moins 13 jours.

voici ou en est mon code:

  1. for($i=0; $i <= 4 ; $i++){
  2. $query_rslisteannonce = "SELECT id FROM annonces WHERE datej = ADDDATE('$datenews', INTERVAL -$i DAY) ORDER BY id DESC";}
  3. $query_limit_rslisteannonce = sprintf("%s LIMIT %d, %d", $query_rslisteannonce, $startRow_rslisteannonce, $maxRows_rslisteannonce);
  4. $rslisteannonce = mysql_query($query_limit_rslisteannonce, $connexion_pasdhasard) or die(mysql_error());
  5. $row_rslisteannonce = mysql_fetch_assoc($rslisteannonce);


j'ai trouvé une solution en recopiant treize fois ce bout de code:
  1. datej = ADDDATE('$datenews', INTERVAL -1 DAY) OR datej = ADDDATE('$datenews', INTERVAL -2 DAY) ect....


mais question programation je pense qu'il y a mieux!

pour info
  1. $datenews = date("Y-m-d")


et depuis un bon moment je recherche une autre solution comme peut être une boucle, mais celle que je suis entrain de "fabriquer" ne fonctionne pas. :??: 

quelqu'un pourrait il m'aider?

Autres pages sur : requete boucle resolu

Lassé par la pub ? Créez un compte
Expert Programmation

Ce n'est pas un problème de programmation mais de math !

Rappelle-toi que
V = 1 OR V = 2 OR V = 3 OR V = 4 OR V = 5 OR V = 6 OR V = 7
peut s'écrire
V >= 1 ET V <= 7
Expert Programmation

Euh, j'ai précisé que c'était des maths. Donc c'est écrit en math, un merveilleux langage de non-programmation. :o 

Maintenant à acideci (aidé de batchy ou d'autres s'ils veulent bien) de transcoder en PHP
(parce que zeb en math, il se la pête :sol:  alors qu'en PHP ... :sarcastic:  )
Expert Programmation

ton expression est équivalente que si V est un entier. or en math un grand V c'est plutot assimilé à autre chose qu'un entier.
Spoiler
et si tu veut te la peter en math ...
\begin{equation}
\forall k \in \mathbb{Z},
k \in \left\{ 1;2;3;4;5;6;7 \right\}
\Longleftrightarrow
1 \leqslant k \leqslant 7
\end{equation}

merci pour vos réponse,

je ne suis ni un dieu des math ni de la programmation (je vais tout de même prendre des cours du soir en php) :ange: , mais avec vos conseil je pense que je vais y arriver.

je ne peux malheureusement pas le faire pour le moment ni ce soir.

mais je vais tester ce code et vous tiens au courrant.

  1. for(V=int(V) AND V>=1 AND V<=7){# $query_rslisteannonce = "SELECT id FROM annonces WHERE datej = ADDDATE('$datenews', INTERVAL -v DAY) ORDER BY id DESC";}...


merci pour vos conseil et réponse.

ça y est, ça marche :bounce:  voici ce que j'ai fais:

  1. $query_rslisteannonce = "SELECT id FROM annonces WHERE datej BETWEEN ADDDATE('$datenews', INTERVAL -13 DAY) AND '$datenews'


merci Batchy, zeb et KangOl pour vos conseils.

ce topic est résolu :-))

heu, il y a un truc à cocher quelques par pour dire que c'est résolu?
Lassé par la pub ? Créez un compte