Selection date actuelle

jmbabi Messages postés 5 Date d'inscription samedi 8 janvier 2005 Statut Membre Dernière intervention 10 janvier 2005 - 9 janv. 2005 à 20:48
cs_GRenard Messages postés 1662 Date d'inscription lundi 16 septembre 2002 Statut Membre Dernière intervention 30 juillet 2008 - 10 janv. 2005 à 15:17
Bonjour à tous

Ma requete actuelle c'est :

/*Création avec une requête table calendrier dont les champs sont : ref, pre1, date1, pre2, date2, descr, lien*/
$id_result = mysql_query ("SELECT * FROM calendrier order by date1",$id_connex);
if(!$id_result){ echo "Lecture impossible, erreur N°",mysql_errno(),mysql_error();}

et ensuite j'affiche tous les enregistrements. Et ca ca va sauf que j'aimerais ne pas afficher les événements passés.

J'ai donc voulu y ajouter :
where date1 >"date()"
("SELECT * FROM calendrier where date1 >"date()" order by date1",$id_connex);

comme on peut le faire en access . Mais voila ! Suis plus en Access et suis novice en mysql et j vois pas comment y arriver.

Merci d'avance de votre aide (avec un peu d'explication si possible car je veux apprendre et pas betement copier)

Merci d'avance !

5 réponses

cs_GRenard Messages postés 1662 Date d'inscription lundi 16 septembre 2002 Statut Membre Dernière intervention 30 juillet 2008 1
9 janv. 2005 à 22:26
Tout dépend comment est formaté ton champs date1 ET quelle version de mySQL tu possèdes...

tu peux essayer de le faire en timestamp (yyyymmddhhiiss) ou en date('U').

Le timestamp est préférable (il faut que ton date1 soit aussi en timestamp)



Sous d'autres version de mysql, c'est yyyy-mm-dd hh:ii:ss mais yyyymmddhhiiss devrait marcher quand même


Donc ce n'est pas date() qui faut utiliser mais date('YmdHis')

PHP Guru
Écoutez les conseils d'un vieux sage ! Ils sont souvent très utiles.
http://www.lookstrike.com
0
jmbabi Messages postés 5 Date d'inscription samedi 8 janvier 2005 Statut Membre Dernière intervention 10 janvier 2005
10 janv. 2005 à 00:11
Bonsoir (ou bonjour)



merci de la réponse.

La date était formatée yyyy-mm-dd

Sur le serveur je pense que c php4

En locall, g easyphp récent (1.7 ) et php4.4



G essayé en changeant de type de champ (timestamp au lieu de date) (et aussi datetime) et la requete suivante:



SELECT *

FROM `calendrier`

WHERE date1 > "date('ymdHis)"

ORDER BY date1



meme résultat. :


Les données sont bien triées mais celles d'avant le 9 janvier apparaissent tjrs.



Voyez vous plus clair que moi ? Merci d'avance
0
cs_GRenard Messages postés 1662 Date d'inscription lundi 16 septembre 2002 Statut Membre Dernière intervention 30 juillet 2008 1
10 janv. 2005 à 05:26
Je sais pas si tu as fait copier coller ou récrit ta requête, mais essais de bien voir ce que ca donne...

mets ta requête dans une variable avant et ENSUITE tu l'affiches ...

$sql = '
SELECT *

FROM `calendrier`

WHERE date1 > "date('ymdHis)"

ORDER BY date1';

Marchera total pas !



c'est $sql = 'SELECT * FROM calendrier WHERE date1 > \''.date('YmdHis').'\' ORDER BY date1';



Affiche le pour bien voir :

echo $sql;



Et ENSUITE execute le...

mysql_query($sql);



Mais la YmdHis veut dire que ton champs est un timestamp... si ton champs est un datetime tu dois metre Y-m-d ...




PHP Guru
Écoutez les conseils d'un vieux sage ! Ils sont souvent très utiles.
http://www.lookstrike.com
0
jmbabi Messages postés 5 Date d'inscription samedi 8 janvier 2005 Statut Membre Dernière intervention 10 janvier 2005
10 janv. 2005 à 10:57
D'abord merci pour ton aide



Voici ma requete en phpmyadmin et son résultat

(je teste en phpmyadmin local avant de changer le fichier qui
tourne déjà sur le serveur et qui demandera probablement le
changement de la structure du champ date1)






requête SQL : [Modifier] [Expliquer
SQL] [Créer
source PHP]
SELECT *
FROM `calendrier`
WHERE date1 > "date('y-m-d')"
ORDER BY date1 LIMIT
0 , 30




<!-- Navigation bar -->
<form onsubmit= "return (checkFormElementInRange(this, 'session_max_rows', 1) && checkFormElementInRange(this, 'pos', 0, 4))" action="sql.php" method="post">
ligne(s) à partir
de l'enregistrement n°
en mode <select name="disp_direction"><option value="horizontal" selected="selected">horizontal</option><option value="horizontalflipped">horizontal (en-têtes pivotés)</option><option value="vertical">vertical</option></select> et répéter les en-têtes à chaque
groupe de
</form>

<!-- Results table -->
<!-- Results table headers -->

----

,
ref |
pre1 |
date1 |
pre2 |
org |
date2 |
descr |
detail |<!-- Results table body -->
----

,
,
1,
Le,
2005-01-01 00:00:00,
NULL,
NULL,
0000-00-00,
Loto du Football Club,
NULL,
----

,
,
3,
Le,
2005-01-05 00:00:00,
NULL,
NULL,
0000-00-00,
Assemblée générale de l'ARAC,
NULL,
----

,
,
2,
Du,
2005-01-10 00:00:00,
Au,
NULL,
2005-01-20,
Initiation à l'Informatique,
NULL,
----

,
,
5,
Le,
2005-01-15 00:00:00,
NULL,
NULL,
0000-00-00,
test,
NULL,
----

,
,
4,
Le,
2005-01-22 00:00:00,
NULL,
NULL,
0000-00-00,
Conge : jour de l'an,
NULL



comme tu vois il n'y a aucune action de la requète : les 2 1erses lignes sont des éléments passés) sauf l'affichage trié.



Voici la structure du champ date1

Champ |
Type |
Attributs |
Null |
Défaut |
Extra |
Action |
----

,
<label for ="checkbox_row_1">ref</label>,
mediumint(8) ,
UNSIGNED,
Non,
,
auto_increment,
,
,
,
,
,
,
----

,
<label for="checkbox_row_2">pre1</label>,
char(2),
,
Non,
Le,
,
,
,
,
,
,
,
----

,
<label for="checkbox_row_3">date1</label>,
datetime,
,
Non,
0000-00-00 00:00:00,
,
,
,
,
,
,
,
----

,
<label for="checkbox_row_4">pre2</label>,
char(2),
,
Oui,
NULL



<!-- Navigation bar -->Il n'est pas indexé et à la saisie je n'ai entré que l'année le mois et la date.



Ca me parait pourtant simple et je comprends pas que ca marche pas!



Le vois tu toi ?



Merci et a+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_GRenard Messages postés 1662 Date d'inscription lundi 16 septembre 2002 Statut Membre Dernière intervention 30 juillet 2008 1
10 janv. 2005 à 15:17
Dah, c'est du PHP date('Y-m-d')...

Si tu ne veux pas faire du PHP tu peux toujours faire

date1 > NOW()



(et tu peux mettre une opération sur ce now si tu veux.. genre NOW()+3600 ou NOW()-3600)...

PHP Guru
Écoutez les conseils d'un vieux sage ! Ils sont souvent très utiles.
http://www.lookstrike.com
0
Rejoignez-nous