Forum Clubic

Probleme PHP/Mysql explode date

P’tit probleme

Dans un forum, affichage des salons et de la date du dernier message entré par un utilisateur dans chaque salon.

Dans mon while, tout fonctionne bien sauf lorsqu je veux scinder mon format.
last_date est une date au format datetime

while ($ligne = mysql_fetch_array($salon))


list($lastdate, $time) = explode(" ", $last_date);
list($year, $month, $day) = explode("-", $lastdate);

lorsque je retire ces lignes , ca fonctionne mais forcément je n’ai pas ce que je veux …

Merci de votre aide

mySQL dispose de fonction de formattage de date, d’un format vers un autre, etc…

Tu peux expliquer s’il te plait…

Merci

Comme le dit le dicton, RTFM

http://dev.mysql.com/doc/refman/4.1/en/dat…-functions.html

Ton champ est-il de type DATETIME ou est-ce un champ VARCHAR ?

Datetime

Dans ce cas profite des fonctions de formattage de mySQL (cf. lien, en bas, DATE_FORMAT je crois)

J’inscris la commande suivante mais ça ne fonctionne pas…

$date = SELECT DATE_FORMAT(’$last_date’,GET_FORMAT(DATETIME,‘EUR’);

Le changement de format doit se faire sur la table, un champ de table ou sur une varibale ds le code (comme je fais) qui capture la date entrée au format International et la convertis ?

Merci

J’ai essayé plusieurs autres solutions mais toujours rien à l’affichage…
Est-ce qqn a déjà utilisé cela ?

$last_date est une date au format DATETIME !
$date = mysql_query (“SELECT DATE_FORMAT(’$last_date’,GET_FORMAT(DATETIME,’%Y-%m-%d-%H.%i.%s’)”);
echo $date;

Je désespère, qqn a une solution ?
Merci de votre aide

Plutôt ça :

mysql_query(’‘SELECT DATE_FORMAT(machin_date, \’%Y-%m-%d %H.%i.%s\’)
FROM table’);

En gros : tu utilise ta requête pour formatter ta date directement.

Voilà le code PHP dans ma page qui sert a l’affichage des nouvelles.

L’affichage de la date doitse faire en francais, le format du champ date_nouvelle est au format DATE !

<?php
$requete = mysql_query(“SELECT date_nouvelle,contenu_nouvelle,categorie FROM nouvelle ORDER by date_nouvelle DESC”);
while ($ligne = mysql_fetch_assoc($requete))
{
$datefr = mysql_query(‘SELECT DATE_FORMAT(date_nouvelle, \’%Y-%m-%d \’) FROM nouvelle’);
//while ($ligne2 = mysql_fetch_assoc($datefr))

echo "<div align=center>
<table width=580 border=0 width=2500>
<tr>
<th scope=col width=300><div align=left>".$datefr."</div></th>
<th scope=col width=300><div align=justify>".$ligne["categorie"]."</div></th>
<th scope=col width=2000><div align=center>".$ligne["contenu_nouvelle"]."<br></div></th>
</tr>
</table></div>";
}
?>

Je ne vois pas comment doit-on utiliser le formattage de date ?

Merci de me sortir de cette merde !

omg…

réfléchis deux secondes à ce que tu fais.

Tu fais deux requêtes (textuellement, car évidemment c’est dans une boucle, soit une multiplication des petits pains).

  1. mysql_query retourne une ressource, qui ne peut être utilisée qu’avec mysql_fetch_array et consorts (ie: famille des fonctions mysql_*)

  2. tu récpères déjà tes news dans ta première requête, et c’est là que tu dois agir, pas dans ta boucle. Si tu lis le code comme un ordinateur, ça donne :

Je fais une requête ramenant N résultats
Tant que j’ai pas fini de parcourir les résultats de ma requête
Je fais une requête qui sert à rien ramenant M résultats
Fin.

Coût total :
1ère requête NNlog(N) : tu prend tout ce qu’il y a dans la BDD, et tu trie tout cela
boucle : N
M la seconde requête

Moralité? C’est pas ça.

je te laisse réfléchir (ceci dit, ce n’est pas compliqué)

Tu as tt à fait raison, le problème est résolu…
J’ai posté un message à la va-vite, vraiment désolé du dérangement…
C’est complètement inutile de poster des messages de ce genre et j’en conviens…

Désolé

Non.

Faire des erreurs c’est bien :slight_smile: J’espère juste que tu prendras soin de faire attention à ce que tu fais. C’est tout.