aidez moi à le coder.. mon système de points. - PHP - Programmation
Marsh Posté le 09-04-2005 à 00:57:29
Et sinon, t'as une question précise ou faut qu'on la devine ?
Peut-être que si tu posais les problèmes que tu rencontres, on serait utile (ou pas )
Marsh Posté le 09-04-2005 à 06:44:27
heu sinon, question bete : 5000 points le download c'est un exemple ou il faut vraiment visiter 5000 pages de ton site pendant 50 jours avant de pouvoir télécharger un truc ?
c'est pas que j'aime pas m'inscrire sur un site mais là ...
sinon faut voir que si c'est pour décharger ta bande passante, ca va plutot l'augmenter, rapport aux connections sur tes 5000 pages
conseil: commence par le design de ta base de données pour savoir ce que tu mets dedans, quelles tables, quelles relations ...
Marsh Posté le 09-04-2005 à 13:35:01
ouep. en fait vous avez raison. d'aileur j'avais commencé à coder hier déjà après avoir posté.
par contre pour mon systeme de points je suis un peu à la masse, je ne sais pas du tout comment je pourrai gerer ça avec PHP.
sinon 5000 c'est un exemple hein... ... en vrai c'est 50000
merci de me donner un petite idée quant à la gestion de ce système de points.
Marsh Posté le 09-04-2005 à 13:56:50
Bah une table toute conne.
Exemple après 3 secondes de reflexion :
pseudo | point_total | point_journée | journée |
Quand pseudo visite une page, tu prends la valeur de journée de son pseudo.
Si journée est différente de la date d'aujourd'hui,
tu remets à zéro point_journée
tu donne la date d'aujourd'hui dans journée.
Si point_journée est inférieur à 100,
tu incrémentes point_journée
tu incrémentes point_total.
Marsh Posté le 09-04-2005 à 14:50:31
merci Master P. le schéma me plait bien, je vais procéder ainsi.
je viendrai poser frequemment les probs que je rencontre ici.
donc ça c'est pépère, c'est du if, par contre pour comparer le champ "journée" je saurai pas du tout comment procéder. elle doit se presenter comment mas date et sous quelle forme.
pseudo et les points je les met en varchar mais pour "journée" je lui affecte quoi??
merci
Marsh Posté le 09-04-2005 à 18:44:00
Bah de type INTEGER et comme valeur tu lui donne date("ymd" );
Ca facilite les comparaisons pour les > et <.
Et il est impossible que deux "identifiant de jour" soient identiques.
Marsh Posté le 09-04-2005 à 20:28:27
j'ai mis point_journée et point_total en INTEGER aussi, c'est correct?
dans la database ça donne int(11).
edit:
euhhh... journée je l'ai mis de type DATE tout court. ça le formatte en Ymd automatique avec 0000-00-00 pour valeur par défaut. je suis bon là?
Marsh Posté le 09-04-2005 à 21:22:16
je fais comment pour "prendre la valeur de journée de son pseudo" ??
je pensais à:
Code :
|
bon voilà ce que je viens de faire depuis vos derniers conseils, sachant que j'ai aussi commencé un formulaire d'inscription avec des sessions que je me permettrai de vous soumettre afin de jouir de votre expérience.
est-ce que c'est correct déjà? et pourrait-on faire plus propre syntaxiquement ou rajouter des trucs, faire plus efficace, performant, pour pas que le gars triche etc...
merci à vous.
Marsh Posté le 09-04-2005 à 22:52:59
Code :
|
voilà, j'ai rebossé un p'tit coup pour nettoyer mes betises mais en, comme en temeoignent mes tests en local, ça ne marche pas. bizarrement je n'ai aucun message d'erreur mais ça n'upadte pas point_total et point_journee. en revanche la date est bien updatée.
parce qu'il semblerai que
Code :
|
soit toujours VRAI. en effet si je change la requête $maj elle est TOUJOURS effectuée.
merci.
je vais me coucher, ce soir j'arrive pas à en deceler la cause.
Marsh Posté le 09-04-2005 à 23:48:50
Ligne4 : confonds pas Table et Base (mysql_select() permet de sélectionner la base)
Ligne 8 : $donnes != $donnees
Ligne 10 : Ton champ journee devreait être au format DATE, ce serait plus pratique, du type Y-m-d
Ligne 14 : Pas de elseif, juste un if, ou sinon tu n'attribeuras pas de points quand il lira la première page de la journée
Code :
|
Fais ta page, teste-là d'abord toi-même, reviens nous voir si ça bloque quelque part, et tu seras bien content d'avoir fait ton truc (presque) toi-même plutôt qu'on te file tout un script non-sécurisé que tu ne sauras pas faire évolué.
J'ai quasiment tout fait dans cette partie , essaie de t'y mettre
Marsh Posté le 09-04-2005 à 23:52:42
c'est corrigé Master P, j'ai édité pendant que tu composais semble-t-il. tu peux rejeter un coup d'oeil stp.
edit:
j'ai cerné toutes ces conneries... apparemment ça vient du elseif.
j'vais voir tiens...
Marsh Posté le 09-04-2005 à 23:59:18
Ligne 14 : planter != plenter
Ligne 13 : en mySQL, DATE est du type yyyy-mm-dd, il faut donc que tu compares avec la date d'aujourd'hui au format yyyy-mm-dd, or ici, tu sors une date au format yyyyddmm
Marsh Posté le 10-04-2005 à 00:07:54
Master p a écrit : Ligne 14 : planter != plenter |
Master p a écrit : |
c'est corrigé.
bon là j'en suis sûr ça vient du elseif que j'avait fait au départ! m'enfin là, j'aimerai que tu lise le code stp, j'arriverai pas à te l'expliquer en français, tuout se passe au niveau du second ELSE, que je tiens à afficher dans le cas oû le gars n'est enregistré. je suis obligé de lui consacrer un if sytle
Code :
|
??
edit:
cf. plus bas.
décidemment j'ai des problème avec l'édition.
Marsh Posté le 10-04-2005 à 00:09:36
pmusa a écrit :
|
Marsh Posté le 10-04-2005 à 00:16:37
Reposte le code en entier, je vois pas le pbm. Y a un message d'erreur ?
Marsh Posté le 10-04-2005 à 00:20:10
arggg nada!
OK je reposte le code en entier, donne moi deux minutes.
Code :
|
edit:
j'ai relu tes conseils, en fait c'est peut-être une confusion entre table et bdd comme tu dis si bien...
je vais verfier pour les mysql_connect() --> euhh non même pas. c'est bien juste en fait.
piteing chuis un bouley, y'a la date aussi où je me plante encore... [corrigé dans le post]
edit:
bon bah, je constate encore que mon compteur ne s'incrémente pas, et pire point_total retombe tjrs à zero... j'ai essayé de modifier avec phpmyadmin les point_journee et point_total pour voir si c'est pas à cause du zero. je sais pas bien en fait.
Marsh Posté le 10-04-2005 à 16:07:58
Déjà, je sais même pas si tu te connectes à ta bdd :
http://fr3.php.net/manual/fr/funct [...] ect-db.php
Le reste... à voir
Marsh Posté le 10-04-2005 à 16:15:01
Que revoie la ligne 11 ? $donnees['pseudo'] != '' ?
Petit détail : j'étais pas trop convaincu par le point_journee+= '1', mais après recherche, je le suis encore moins (pas trouvé de référence là dessus). Ça donne quoi en mettant point_journee=point_journee+1 (sans quote, puisqu'il s'agit d'un entier et je ne suis pas sûr de la réaction de mySQL quand tu ajoutes un string à un entier.)
Marsh Posté le 10-04-2005 à 16:41:25
yesss. Master P t'es une bête.
bon, je suis convaincu du resultat, ça donne bien ce que j'en attendais. je developpe mon espace membre en parallèle. et je vous montrerez surement ma page de traitement du formulaire d'inscription parce que je suis vraiment pas très satisfait de mon code, je suis pas très rigoureux. y'a des if partout c'est sal.
encore merci Master P.
edit:
$donnees['pseudo'] renvoi le pseudo du gars depuis la bdd mais en fait je vois ou tu veux en venir... si je reprenais juste mon $_SESSION['pseudo'] ça suffirai n'est-ce pas? surtout que c'est plus pratique. m'enfin j'y aurai probablement pensé, si j'opte pour les sessions et que j'envoie des requtes sur chaque pages pour retrouver le pseudo....
edit2:
je crie victoire trop vite, point_journee ne s'increment pas, il passe bien de 0 (valeur par défaut) à 1 mais après ça stop, et ensuite même après 100 points ça continue.
de plus, la date n'est updatée.
je chercher hein...
c'est un problème avec la date.
quand je change le formattage de la date, comme ça:
Code :
|
et bien la date est correctement updatée. point_total s'incrément de 1 tandis que point_journee reste toujours à 1. On dirai que quand il passe dans la structure conditionnelle c'est toujours VRAI, donc il passe à 0 et ensuite dans la condition < 100 il est VRAI aussi donc prend +1. en fait fait un cycle 0 puis 1 puis 0 puis 1 puis 0 puis 1
donc ça viendrait bien de la date ça...
edit3:
euhh un truc grave bizarre (!), c'est que dans la table, dans le champ point_total il est inscrit 28 et à l'écran du visiteur il est affiché qu'il a 27 pts.
edit4:
echo "".".date(Y-m-d)."";
me renvoi 0 !!!! il est surement là le prob.
si je met
echo "".".date(Ymd)."";
ça me renvoie 20050410
Marsh Posté le 10-04-2005 à 17:27:06
eh. j'ai trouvé.
ça irai peut-être mieux si on mettai les quotes à la date genre
date('Y-m-d')
par contre quelq'un veut bien m'expliquer pourquoi il est noté par exemple 86 points dans la bdd et qu'il est affiché 'vous avez 85 points' au visiteur? c'est normal?
Marsh Posté le 10-04-2005 à 19:17:43
Tu prends la valeur dans la bdd, ensuite tu l'incrémentes...
Forcément, la valeur que tu as gardé de point_journée est celle avant incrémentation
Marsh Posté le 10-04-2005 à 19:32:15
ok merci j'ai corrigé l'erreur.
il suffisait de deplacer le echo tout au debut juste après la requete d'incrementation pour reprendre la nouvelle valeur qui lui été affectée.
Master P je t'aime.
Marsh Posté le 10-04-2005 à 20:19:51
Mais ya quand même un truc que je ne comprend pas, c'est ce système de points quel est l'intérêt de la chose? Parceque si le gars se fais un soft vite fait qui actualise la page toutes les dix secondes et bien il obtient un max de points sans rien faire.
Ce genre de soft est assez simple à faire et en plus en arrière plan ca ne se voit pas et ca ne bouffe pas de ressources donc le gars est tout à fait tranquil pour gagner des points?
Sinon je pensais à autre chose, le cache du navigateur ne pourrait-il pas poser un problème? Parceque si la page n'est pas rechargée depuis le serveur et bien pas de point pour monsieur... Donc peut être une petite indication dans le header? Et ne me dite pas que la page est forcément re téléchargée, parceque des fois j'ai quand même vu ce putain d'IE m'afficher une page sans même que je ne sois connecté....
Marsh Posté le 10-04-2005 à 20:22:57
concernant le cache je crois pas hein. au pire je fais un pragma-cache machin...
Marsh Posté le 08-04-2005 à 18:15:29
bonjour,
Je souhaite créer un truc du genre:
1. Le visiteur s'inscrit et crée un compte
2. Il a accès à une zone membre, il peut modifier son profil et tout..
3. en surfant sur les pages du sites, ce membre qui dispose d'un compte peut gagner mettons 100 points par jour, 1 par page vu... 100 étant le maximum par jour. au dela, son compteur de point s'arrête. et il peut revenir demain pour en accumuler d'autres, soit passer à: les 100 qu'il avait hier + les 100 qu'il gagne le lendemain. 100 + 100 = 200
4. Le gars à 10000 points, il peut donc telecharger un logiciel dans la logithèque en échange de 5000 points qui lui sont ensuite décrédités.
En gros, c'est ce que j'envisage de faire. J'ai pas envie de passer par une plateforme allopass (petit partisant du Libre oblige) ni de proposer mes produits gratuitement (tout travail mérite salaire, ne serait-ce qu'une petite reconnaissance...) --> J'ai donc tout de suite pensé à ce système de point, que je compte bien developper.
J'aimerai qu'on fasse un check-up ensemble pour savoir un peu le squelette qu'aurai ce module. Quelles fonctions seront necessaires, comment pourrait se présenter la base de donnée, et comment ces points pourraient être gérés, etc..
Je ne vous demande surtout pas de me le coder mais me donner une idée de ce à quoi j'aurai recours: je débute un peu en PHP, j'ai vraiment besoin d'être guidé. Je ne sais pas encore à quels problème je serai confronté c'est pourquoi je désir m'oganiser correctement et efficacement en m'adressant vous.
Concernant le 1) et le 2) je pense que je vais largement m'inspirer d'un petit script et le customiser selon mes attentes histoire de gagner de temps (ou bien me debrouiller seul, j'en suis capable, un petit truc avec des sessions et tout ça, bien pro ) donc il reste le 3) et le 4) qui me perturbent pas mal.
J'aimerai aussi faire en sorte que le visiteur non-inscrit ne puisse pas télécharger le produit (mais voir sa fiche quand même...) et qu'un petit message s'affiche pour celui-ci comme quoi il lui suffit de s'incrire bla bla bla...
MERCI, j'attend votre aimable contribution.
Message édité par pmusa le 08-04-2005 à 18:19:23