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");
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 )
<?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 ?
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 :)
... 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 -
Vous n’avez pas trouvé la réponse que vous recherchez ?
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 .
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 !!!
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.
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.