Requet SQL et timestamp php

rapbizz
Messages postés
9
Date d'inscription
jeudi 30 novembre 2000
Statut
Membre
Dernière intervention
9 juillet 2009
- 3 mars 2009 à 15:28
malalam
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
- 7 mars 2009 à 10:21
Bonjour a tous , voila j'expose mon probleme
j'ai creer un systeme de news
et j ai fé une partie admin qui me permet de voir les commentaire , creer les news et tout...
donc j'ai deux table : table : commentaire ( id , id_news ,pseudo, contenu , timestamp )
et et j ai la table news ( id , titre , contenu , timestamp)

j'aimerais bien que sur un de mes page admin , je sache voir les commentaire poster les 5 dernier jour
comment faire ?

car j'avais essayer cela , mais ca ne marcherais pas biensur

$reponse = mysql_query("SELECT * FROM commentaires ORDER BY timestamp DESC LIMIT 0,5");

Merci de m'eclairer :)
chezren

11 réponses

Polack77
Messages postés
1098
Date d'inscription
mercredi 22 mars 2006
Statut
Membre
Dernière intervention
22 octobre 2019
1
3 mars 2009 à 15:37
Bonjour,
timestamp c'est le nom de ta colonne ???
ATTENTION timestamp est un type de variable donc un mot réservé .
Du coup à mon sens il vaut mieux que tu renomme cette colonne (mais c'est comme tu veut dans le font)
Je crois que pour attendre une colonne (ou un table, voir autre chose ^^) nommé par un mot réservé il faut ajouté des marque de début et de fin de chaine (des " je crois). Attention il me semble que dans ce cas les nom sont sensible à la case (majuscule minuscule )

 Amicalement <!-- /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-pa
0
rapbizz
Messages postés
9
Date d'inscription
jeudi 30 novembre 2000
Statut
Membre
Dernière intervention
9 juillet 2009

3 mars 2009 à 16:29
<?php
mysql_connect("localhost", "", "");
mysql_select_db("");
// On récupère les 5 dernières jour
$variable_temp = time() - 2*24*3600;$reponse mysql_query('SELECT * FROM commentaires WHERE time>'.$variable_temp.'');


echo'Voici les commentaires des 5 dernier jours :

';
while ($donnees = mysql_fetch_array($reponse))
{
?>
Envoyé par <?php echo $donnees['pseudo']; ?> Le <?php echo date('d/m/Y', $donnees['timestamp']); ?>

  <?php echo $donnees['contenu']; ?>

 

<?php
} // Fin de la boucle des news
?>

enfaite un amis ma aider , seulement un bug , il affiche que  => Voici les commentaire des 5 dernier jours , puis plus rien , meme pas " Envoyer Par "
pourquoi ?

verifier par vous meme le bug : www.assas.75.fr/ludo/test.php

Merci

chezren
0
rapbizz
Messages postés
9
Date d'inscription
jeudi 30 novembre 2000
Statut
Membre
Dernière intervention
9 juillet 2009

3 mars 2009 à 16:31
oui timestamp est le nom de la colone , j ai pris le script d'un tutos le phpfacile qui effectuais sa colone ainsi pour ces news donc j'ai suivi le tuto :)
0
kohntark
Messages postés
3706
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
30
3 mars 2009 à 16:42
Salut,

... comme quoi les tutos sont eux aussi bogués
Pour utiliser un mot réservé (pour mySQL) comme nom de colonne il faut l'entourer par des `  (j'ai un doute quant aux " de Polack)

Ton ORDER BY d'origine devrait fonctionner, mais ça dépend du type exacte de ton champ (DATE, DATETIME, .... ????)

Par ailleurs, il faut TOUJOURS gérer les erreurs qui peuvent se produire sur une requête SQL, surtout pour le debug. En affichant l'erreur tu trouveras très rapidement la solution.

Cordialement,

Kohntark -
0

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

Posez votre question
Polack77
Messages postés
1098
Date d'inscription
mercredi 22 mars 2006
Statut
Membre
Dernière intervention
22 octobre 2019
1
3 mars 2009 à 16:52
5 dernier jours ??? 2*24*3600
Là c'est les 2 dernier jours non ???
Tu à renommé ta colonne timestamp de la table commentaires en time ???

Heeee oui Kohntark tu dois avoir raison (les " c'est pour PostgreSQL je crois, ... Ou Oracle ???? Haaaaaa je fini par par ne plus savoir où j'habite avec tout ces SGBD qui ne respecte qu'à 50% les normes... NON je suis médisant avec mon 50% là quand même )

A tu des données dans la période que tu à choisie (si non normal que sa n'affiche rien ) ?
Si oui gère affiche les erreurs, c'est effectivement sans doute le plus simple et le mieux .

 Amicalement <!-- /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-pa
0
kohntark
Messages postés
3706
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
30
3 mars 2009 à 17:43
Ca vient de me faire tilt en lisant le message de Polack, mais changer timestamp pour time n'est pas une bonne idée , time est également un mot réservé !!! (pas de pot !!) Fait un test avec tartanpion, là il n'y a pas de pb (ou ajoute des `, mais c'est source d'erreurs)

@Polack :

pour Postgre je ne sais pas, pour Oracle c'est le cas
NB : pas de télé ??!!! houuuu la honte !!! arriéré va !!! 

Cordialement,

Kohntark -
0
TychoBrahe
Messages postés
1309
Date d'inscription
samedi 31 janvier 2009
Statut
Membre
Dernière intervention
5 juin 2013
12
4 mars 2009 à 09:39
Salut,

Au sujet des mots-clé réservés a MySQL, time, timestamp et certains autres sont, autorisés comme nom de colonnes (vu le nombre de "développeurs" qui utilisent ça ...). Plus d'infos a ce sujet dans le documentation MySQL. Bon je l'accorde, c'est tout de même une très mauvaise idée de les utiliser et on devrais lyncher ceux qui font des "tutos" comme ça.

Soit dit en passant, il est carrément plus pratique d'utiliser un véritable champ de type DATE ou DATETIME plutot qu'un timestamp. Pour te donner une idée de la simplicité d'utilisation d'un tel cas je t'invite a lire la documentation au sujet des fonctions de manipulation de dates et d'heures. J'espère que ceci va te convaincre de changer le structure de tes champs.
0
rapbizz
Messages postés
9
Date d'inscription
jeudi 30 novembre 2000
Statut
Membre
Dernière intervention
9 juillet 2009

4 mars 2009 à 15:33
pour le 2*24*3600 c'est parce que quand j'ai poster sur le forum j'essayer pour voir si il me mettais ce qu'il y avai eu dans les 2 dernier jour

chezren
0
rapbizz
Messages postés
9
Date d'inscription
jeudi 30 novembre 2000
Statut
Membre
Dernière intervention
9 juillet 2009

4 mars 2009 à 15:36
TychoBrahe comment me conseilerais tu comment  changement de champs ?

chezren
0
kohntark
Messages postés
3706
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
30
4 mars 2009 à 16:08
Salut,

Un truc du genre devrait suffire (fais tout de même une sauvegarde de ta table avant) :
ALTERTABLEta_tableCHANGEton_champton_champDATETIMENOTNULL

(ou DATE)

Kohntark -
0
malalam
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
25
7 mars 2009 à 10:21
Juste pour ajouter un truc : pour le type TIMESTAMP, ça dépend beaucoup de la version de mysql qui est utilisée. Ce type a beaucoup changé...malheureusement.

Sinon le plus sûr dans ce genre de requêtes est d'utiliser le moteur de la base de données, pour faire des comparaisons de dates. Ta comparaison ne dépend pas d'une variable php, mais de la date courante, donc...utilise les fonctions MYSQL pour construire la date à comparer, tu n'auras ainsi aucun problème de compatibilité; à condition d'utiliser pour ta colonne un type de date mysql, évidemment.
0