Page 1 sur 1

Du mal pour créer une fonction...

Posté : 05 janv. 2007, 12:06
par supercanard
Bonjour,

Voilà je commence à découvrir la création de fonction et j'ai un peu de mal? Je crois que je fini par m'embrouiller :

Je m'explique.
Je sort de ma base un date, qui suivant la table peut s'apeller date_news, date_article, etc... donc le nom est variable.
Je voudrais faire une fonction qui compare cette date a celle du serveur, et qui renvoi la valeur 'aujourd'hui' si les 2 dates sont égales.

Donc :

Code : Tout sélectionner

while ($data= mysql_fetch_assoc($req)) { $date= $data['date_news']; echo datejour($date); // Apple fonction datejour
Ensuite ma fonction :

Code : Tout sélectionner

<?php function datejour($date) { $dateserveur= date('Y,m,d'); if ($date= $dateserveur) { $date= 'Aujourd\'hui'; return $date($date); } } ?>
et ensuite :

Code : Tout sélectionner

echo '<h3>'.$data['titre_news'].'</h3>'; echo '<p><span class="info_news">Posté le '.$date.' par
Comme évidement ça ne marche pas je suppose que je me suis légèrement mélanger les pinceaux... :roll:

Posté : 05 janv. 2007, 12:27
par fred9999
salut,
ton $data['date_news'] c'est un tableau???

il renvoi koi??

sinon ton $date serveur tu lui donne pas un format de date???

Posté : 05 janv. 2007, 12:44
par supercanard
Boulette pour la date.
Voilà je viens de mettre a jours le code
Toujours par de résultat. Je trouve pas ce qui cloche...

Posté : 05 janv. 2007, 12:54
par fred9999
tu peut le mettre en entier ton code??

Posté : 05 janv. 2007, 13:05
par Ajoloca
Boulette pour la date.
Voilà je viens de mettre a jours le code
Toujours par de résultat. Je trouve pas ce qui cloche...
Je ne sais pas quelles sont les modif que tu as apportées, mais sur ton premier code il-y-a plusieurs erreurs.

Pour faire un test en PHP c'est == et non pas = qui est l'affectation
Cette ligne
if ($date= $dateserveur) { 
devrait être
if ($date == $dateserveur) { 
Ensuite, ça ne veux rien dire
return $date($date);
Ça devrait être
return ($date);
J'ai un autre doute, à voir.
Je ne suis pas sur que la donnée venant de ta base $data['date_news'], soit au format YYYY,mm,dd (la virgule comme séparateur).

Posté : 05 janv. 2007, 13:07
par supercanard
Voili voila :

Code : Tout sélectionner

while ($data= mysql_fetch_assoc($req)) { $date= $data['date_news']; echo datejour($date); // Apple fonction datejour echo '<h3>'.$data['titre_news'].'</h3>'; echo '<p><span class="info_news">Posté le '.$date.'</span></p>'; } exit(); }

Posté : 05 janv. 2007, 13:08
par Jules Petibidon
hello,

les problemes :

if( $truc = $machin )
= est un symbole d'affectation, pour comparer il faut utiliser == (entre autres)

return $date( $date )
qu'est ce que tu as voulu dire par là ? étrange isn't it ?

les trucs moins graves mais que tu devrais corriger :

date ( 'Y,m,d' )
essaye de respecter les standards pour le formatage des dates, c'est plus pratique. le top étant le format US qui te permet pas mal de choses ('Y-m-d')

regarde bien ce que tu as écrit, si ton code venait à fonctionner, tu te retrouverais avec une phrase du style "posté le aujourd'hui"...

bon courage !

Posté : 05 janv. 2007, 13:25
par supercanard
Je vais coriger tout ça.
Alors en fait avec

$date= 'Aujourd\'hui';
return $date($date);

je voulais retourner la variable $dâte contenant le texte Aujourd'hui. C'est pas comme ça qu'il faut faire... ?

Posté : 05 janv. 2007, 13:58
par Ryle
je voulais retourner la variable $dâte contenant le texte Aujourd'hui. C'est pas comme ça qu'il faut faire... ?
Bah non... si tu veux juste retourner la variable $date, il suffit simplement de faire :
return $date;
Ca peut paraitre assez tordu comme ça, mais tu verras on s'y fait vite ;)

Edit : et accessoirement, faudrait le sortir du if pour qu'il retourne la date d'origine si jamais elle ne correspond pas à la date du jour, sinon il ne retournera rien :)


Ps : Jules >> Bouargh ?

Posté : 05 janv. 2007, 14:13
par supercanard
Merci pour votre aide ça commence à rentrer !
Bon ça ne marche toujours pas pourtant cette fois je crois que tout est OK...

Code : Tout sélectionner

function datejour($date) { $dateserveur= date('Y-m-d'); if ($date= $dateserveur) { $date= 'Aujourd\'hui'; } return $date; }

Code : Tout sélectionner

$date= $data['date_news']; datejour($date); // Apple fonction datejour echo '<h3>'.$data['titre_news'].'</h3>'; echo '<p><span class="info_news">Posté le '.$date.'........ suite

Posté : 05 janv. 2007, 14:16
par Ajoloca
Re,

Tu devrais lire attentivement les post.
On t'a signalé à 2 reprises la différence entre une affectation et un test d'égalité

Affectation, un seul signe =
$date= $dateserveur 
Test d'égalité deux signes =
if ($date == $dateserveur) { 

Posté : 05 janv. 2007, 14:22
par supercanard
argggg
En fait j'avais bein lu et bien fait la manip mais j'ai fait trop de controle z.
Désolé :?

Posté : 05 janv. 2007, 14:29
par Ajoloca
Re,

Pour que ça fonctionne.

Quand tu appelles ta fonction, tu gardes où la valeur de retour ???
datejour($date); // Apple fonction datejour
Si tu as besoin de cette valeur plus tard, modifie cette ligne par
$date = datejour($date); // Apple fonction datejour
Si tu n'as plus besoin de cette valeur supprime cette ligne et modifie
echo '<p><span class="info_news">Posté le '.$date.'........ suite
par
echo '<p><span class="info_news">Posté le '.datejour($date).'........ suite

Posté : 05 janv. 2007, 15:48
par supercanard
Merci cette fois ça marche :D
Et surtout j'ai pigé le fonctionement.
J'ai fait en sorte que ça n'affiche pas posté le aujourd'hui :wink:

Posté : 05 janv. 2007, 15:50
par Ryle
Et c'est à nouveau une grande victoire de canard ! ;)

Un p'tit clic sur Résolu ? :)