Transférer données (manuscrites) vers BDD puis les additionner

Transférer données (manuscrites) vers BDD puis les additionner - PHP - Programmation

Marsh Posté le 06-03-2006 à 21:22:23    

Bonsoir à tous !
 
Voilà, je viens de créer un petit sytème de pronostic. L'internaute se connecte, pronostic. Celui ci est enregistré dans une base de données. Ensuite, je valider le pronostic après que le résultat ne soit connu. Sur la première page apparait son pronostic, le résultat réel, et ses points obtenus.
 
Il faudrait donc que les points obtenus puissent être envoyés vers une table de données sans que l'internaute ne fasse quelque chose. Une fois ses points dans une table, il faudrait additionner tous ses points depuis le début (des pronostics donc) et établir un petit classement.
 
Comment donc envoyer les points dans une table sans qu'il ne fasse rien ????

Message cité 1 fois
Message édité par oli1987 le 06-03-2006 à 21:41:07
Reply

Marsh Posté le 06-03-2006 à 21:22:23   

Reply

Marsh Posté le 07-03-2006 à 10:18:04    

hum...
si je comprends bien,
- "L'internaute se connecte, pronostic" => il soumet un formulaire et là tu as une page qui enregistre le pronostique dans une table de ta base de données.
- "je valider le pronostic après que le résultat ne soit connu" => là cette fois c'est toi qui valide un autre formulaire, donc à ce moment là tu mets a jour les points de tes utilisateurs.


---------------
http://poemes.iceteapeche.com - http://www.simuland.net
Reply

Marsh Posté le 07-03-2006 à 18:21:54    

mais t'as toujours pas fini avec ca toi ? ;)


---------------
N'oubliez pas de mettre [RESOLU] dans le titre quand c'est fini - Pour poster vos sources : http://paste.clicksources.com/
Reply

Marsh Posté le 07-03-2006 à 20:00:23    

oli1987 a écrit :


Il faudrait donc que les points obtenus puissent être envoyés vers une table de données sans que l'internaute ne fasse quelque chose.


 
Sans qu'il ne fasse rien, c'est pas possible à moins d'engager un voyant qui va lire dans les pensées de l'internaute.
 
Autre solution : le manuel MySQL est ton ami, on peut y apprendre à faire une requete qui effectue une somme.

Reply

Marsh Posté le 07-03-2006 à 22:04:43    

salut, non ce n'est pas une somme que je veux faire dans l'immédiat.
Lorsque le résultat du pronostic est connu, j'envoye une donné dans ma table qui affiche sur la zone privée le nombre de points que l'internaute a obtenu. Mais ce nombre n'est affiché que sur la page d'accueil de la zone privée, et j'aimerai l'envoyé dans une autre table également ...

Reply

Marsh Posté le 07-03-2006 à 22:17:21    

e manuel MySQL est ton ami, on peut y apprendre à faire une requete qui effectue une insertion vu que tes explications sont imbitables

Reply

Marsh Posté le 07-03-2006 à 22:20:13    

pfff

Reply

Marsh Posté le 07-03-2006 à 23:03:02    

mais si tu sais faire une requete je vois pas où est le problème dans ton truc. En + c'est pa super clair ce que tu dis.


---------------
N'oubliez pas de mettre [RESOLU] dans le titre quand c'est fini - Pour poster vos sources : http://paste.clicksources.com/
Reply

Marsh Posté le 07-03-2006 à 23:34:37    

laissez le faire, on viendra lui prendre son argent une fois qu'il aura mis son stie en ligne

Reply

Marsh Posté le 08-03-2006 à 00:42:16    

newneo2001 a écrit :

mais si tu sais faire une requete je vois pas où est le problème dans ton truc. En + c'est pa super clair ce que tu dis.


C'est clair que c'est le truc basique de chez basique ce qu'il demande (comptabiliser des points) mais il ose encore demander si c'est "possible de faire" ça en php/mysql : à traduire par "faites le à ma place"

Reply

Marsh Posté le 08-03-2006 à 00:42:16   

Reply

Marsh Posté le 08-03-2006 à 07:34:11    

si tu le dis, t'as surement raison manneke

Reply

Marsh Posté le 08-03-2006 à 10:34:24    

> ma requete appelle le pronostic et la bonne réponse. Ma condition if attribue des points si le prono == bonne réponse
 
Et sur l'écran, seul "Vous avez 5 points" apparait. Mais les "5 points" ne sont pas présent dans une table

Reply

Marsh Posté le 08-03-2006 à 10:43:58    

ben faut faire les calculs et enregistrer ces points dans la base de données avant de les afficher

Reply

Marsh Posté le 08-03-2006 à 10:53:52    

et il y a moyen de regrouper une donnée de deux tables dans une seule table ???

Reply

Marsh Posté le 08-03-2006 à 11:38:40    

RTFM !

Reply

Marsh Posté le 08-03-2006 à 11:40:03    

oli1987 a écrit :

et il y a moyen de regrouper une donnée de deux tables dans une seule table ???


 
non, c'est pas possible :o

Reply

Marsh Posté le 08-03-2006 à 11:56:45    

oli1987 > Il est grand grand temps que tu apprennes à mieux organiser ton code et tes données, bref que t'aprenne à faire des algorythmes :

  • Etape 1 : déterminer ce que fait chaque page du site, ce que chaque d'entre elles doit afficher comme information et de quoi ont elles besoin comme information pour tout afficher (il faut déjà faire la différence à ce niveau entre ce que l'utilisateur doit saisir à l'instant et ce qui est stocké dans la base de donnée)
  • Etape 2: une fois répertorié toutes les informations qui doivent être stocké dans la base, il faut que tu détermines les relations existant entre chaque donnée afin de déterminer comment les placer (par exemple "un pari est un choix de résultat fait par une personne donnée sur un match donné". Donc la table pari contiendra au moins l'identifiant de la personne, l'identifiant du match et le résultat choisit.)
  • Etape 3: créer l'algorythme détaillé permettant de récupérer ou calculer les données à afficher. En bref, pour chaque élément affiché ou calculé : qu'est ce que je vais chercher et où, comment vais je les récupérer et qu'est ce que je vais en faire.


Si tu n'as rien fait de tout ça et que tu n'as pas une vision inné de l'organisation des données et du code, alors c'est normal que tes explications soient aussi bordélique et qu'en fait, ca ne soit pas plus clair dans ta tête. Je sais trés bien que c'est chiant de devoir faire ça, mais si tu ne veux pas que ton site et tes données ressemblent à un méga plat de spaguetis à la bolognaise où chaque spaguetis est un cheminement logique et chaque morceaux de viande un élément inutile dans lequel tu t'es empétré et dont tu ne sais même plus s'il est encore utilisé alors t'as intéré de te mettre d'arrache pied à la création d'algorythme avant de continuer quoi que ce soit dans ton site.

Reply

Marsh Posté le 08-03-2006 à 11:58:48    

smaragdus a écrit :

non, c'est pas possible :o


Et pourtant, ("vue" d'une base de donnée, requettes de type "insert ... Select" ) mais vu ses questions c'est actuellement hors de sa porté vu qu'il ne sais pas faire des chôses pourtant beaucoup plus simple.

Reply

Marsh Posté le 08-03-2006 à 17:50:53    

Pour être clair ;)
Voilà ce que je sais faire apparaître à l'écran. Seulement, la valeur des points qui est 5, vient de la table avec la bonne réponse. pointsok : 5, pointsko : 0
 
http://users.skynet.be/fa627592/nouvel1.gif
 
Je sais donc juste calculer que cela vaut 10 points, mais j'aimerai qu'ils soient présents dans une table de données et non pas via une simple addition de résultats de requête.
 
 
C'est plus clair ?

Reply

Marsh Posté le 08-03-2006 à 18:00:04    

juste une question
tu pourrais donner le code HTML/PHP de ton truc là ?

Reply

Marsh Posté le 08-03-2006 à 18:03:15    

c'est clair qu'il va y avoir une chiée de requêtes, et c'est pour ça que j'aimerai mieux mettre tout ça dans une table...
 
att"

Reply

Marsh Posté le 08-03-2006 à 18:03:31    

Code :
  1. <?php
  2. session_start();
  3. ?>
  4. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  5. <html xmlns="http://www.w3.org/1999/xhtml">
  6. <head>
  7. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  8. <title>BCML.BE : Zone privée</title>
  9. </head>
  10. <body background="background.gif">
  11. <?php
  12. $host = "localhost"; 
  13. $login = "root"; 
  14. $password = ""; 
  15. $base = "bcml"; 
  16. $db = mysql_connect($host,$login,$password) or die ("problème lors de la création de la connection !" );
  17. $database = mysql_select_db($base,$db) or die ("problème lors de la création de la connection !" ); 
  18. ?>
  19. <?php
  20. $sql = mysql_query("SELECT id FROM users WHERE pseudo='". mysql_real_escape_string($_SESSION['MM_Username']) ."'" ) or die ("problème lors de la création de la connection !" );
  21. $res = mysql_fetch_assoc($sql);
  22. ?>
  23. <?php
  24. $req1 = mysql_query("SELECT id FROM prono WHERE id='1'" );
  25. $res1 = mysql_fetch_array($req1);
  26. ?>
  27. <?php
  28. $req2 = mysql_query("SELECT reponse FROM pari WHERE id_pari='1' AND id_user='". mysql_real_escape_string($res['id']) ."'" );
  29. $res2 = mysql_fetch_array($req2);
  30. ?>
  31. <?php
  32. $req3 = mysql_query("SELECT reponse FROM result WHERE id='1'" );
  33. $res3 = mysql_fetch_array($req3);
  34. ?>
  35. <?php
  36. $req4 = mysql_query("SELECT pointsok FROM result WHERE id='1'" );
  37. $res4 = mysql_fetch_array($req4);
  38. ?>
  39. <?php
  40. $req5 = mysql_query("SELECT pointsko FROM result WHERE id='1'" );
  41. $res5 = mysql_fetch_array($req5);
  42. ?>
  43. <?php
  44. $req6 = mysql_query("SELECT id FROM prono WHERE id='7'" );
  45. $res6 = mysql_fetch_array($req6);
  46. ?>
  47. <?php
  48. $req7 = mysql_query("SELECT reponse FROM pari WHERE id_pari='7' AND id_user='". mysql_real_escape_string($res['id']) ."'" );
  49. $res7 = mysql_fetch_array($req7);
  50. ?>
  51. <?php
  52. $req8 = mysql_query("SELECT reponse FROM result WHERE id='7'" );
  53. $res8 = mysql_fetch_array($req8);
  54. ?>
  55. <?php
  56. if ($res2['reponse'] == $res3['reponse'])
  57. {
  58. $total = $res4['pointsok'];
  59. $message = 'Bravo !';
  60. }
  61. else
  62. {
  63. $total = $res5['pointsko'];
  64. $message = 'Pas de chance';
  65. }
  66. if ($res7['reponse'] == $res8['reponse'])
  67. {
  68. $total1 = $res4['pointsok'];
  69. $message1 = 'Bravo !';
  70. }
  71. else
  72. {
  73. $total1 = $res5['pointsko'];
  74. $message1 = 'Pas de chance';
  75. }
  76. $score = $total + $total1;
  77. ?>
  78. <?php
  79. echo '<p>Bonjour '.$_SESSION['MM_Username'];
  80. echo '<p>Pronostic 1 par <a href=pari.php>ici</a></p>';
  81. echo '<p>Pronostic 2 par <a href=pari2.php>ici</a></p>';
  82. echo '<hr>';
  83. echo 'Prono numéro '.$res1['id'];
  84. echo '<p>Votre pronostic était : '.$res2['reponse'];
  85. echo '<br>Et la réponse correcte est : '.$res3['reponse'];
  86. echo '<br>Vous totalisez '.$total;
  87. echo ' point(s). '.$message;
  88. echo '<hr>';
  89. echo 'Prono numéro '.$res6['id'];
  90. echo '<p>Votre pronostic était : '.$res7['reponse'];
  91. echo '<br>Et la réponse correcte est : '.$res8['reponse'];
  92. echo '<br>Vous totalisez '.$total1;
  93. echo ' point(s). '.$message1;
  94. echo '<p>Vous totalisez donc '.$score;
  95. echo ' points';
  96. ?>
  97. <?php
  98. mysql_close(); 
  99. ?> 
  100. </body>
  101. </html>

Reply

Marsh Posté le 08-03-2006 à 18:31:41    

Bon les gars je vous laisse l'achever, j'ai pas le courage de lui dire...

Reply

Marsh Posté le 08-03-2006 à 18:33:30    

j'ai pas pris le temps d'éplucher ton code mais ça, ca m'a sauter aux yeux :

Code :
  1. <?php
  2. $req3 = mysql_query("SELECT reponse FROM result WHERE id='1'" );
  3. $res3 = mysql_fetch_array($req3);
  4. ?>
  5. <?php
  6. $req4 = mysql_query("SELECT pointsok FROM result WHERE id='1'" );
  7. $res4 = mysql_fetch_array($req4);
  8. ?>
  9. <?php
  10. $req5 = mysql_query("SELECT pointsko FROM result WHERE id='1'" );
  11. $res5 = mysql_fetch_array($req5);
  12. ?>


Deux remarques :  

  • si t'as besoin de plusieurs données provenant de la même ligne d'une table, alors fait le en 1 seule requette. Ca ne sert à rien se s'amuser à faire bosser 15 fois la base de donnée quand c'est faisable en une seule fois.
  • Ca sert à rien de sortir du mode php si tu n'affiches rien avant le bout de code php suivant. C'est une perte de temps processeur inutile, ca te rajoute des caractéres inutiles pour ne pas dire génant dans le code html final et ca n'a aucune utilité.


Bref, ton code super long que j'ai recopier ci dessus, il devient :

Code :
  1. <?php
  2. $req3 = mysql_query("SELECT reponse,pointsok,pointsko FROM result WHERE id='1'" );
  3. $res3 = mysql_fetch_array($req3);
  4. ?>


 
A toi d'adapter le reste, ca rendra le tout plus facile à relire et surtout, ca rendra ta page énormément plus rapide.

Reply

Marsh Posté le 08-03-2006 à 18:38:35    

oki merci ! et si sur une page je veux afficher tous les résultats obtenus, je dois donc mettre toutes ces requêtes ??? c'est obligé donc ?

Reply

Marsh Posté le 08-03-2006 à 18:40:40    

google, manuel php, manuel mysql, tutos php, tutos mysql, tutos HTML, tutos CSS, toussa quoi et revient pas avant

Reply

Marsh Posté le 08-03-2006 à 18:46:52    

titchu ti, t'es vachement cultivé

Reply

Marsh Posté le 08-03-2006 à 18:53:54    

parle français s'il te plait, on te comprend par parfois.

Reply

Marsh Posté le 08-03-2006 à 18:56:45    

ho pour rire hein, on va se documenter alors ;)

Reply

Marsh Posté le 08-03-2006 à 23:21:49    

oli1987 a écrit :

ho pour rire hein, on va se documenter alors ;)


 
Oh oui, allez-y tous les 2 même ;)


---------------
Gamertag: CoteBlack YeLL
Reply

Marsh Posté le 09-03-2006 à 07:26:38    

Nan pour moi ca ira pour aujourd'hui, mais tout dev que je fais passe par :
-Cahier des charges
-Analyse du bouzin
-Spécifications fonctionnelles (en parties comprises dans le cahier des charges)
-Recherche spécifique sur certaines technos qui pourraient être employés si j'en ai pas la connaissance ni la pratique, donc entrainement avant sur un modele
-Codage propre (ca c'est pas compliqué quand on est rigoureux) et surtout très commenté.
 
Si tout le monde prenait un minimum ces prérogatives je pense qu'ils n'auraient pas forcément besoin d'envahir le forum avec des questions à 2 balles.

Message cité 1 fois
Message édité par gatsu35 le 09-03-2006 à 07:27:14
Reply

Marsh Posté le 09-03-2006 à 09:09:53    

gatsu35 a écrit :

Nan pour moi ca ira pour aujourd'hui, mais tout dev que je fais passe par :


 
Je parlais pas de toi en disant "allez-y tous les 2" :whistle:


---------------
Gamertag: CoteBlack YeLL
Reply

Marsh Posté le 09-03-2006 à 09:37:46    

Ben tu parlais de qui alors ?

Reply

Marsh Posté le 09-03-2006 à 09:45:10    

gatsu35 a écrit :

Ben tu parlais de qui alors ?


 
Je pensais qu'ils s'y étaient mis à 2 pour pondre ce code ... je savais pas que c'était possible tout seul :whistle:
 
'fin c'était un joke quoi [:jofusion]


---------------
Gamertag: CoteBlack YeLL
Reply

Marsh Posté le 09-03-2006 à 09:57:49    

Ben le truc à chier qu'ils sont en train de pondre c'est tout à fait développable tout seul :/
si on est rigoureux et qu'on a bien pondu toutes les spécifications avant.
De là à faire une analyse en UML c'est un peu gros mais ca se pourrait
tiens ca me fait penser, j'ai de la lecture à faire moi

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed