Votre avis pour organiser une table.

Eléphant du PHP | 89 Messages

08 mars 2005, 14:09

Bonjour,

je suis nouveau sur le forum et en programmation php ...

J'ai récupéré les tirages d'une loterie: les données se présentent comme ceci 02/04/1978;6;17;30;31;35;37;15 soit les dates de tirage, les 6 n° du tirage et le n° complémentaire.

Objectif : interroger ma DB pour savoir combien de fois j'aurais fait 6 bons n° ou 5 + complémentaire, 5 bons, 4 bons ou 3 bons en rentrant disons mes n° fétiches
Le suppose que je dois d'abord essayer de faire cela en requete sql avant d'essayer en php ?

Problème: je ne vois pas comment agencer ma table create tirage_tbl (date_tirage, numéros, numéro_compl) (je ne mets pas volontairement les attributs des champs) ?
Comment ensuite faire un select de mes 6 n° pour voir s'ils sont sortis ? je dois utiliser une boucle pour lire chaque ligne ?

Quelq'un peut-il m'aider ?

D'avance merci.

Mammouth du PHP | 19672 Messages

08 mars 2005, 15:54

Salut,
la première chose que tu pourrais faire, ce serait de regarder de la documentation. Voici entre autres une mine d'informations
Ensuite, il te faut définir sur quel type de base de données tu veux monter une base. Il faut en effet savoir que d'un SGBD à l'autre, il oeut y avoir des variations dans la syntaxe du lengage employé, toujours le SQL mais avec ce qu'on pourrait qualifier d'idiômes propres à chaque SGBD.
Enfin, il te faut définir exactement ce que tu veux obtenir et en faire une liste à partir de laquelle tu vas construire tes requêtes. Par la suite seulement, tu pourras envisager de programmer en PHP pour interagir avec ta base en utilisant ces requêtes.
Mais il faut commencer avec la doc. Il est difficile et surtout peu envisageable de te faire ici un cours complet de SQL, c'est un peu trop lourd pour ce simple forum.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 161 Messages

08 mars 2005, 16:11

lengage employé
oh ma faute d'orthographe de ouf :)

bon allez jsort moi jmet des ' au lieux des " partout ds mes codes

Eléphant du PHP | 89 Messages

09 mars 2005, 14:09

Waw, la doc !!! Je me suis mis à lire la doc sur le select hier soir ...

J'ai également lu la doc de php débutant et je pensais que ce serait largement suffisant pour un petit cas de ce genre.

Pour être plus clair, je veux juste insrérer les résultats des tirage de cette loterie dans une base dans phpmyadmin et faire des select sur cette base. Une fois les select OK, je les adapte au langage php ..

c'est pas bon comme démarche ?

Mammouth du PHP | 19672 Messages

09 mars 2005, 15:04

C'est exactement ça.
La première chose à faire, c'est de lister exactement toutes les données que tu as à manipuler: tu crées un "dictionnaire de données"
Ensuite, tu répartis ces données par groupe (si nécessaire) en établissant des entités et des paramètres: par exemple, tu as une entité "tirage" qui a en paramètres "date_tirage", "premier_numero", "second_numero",.. etc.. Qui devient le schéma d'une table dans la base de données : on nomme ça le "modèle conceptuel de données"
Partant de là, tu détermines les actions que tu souhaites pouvoir faire en fonction des différentes tables et résultats souhaités: tu conçois les requêtes SQL en déterminant quels éléments seront fixes et lesquels seront variables dans ces mêmes requêtes.
Enfin, tu conçois le script en PHP qui va permettre la mise en oeuvre de ces requêtes pour la manipulation et/ou l'affichage des résultats souhaités.
BOn code :)
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 89 Messages

11 mars 2005, 14:11

Bon, j'ai suivi vos conseils. J'ai créé la table tirage_tbl suivante:

dtirage num1 num2 num3 num4 num5 num6 numérocompl

23/2/01 1 2 3 12 14 10 11
22/2/00 7 25 28 30 40 41 38
..... ......

Imaginons que je demande combien de fois mes n° 1,2,3,4,5,6 et le complémentaire le 7 sont sortis:

J'ai regardé la doc sur les fonctions agrégats:

select dtirage count (num1,num2,num3,num4,num5,num6,numérocompl) from tirage_tbl
where (1,2,3,4,5,6) in num1 or (1,2,3,4,5,6) in num2 or (1,2,3,4,5,6) in num3 or (1,2,3,4,5,6) in num4 or (1,2,3,4,5,6) in num5 or (1,2,3,4,5,6) in num6
and numérocompl = 7
and count() > 3
goup by dtirage;

La requête devrait me ramener 3 bons numéros le 23/2/01, mais ce n'est pas du tout le cas :cry:

Quelqu'un peut-il m'aider ?

Mammouth du PHP | 19672 Messages

11 mars 2005, 15:11

Le problème est effectivement dans la requête. Count() va compter le nombre de lignes où on trouve l'occurence d'une valeur. Pour savoir combien de fois on a au moins trois des numéros proposés dans un tirage, il faut revoir la manière de poser la question (et donc la requête). Dans l'immédiat, je n'ai pas la solution toute prête, mais à vue de nez, la requête va être autrement plus longue et complexe à monter.
Je vais y réfléchir et revenir dès que je trouverai une solution si personne n'a rien proposé de fonctionnel entre-temps :)
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 89 Messages

11 mars 2005, 15:26

D'avance merci pour ton aide.

Sachant que la prochaine étape est d'associer le nombre de bons numéros avec le gain attribué aux bons nombres de n° sortis lors de ce tirage ... (le lien entre les tables sera la date de tirage)

Mais ça c'est la prochaine étape ... :P