Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/01/2007, 23h48   #1
Membre régulier
 
Avatar de innova
 
Inscription : juillet 2004
Messages : 185
Détails du profil
Informations forums :
Inscription : juillet 2004
Messages : 185
Points : 73
Points : 73
Par défaut [SQL] Utilisation de between

Bonjour,

Si je veux par exemple afficher tous records correspondant à un mois précis :

exemple : janvier 2007

Code SQL :
SELECT * FROM news WHERE `date` BETWEEN '2007-01-01' AND '2007-01-31';

Peut-on faire comme cela ?

ps : si je remplace 2007-01 par $year-$month

Est-ce que cela est possible et surtout correct ?

Merci d'avance.
++
innova est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2007, 10h41   #2
Membre émérite
 
Avatar de guitou12
 
Guillaume
Inscription : juillet 2006
Messages : 813
Détails du profil
Informations personnelles :
Nom : Guillaume
Âge : 29

Informations forums :
Inscription : juillet 2006
Messages : 813
Points : 905
Points : 905
Envoyer un message via MSN à guitou12
A priori ta syntaxe a l'air correcte (voir ce post )

Donc je pense que ça ne devrait pas poser de problèmes d'utiliser $year-$month pour générer ta requête finale
__________________
Le . est la base de toute bonne concaténation, marre de voir des
echo "Mavar1 = $toto et Mavar2 = $titi";
ou pire echo 'Mavar1 = ',$toto,' et Mavar2 = ',$titi;
pratiquez plutôt le echo 'Mavar1 = '.$toto.' et Mavar2 = '.$titi;
guitou12 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2007, 11h13   #3
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Je vous propose une solution entièrement gérée par MySQL :
Code sql :
SELECT * FROM news WHERE MONTH(date) = MONTH(CURDATE()) AND YEAR(date) = YEAR(CURDATE());


Julp.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2007, 11h30   #4
Modérateur
 
Avatar de OButterlin
 
Homme
Inscription : novembre 2006
Messages : 5 063
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : novembre 2006
Messages : 5 063
Points : 5 654
Points : 5 654
Il est préférable d'utiliser les fonctions year(nom_de_colonne)=annee et month(nom_de_colonne)=mois, le format par défaut des dates étant lié au paramétrage du SGBD (rien ne dit qu'il accèptera le format ISO)

A+
OButterlin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2007, 11h37   #5
Modérateur
 
Avatar de OButterlin
 
Homme
Inscription : novembre 2006
Messages : 5 063
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : novembre 2006
Messages : 5 063
Points : 5 654
Points : 5 654
J'oubliais, on peut aussi utiliser la forme :
Code SQL :
1
2
 
SELECT * FROM TABLE WHERE colonne_date BETWEEN {d'2007-01-01'} AND  {d'2007-01-31'}
qui devrait passer partout...

A+
OButterlin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2007, 12h14   #6
Membre régulier
 
Avatar de innova
 
Inscription : juillet 2004
Messages : 185
Détails du profil
Informations forums :
Inscription : juillet 2004
Messages : 185
Points : 73
Points : 73
Citation:
Envoyé par julp
Je vous propose une solution entièrement gérée par MySQL :
Code sql :
SELECT * FROM news WHERE MONTH(date) = MONTH(CURDATE()) AND YEAR(date) = YEAR(CURDATE());


Julp.
Bonjour,

Comment faire lorsque je récupère le mois et l'année sous la forme de variables ?

Dans ma db, j'ai un champ date_news de type date : 2007-01-01

Dans mon script je fais :

Code :
1
2
3
4
$today = getdate();
$month = $taday['mon'];
$year = $today['year'];
$sql = 'SELECT * FROM news WHERE YEAR(date_news) = ' . $year . ' AND MONTH(date_news) = ' . $month;
ca marche pas :-((((

Comment faire ?

MErci
++
innova est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2007, 13h25   #7
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Citation:
Envoyé par innova
ca marche pas :-((((
Admettons ... Il serait bien plus simple pour nous de vous aider si nous avions la partie du code qui ne fonctionne pas et les messages d'erreur ou à défaut une description du comportement du script par rapport à celui que vous attendez !

Voilà un code complet à adapter :
Code :
1
2
3
4
5
6
7
8
9
10
11
<?php
mysql_connect('localhost', 'root', '');
mysql_select_db('ma_bdd');
 
$query = mysql_query('SELECT * FROM news WHERE MONTH(date) = MONTH(CURDATE()) AND YEAR(date) = YEAR(CURDATE()) ORDER BY date DESC;') or die(mysql_error());
while ($array = mysql_fetch_assoc($query)) {
    echo $array['date'] . ' : ' . $array['titre'] . '<br/>';
}
 
mysql_close();
?>

Julp.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h32.


 
 
 
 
Partenaires

Hébergement Web