Du mal pour créer une fonction...

Mammouth du PHP | 531 Messages

05 janv. 2007, 12:06

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:
Modifié en dernier par supercanard le 05 janv. 2007, 12:43, modifié 1 fois.

Mammouth du PHP | 592 Messages

05 janv. 2007, 12:27

salut,
ton $data['date_news'] c'est un tableau???

il renvoi koi??

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

Mammouth du PHP | 531 Messages

05 janv. 2007, 12:44

Boulette pour la date.
Voilà je viens de mettre a jours le code
Toujours par de résultat. Je trouve pas ce qui cloche...

Mammouth du PHP | 592 Messages

05 janv. 2007, 12:54

tu peut le mettre en entier ton code??

ViPHP
ViPHP | 1961 Messages

05 janv. 2007, 13:05

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).
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Mammouth du PHP | 531 Messages

05 janv. 2007, 13:07

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(); }

Eléphant du PHP | 259 Messages

05 janv. 2007, 13:08

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 !

Mammouth du PHP | 531 Messages

05 janv. 2007, 13:25

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... ?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

05 janv. 2007, 13:58

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 ?
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Mammouth du PHP | 531 Messages

05 janv. 2007, 14:13

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

ViPHP
ViPHP | 1961 Messages

05 janv. 2007, 14:16

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) { 
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Mammouth du PHP | 531 Messages

05 janv. 2007, 14:22

argggg
En fait j'avais bein lu et bien fait la manip mais j'ai fait trop de controle z.
Désolé :?

ViPHP
ViPHP | 1961 Messages

05 janv. 2007, 14:29

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
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Mammouth du PHP | 531 Messages

05 janv. 2007, 15:48

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:

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

05 janv. 2007, 15:50

Et c'est à nouveau une grande victoire de canard ! ;)

Un p'tit clic sur Résolu ? :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...