PDA

Voir la version complète : Aide pour une condition


Yoyo
29/11/2002, 08h51
Salut,
Je voudrais avoir une condition qui fait que si un membre a par exemple moins de 10 posts, il ne voit le sujet que le lendemain de sa date de postage:
Si je poste un sujet le 29 nov à 9h, le membre qui a moins de 10 posts ne le verra que le 30 nov à 9h.

Donc, je voudrais calculer l'écart entre la date du jour et la date de postage pour pouvoir dire: SI posts<10 AND date du jour-date de postage<1 (jour) ALORS "tu ne verras point le sujet :p " (il ne faut pas que le sujet apparaisse dans la threadlist).

Dans forumdisplay.php, j'ai un hack qui calcule la date de postage qui apparait dans la threadlist (c'est un hack qui rajoute cette date sous l'auteur tjs dans la threadlist) et qui est $thread[threadstarted]. Je ne sais pas quelle est la variable qui donne la date du jour et je n'arrive pas à mettre en forme ma condition (le calcul d'écart des dates).

Si quelq'un a une idée? :confused:

Merci :)

Blackos
29/11/2002, 09h34
Voilà je sais pas si c'ets exactement ce que tu voulais, dans mon ex tu dois remplacer $post[message] dans ton postbit par $postmess et mettre ceci dans ton admin/functions.php:

(j'ai pas vérifier si tu dois faire un qury ou non pour les valeurs des dates)


$differencedate=$todaydate-$post[postdate];

if ($differencedate == 1 and $post[posts]<10)
{
$postmess = "$post[message]";
}
else
{
$postmess = "Vous avez moins de 10 posts vous verez le message demain";

Yoyo
29/11/2002, 10h29
Ca se rapproche de ce que je veux effectivement, juste en fait, au lieu que ce soit le message qui n'apparaisse pas, que ce soit la thread entière (qui n'apparaitrait donc pas dans la liste des sujets), comme si mon sujet 'Aide pour une condition', ne se voyait pas avant demain dans le forum PHP & mysql.

Ca concernerait plus le forumdisplay.php et les templates forumdisplay que le function.php et la template postbit je pense.

Le truc est que je veux utiliser le hack 'dynamic templates' qui permet de faire évoluer ses templates suivant certaines conditions: tu mets [[($bbuserinfo[posts]>10 AND la condition des dates)]] template forumdisplay/forumdisplaybit [[/($bbuserinfo[posts]>10 AND la condition des dates)]] et cette template n'apparait que si la condition est remplie. Donc le sujet n'apparait que si post>10, si le post date de moins de 1 jour.

Si t'as besoin d'info sur le hack dynamic templates et sur celui qui permet d'avoir la date de postage du sujet dans forumdisplay, dis le moi.

Je pense que c'est faisable mais je suis trop limité en php pour arriver à bien savoir quoi mettre etc...

Merci déjà pour l'avancement

:)

Blackos
29/11/2002, 11h57
Ben eu pour le dynamic template c'ets pas important une condition c'est une condition ... mais par contre ton hack pour les dates montre moi la requete.

Yoyo
29/11/2002, 12h12
Pour les dates dans le forumdisplay:

Dans forumdisplay.php :
Trouvez :


$threads=$DB_site->query("
SELECT $dotuserid $votequery ".iif($foruminfo[allowicons],'icon.title as icontitle,icon.iconpath,','')."
thread.threadid,thread.title,lastpost, forumid,pollid,open,replycount,postusername,postus erid,
lastposter,thread.dateline,views,thread.iconid,not es,thread.visible,sticky,votetotal,attach
FROM thread
".iif($foruminfo[allowicons],'LEFT JOIN icon ON (icon.iconid = thread.iconid)','')."
$dotjoin
WHERE $threadids
ORDER BY sticky DESC, $sortfield $sqlsortorder
");

Remplacez par :

$threads=$DB_site->query("
SELECT $dotuserid $votequery ".iif($foruminfo[allowicons],'icon.title as icontitle,icon.iconpath,','')."
thread.threadid,thread.title,lastpost, forumid,pollid,open,replycount,postusername,postus erid,
lastposter,thread.dateline AS threadstart,views,thread.iconid,notes,thread.visib le,sticky,votetotal,attach
FROM thread
".iif($foruminfo[allowicons],'LEFT JOIN icon ON (icon.iconid = thread.iconid)','')."
$dotjoin
WHERE $threadids
ORDER BY sticky DESC, $sortfield $sqlsortorder
");




Trouvez :(attention, ce code est répeté deux foix dans le fichier)




$thread[lastreplydate]=vbdate($dateformat,$thread[lastpost]);
$thread[lastreplytime]=vbdate($timeformat,$thread[lastpost]);



Insérez juste après


$thread[threadstartdate]=vbdate($dateformat,$thread[threadstart]);
$thread[threadstarttime]=vbdate($timeformat,$thread[threadstart]);


$thread[threadstartdate] et $thread[threadstarttime] sont les variables que je voudrais utiliser.

Blackos
29/11/2002, 12h24
Ben en fait c'est exactement la meme chose en changeant les noms des variables tu remplace $thread[threadstartdate] par $post[postdate] et tu remplace la variable pour le post par celle du thread c'est tout.
J'ai aps trop le temps de te la faire j'attends de la visite, je ne pesne pas pouvoir me connecter avant demain. Si tu n'y est pas arrivé ben je te le ferai :)

Yoyo
29/11/2002, 12h36
Ok ben je vais déjà essayer ça, en général, j'essaie de me débrouiller tout seul mais là, ça dépasse d'un peu trop mes connaissances :p

Merci et je te tiens au courant (dans mon intérêt :p ) :)

@+

Yoyo
29/11/2002, 17h28
Re :p , après test... j'ai donc mis dans forumdisplay.php

$differencedate=$todaydate-$thread[threadstartdate];
if ($differencedate < 1)
{
$threadview = '0';
}
else
{
$threadview = '1';
}

juste après $thread[threadstartdate]=vbdate($dateformat,$thread[threadstart]);
$thread[threadstarttime]=vbdate($timeformat,$thread[threadstart]);

J'ai viré la condition des posts pour l'instant.

La condition '0' n'est pas vérifiée, j'ai fait un test avec en postant un nouveau sujet et il apparait.

Pour le dynamic template, j'ai mis [[($threadview=1)]]forumdisplaybit[[/($threadview=1)]], donc ça apparait quand $threadview=1 et c'est toujours le cas quelque soit le chiffre que je mets à la place de 1 et même si je mets > et pas <.

Si je mets [[($threadview=0)]]forumdisplaybit[[/($threadview=0)]], forcément rien n'apparait.

Le soucis doit venir donc du calcul entre les 2 dates (ben y a que ça en fait :p ) et je ne sais pas si ça prend bien en compte l'heure de façon à ce que le post apparaisse bien 24h après.

Sinon, je ne sais pas si le calcul de $thread[startdate] et de $thread[starttime] est utile, on peut peut être utiliser 'dateline' directement?

Voilà où j'en suis.
:(

Yoyo
01/12/2002, 22h52
Bon, je vais me démerder avec le hack qui remplace les dates par "aujourd'hui" et "hier".

Merci quand même :)