Problème requête sql
Emilie
-
Emilie -
Emilie -
Bonjour,
J ai une une BDD avec des activités qui se déroulent tout au long de la journée à des heures différentes:
8h:lever
9h:déjeuner
10h:travail
13h:manger
14h:foot
17h:gouter
20h:manger
22h:dodo
Ces activités sont classées par heure du début de l'activité (champ « heure » dans ma table)
j'affiche ces données dans un tableau à l'aide de la boucle while.
J'ai fait une requête sql pour afficher les 3 prochaines activités (en tenant compte de l'heure actuelle)
SELECT * FROM table WHERE heure>$heure LIMIT 0,3
la variable $heure est l'heure actuelle.
Sachant que les activités sont les mêmes tous les jours. Mon problème est que quand on est en soirée (exemple: $heure=23h05) j'aimerai afficher les 3 prochaines activités du lendemain matin
Mais en mettant comme clause WHERE heure>$heure et bien ça n'affiche pas évidemment l'activité du lendemain matin. Car si l'activité commence à 8h et qu'il est actuellement 23h05 alors la clause n'est pas valide pour afficher ces données (en effet heure=8h n'est pas supérieur à $heure=23h05)
Aidez moi svp. Merci
J ai une une BDD avec des activités qui se déroulent tout au long de la journée à des heures différentes:
8h:lever
9h:déjeuner
10h:travail
13h:manger
14h:foot
17h:gouter
20h:manger
22h:dodo
Ces activités sont classées par heure du début de l'activité (champ « heure » dans ma table)
j'affiche ces données dans un tableau à l'aide de la boucle while.
J'ai fait une requête sql pour afficher les 3 prochaines activités (en tenant compte de l'heure actuelle)
SELECT * FROM table WHERE heure>$heure LIMIT 0,3
la variable $heure est l'heure actuelle.
Sachant que les activités sont les mêmes tous les jours. Mon problème est que quand on est en soirée (exemple: $heure=23h05) j'aimerai afficher les 3 prochaines activités du lendemain matin
Mais en mettant comme clause WHERE heure>$heure et bien ça n'affiche pas évidemment l'activité du lendemain matin. Car si l'activité commence à 8h et qu'il est actuellement 23h05 alors la clause n'est pas valide pour afficher ces données (en effet heure=8h n'est pas supérieur à $heure=23h05)
Aidez moi svp. Merci
A voir également:
- Problème requête sql
- Logiciel sql - Télécharger - Bases de données
- Requête sql pour afficher uniquement les fleurs dont le prix est strictement inférieur à 10 euros ✓ - Forum DS
- Sql (+) - Forum Programmation
- Jointure sql ✓ - Forum MySQL
- Quelle requête écrire pour demander au moteur de recherche de présenter de préférence les pages web traitant de tennis mais pas de tennis de table ✓ - Forum Android
6 réponses
Je voudrai trouver une requête sql qui m'affiche les 3 prochaines activités et qui fonctionne à nimporte quelle heure de la journée (meme le soir)
Merci de votre aide
Merci de votre aide
Bonjour
L'idée est d'ajouter 24 heures soit 86400 secondes aux heures qui précèdent l'heure courante, pour qu'elles deviennent des heures 'de demain'
SELECT * FROM table ORDER BY IF (heure<CURTIME(),TIME_TO_SEC(heure)+86400,TIME_TO_SEC(heure)) LIMIT 3
LIMIT 3 c'est la même chose que LIMIT 0,3, pas besoin de s'encombrer du 0,
L'idée est d'ajouter 24 heures soit 86400 secondes aux heures qui précèdent l'heure courante, pour qu'elles deviennent des heures 'de demain'
SELECT * FROM table ORDER BY IF (heure<CURTIME(),TIME_TO_SEC(heure)+86400,TIME_TO_SEC(heure)) LIMIT 3
LIMIT 3 c'est la même chose que LIMIT 0,3, pas besoin de s'encombrer du 0,
Ok merci
quand je teste ta requete, ça me met :
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\wamp\www\tests\Developpez.com\MYWEBSITE.php on line 114
et la ligne 114 sur mon script, c'est la ligne ou il y a :
<?php while ($donnees= mysql_fetch_array($resultat)) { ?>
Apparament je dois rajouter un parametre mais je ne sais pas du tout koi faire...
Merci de ton aide
quand je teste ta requete, ça me met :
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\wamp\www\tests\Developpez.com\MYWEBSITE.php on line 114
et la ligne 114 sur mon script, c'est la ligne ou il y a :
<?php while ($donnees= mysql_fetch_array($resultat)) { ?>
Apparament je dois rajouter un parametre mais je ne sais pas du tout koi faire...
Merci de ton aide
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Non, tu n'as pas de paramètre à ajouter.
PHP râle parce que le paramètre passé n'est pas du bon type : il attend un type ressource et tu passes un type booléen.
Normalement, mysql_query rend une ressource, mais s'il y a un problème, il rend FALSE - donc un booléen : c'est ce qui t'arrive.
Le problème c'est que la requête est mauvaise.
En effet, quand on donne à une table ou à un champ un nom qui correspond à un mot réservé mysql, il faut l'entourer d'accents graves ``
Comme tu as appelé ta table ... table, et que c'est un mot réservé, tu as le choix entre changer le nom de la table (ce que je te conseille) ou entourer son nom de `` :
SELECT * FROM `table` ORDER BY IF (heure<CURTIME(),TIME_TO_SEC(heure)+86400,TIME_TO_SEC(heure)) LIMIT 3
PHP râle parce que le paramètre passé n'est pas du bon type : il attend un type ressource et tu passes un type booléen.
Normalement, mysql_query rend une ressource, mais s'il y a un problème, il rend FALSE - donc un booléen : c'est ce qui t'arrive.
Le problème c'est que la requête est mauvaise.
En effet, quand on donne à une table ou à un champ un nom qui correspond à un mot réservé mysql, il faut l'entourer d'accents graves ``
Comme tu as appelé ta table ... table, et que c'est un mot réservé, tu as le choix entre changer le nom de la table (ce que je te conseille) ou entourer son nom de `` :
SELECT * FROM `table` ORDER BY IF (heure<CURTIME(),TIME_TO_SEC(heure)+86400,TIME_TO_SEC(heure)) LIMIT 3