PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 21-03-2010 09:38:48

aurel22
Membre
Inscription : 21-03-2010
Messages : 13

trier resultat requete

bonjour,
cela fais 3 jours que je cherche ,je voudrais recuperer des tirages mais uniquement a partir de chiffre que je mets au depart.
c est a dire il y a 20 numero tire au sort,je voudrais que en mettant 2 chiffres via une variable chacun, avoir en resultat que les tirages ou ses chiffres apparaissent.
 
$chiffre1=26;
$chiffre2=49;


$select = 'SELECT * FROM jeu LIMIT 10';
if($chiffre1 == 26)
$result = mysql_query($select) or die ('Erreur : '.mysql_error() );

$total = mysql_num_rows($result);




if($total) {
   
    echo '<table bgcolor="#FFFFFF">'."\n";
       
        echo '<tr>';
        echo '<td bgcolor="#669999"><b><u>tirage</u></b></td>';
        echo '<td bgcolor="#669999"><b><u>boule 1</u></b></td>';
        echo '<td bgcolor="#669999"><b><u>boule 2</u></b></td>';
        echo '<td bgcolor="#669999"><b><u>boule 3</u></b></td>';
        echo '<td bgcolor="#669999"><b><u>boule 4</u></b></td>';
        echo '<td bgcolor="#669999"><b><u>boule 5</u></b></td>' ;       
        echo '<td bgcolor="#669999"><b><u>boule 6</u></b></td>';
        echo '<td bgcolor="#669999"><b><u>boule 7</u></b></td>';
        echo '<td bgcolor="#669999"><b><u>boule 8</u></b></td>';
        echo '<td bgcolor="#669999"><b><u>boule 9</u></b></td>';
        echo '<td bgcolor="#669999"><b><u>boule 10</u></b></td>' ;       
        echo '<td bgcolor="#669999"><b><u>boule 11</u></b></td>';
        echo '<td bgcolor="#669999"><b><u>boule 12</u></b></td>';
        echo '<td bgcolor="#669999"><b><u>boule 13</u></b></td>';
        echo '<td bgcolor="#669999"><b><u>boule 14</u></b></td>';
        echo '<td bgcolor="#669999"><b><u>boule 15</u></b></td>' ;
        echo '<td bgcolor="#669999"><b><u>boule 16</u></b></td>';
        echo '<td bgcolor="#669999"><b><u>boule 17</u></b></td>';
        echo '<td bgcolor="#669999"><b><u>boule 18</u></b></td>';
        echo '<td bgcolor="#669999"><b><u>boule 19</u></b></td>';
        echo '<td bgcolor="#669999"><b><u>boule 20</u></b></td>' ;
   

      echo '</tr>'."\n";
     
    while($row = mysql_fetch_array($result)) {
        echo '<tr>';
        echo '<td bgcolor="#66ff00">'.$row['id'].'</td>';
        echo '<td bgcolor="#CCCCCC">'.$row["boule1"].'</td>';
        echo '<td bgcolor="#CCCCCC">'.$row["boule2"].'</td>';
        echo '<td bgcolor="#CCCCCC">'.$row["boule3"].'</td>';
        echo '<td bgcolor="#CCCCCC">'.$row["boule4"].'</td>';
        echo '<td bgcolor="#CCCCCC">'.$row["boule5"].'</td>';   
        echo '<td bgcolor="#CCCCCC">'.$row["boule6"].'</td>';
        echo '<td bgcolor="#CCCCCC">'.$row["boule7"].'</td>';
        echo '<td bgcolor="#CCCCCC">'.$row["boule8"].'</td>';
        echo '<td bgcolor="#CCCCCC">'.$row["boule9"].'</td>';
        echo '<td bgcolor="#CCCCCC">'.$row["boule10"].'</td>';   
        echo '<td bgcolor="#CCCCCC">'.$row["boule11"].'</td>';
        echo '<td bgcolor="#CCCCCC">'.$row["boule12"].'</td>';
        echo '<td bgcolor="#CCCCCC">'.$row["boule13"].'</td>';
        echo '<td bgcolor="#CCCCCC">'.$row["boule14"].'</td>';
        echo '<td bgcolor="#CCCCCC">'.$row["boule15"].'</td>';   
        echo '<td bgcolor="#CCCCCC">'.$row["boule16"].'</td>';
        echo '<td bgcolor="#CCCCCC">'.$row["boule17"].'</td>';
        echo '<td bgcolor="#CCCCCC">'.$row["boule18"].'</td>';
        echo '<td bgcolor="#CCCCCC">'.$row["boule19"].'</td>';
        echo '<td bgcolor="#CCCCCC">'.$row["boule20"].'</td>';
      echo '</tr>'."\n";
    }
    echo '</table>'."\n";
    // fin du tableau.

echo $total;
    }
else echo 'Pas d\'enregistrements dans cette table...';

// on libère le résultat
mysql_free_result($result);

?>

la j ai bien tous les tirages masi le tri je n y arrive pas.
j ai essayer avec un where dans ma requette suivi d'un and mais pareil avec 20 boule par tirage ca ne passe pas,y compris en integrant or.
a savoir que la table comporte 25000 tirages* 20 chiffres pour chaque.

Hors ligne

#2 21-03-2010 09:57:22

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : trier resultat requete

Je n'ai pas compris la relation entre tes deux chiffres et les tirages. Pourrais-tu expliciter ?

Hors ligne

#3 21-03-2010 10:01:11

aurel22
Membre
Inscription : 21-03-2010
Messages : 13

Re : trier resultat requete

c est pour pouvoir voir les tirages ou ses deux chiffres apparaisent & avoir donc en resultat uniquement les tirages ou ils sont & pas les 25000 tirages.

Hors ligne

#4 21-03-2010 10:06:33

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : trier resultat requete

Dans ce cas c'est une grosse requête de barbare... Il y a sans doute plus condensé mais voici une solution :

$select = 'SELECT * FROM jeu WHERE (boule1='.$chiffre1.' OR boule1='.$chiffre2.') OR (boule2='.$chiffre1.' OR boule2='.$chiffre2.') LIMIT 10';

Et ainsi de suite pour les 20boules.

Dernière modification par xTG (21-03-2010 10:06:43)

Hors ligne

#5 21-03-2010 10:12:48

aurel22
Membre
Inscription : 21-03-2010
Messages : 13

Re : trier resultat requete

j ai essayer avec ceci aussi mais ca ne fonctionne pas,j ai commencer par cela.

Hors ligne

#6 21-03-2010 10:15:42

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : trier resultat requete

En quoi cela ne fonctionne pas ?
Car c'est la méthode à suivre pour ce que tu veux, il n'y en a pas d'autres, tu souhaites récupérer uniquement les tirages dont l'une des boules correspond à chiffre1 ou à chiffre2.

Hors ligne

#7 21-03-2010 10:16:12

aurel22
Membre
Inscription : 21-03-2010
Messages : 13

Re : trier resultat requete

voici le message en faisant comme cela.
Erreur : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(boule1=26 OR boule1=49) OR (boule2=26 OR boule2=49)LIMIT 10' at line 1

Hors ligne

#8 21-03-2010 10:18:19

aurel22
Membre
Inscription : 21-03-2010
Messages : 13

Re : trier resultat requete

non ou les deux chiffres apparaissent dasn le meme tirage.
hors la en faisant comme cela la boule un a soit un numero soirt un autre elle peut pas avoir les 2 chiffres lors du meme tirage.
complexe cette requette.
je suis desolee de faire compliquer comme ca.

Hors ligne

#9 21-03-2010 10:26:23

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : trier resultat requete

Hum tu veux donc seulement les tirages possédant les deux boules.
J'ai une solution en PHP mais cela requiert de tout récupérer de la table...

while($row = mysql_fetch_array($result)) {
  if( in_array($chiffre1,$row) && in_array($chiffre2,$row) )
  {
        echo '<tr>';
        echo '<td bgcolor="#66ff00">'.$row['id'].'</td>';
        echo '<td bgcolor="#CCCCCC">'.$row["boule1"].'</td>';
        echo '<td bgcolor="#CCCCCC">'.$row["boule2"].'</td>';
        echo '<td bgcolor="#CCCCCC">'.$row["boule3"].'</td>';
        echo '<td bgcolor="#CCCCCC">'.$row["boule4"].'</td>';
        echo '<td bgcolor="#CCCCCC">'.$row["boule5"].'</td>';  
        echo '<td bgcolor="#CCCCCC">'.$row["boule6"].'</td>';
        echo '<td bgcolor="#CCCCCC">'.$row["boule7"].'</td>';
        echo '<td bgcolor="#CCCCCC">'.$row["boule8"].'</td>';
        echo '<td bgcolor="#CCCCCC">'.$row["boule9"].'</td>';
        echo '<td bgcolor="#CCCCCC">'.$row["boule10"].'</td>';  
        echo '<td bgcolor="#CCCCCC">'.$row["boule11"].'</td>';
        echo '<td bgcolor="#CCCCCC">'.$row["boule12"].'</td>';
        echo '<td bgcolor="#CCCCCC">'.$row["boule13"].'</td>';
        echo '<td bgcolor="#CCCCCC">'.$row["boule14"].'</td>';
        echo '<td bgcolor="#CCCCCC">'.$row["boule15"].'</td>';  
        echo '<td bgcolor="#CCCCCC">'.$row["boule16"].'</td>';
        echo '<td bgcolor="#CCCCCC">'.$row["boule17"].'</td>';
        echo '<td bgcolor="#CCCCCC">'.$row["boule18"].'</td>';
        echo '<td bgcolor="#CCCCCC">'.$row["boule19"].'</td>';
        echo '<td bgcolor="#CCCCCC">'.$row["boule20"].'</td>';
      echo '</tr>'."\n";
    }
}

Cela n'affichera que les enregistrements dont les valeurs chiffre1 et chiffre2 apparaissent.

Hors ligne

#10 21-03-2010 10:29:00

aurel22
Membre
Inscription : 21-03-2010
Messages : 13

Re : trier resultat requete

je test ca & je te dis si ca pouvait marcher je serais bien contente.

Hors ligne

#11 21-03-2010 10:35:12

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : trier resultat requete

Hum une petite correction car cela vérifie aussi les autres champs :

$id = $row['id'];
unset($row['id']);
if( in_array($chiffre1,$row) && in_array($chiffre2,$row) )
{
        echo '<tr>';
        echo '<td bgcolor="#66ff00">'.$id.'</td>';
        echo '<td bgcolor="#CCCCCC">'.$row["boule1"].'</td>';

Si ta requête renvoie des champs inutiles tu devrais les enlever.
En fait pour faire propre il faut lister les champs dans le SELECT plutôt que de mettre *.

Dernière modification par xTG (21-03-2010 10:36:04)

Hors ligne

#12 21-03-2010 10:40:49

aurel22
Membre
Inscription : 21-03-2010
Messages : 13

Re : trier resultat requete

ah super la ca fonctionne mais je n ai plus le resultat totu en bas de page

echo $total;
    }
else echo 'Pas d\'enregistrements dans cette table...';

// on libère le résultat
mysql_free_result($result);

?>
pour savoir combien de resultat sont retournes.
la il doit y en avoir dasn les 6 ou 7000,j aurais besoin de connaitre le chiffre exact.

mais un grand merci deja pour cetet partie.

Hors ligne

#13 21-03-2010 10:56:27

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : trier resultat requete

Cela dépend de ce que ce total représente. Le nombre dans la base ou le nombre de "gagnant" ?

Hors ligne

#14 21-03-2010 12:31:17

aurel22
Membre
Inscription : 21-03-2010
Messages : 13

Re : trier resultat requete

le nombre total de fois que la combinaison des deux chiffres est sortit

Hors ligne

#15 21-03-2010 12:33:12

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : trier resultat requete

Dans ce cas tu initialises une variable à 0.
Puis tu l'incrémentes à chaque passage dans le if que je t'ai donné.

Hors ligne

#16 21-03-2010 12:38:44

aurel22
Membre
Inscription : 21-03-2010
Messages : 13

Re : trier resultat requete

ok je vais essayer faire ca,je te dis si c est bon

Hors ligne

#17 21-03-2010 12:51:58

aurel22
Membre
Inscription : 21-03-2010
Messages : 13

Re : trier resultat requete

ouiiiiiii,
super ca fonctionne,un tres grand merci a toi.
je sais pas si tu peux encore m aider pour la meme table.
je voudrais recuperer sur tous les tirages, le nombre de fosi que chaque chiffre est sortie.
exemple.
le 1 est sortit 9800 fois
le 2 est sortit 15000 fois
etc...
le tout en une seue fois.

j ai une petite idee sur la facon de faire a aprtir de ma feuille actuelle, en ajoutant juste tous les chiffres dans une variable propre a chaque chiffre.
$chiffre1=1;
$chiffre2=2;
etc...
ca te semble bon?

encore merci

aurelie

Hors ligne

#18 21-03-2010 12:58:51

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : trier resultat requete

Tu peux faire encore plus dynamique :

for($i=1; $i<=20; $i++)
  $tab_boule[$row["boule".$i]]++;

La boucle for pour exécuter 20fois tout en ayant un index numéro de la boule dans la table.
Un tableau dont l'index est la valeur de la boule qu'on incrémente à chaque fois qu'on tombe dessus.

Hors ligne

#19 21-03-2010 13:08:41

aurel22
Membre
Inscription : 21-03-2010
Messages : 13

Re : trier resultat requete

la je vois pas ou faut mettre ca...

Hors ligne

#20 21-03-2010 13:12:36

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : trier resultat requete

Cela utilise la variable $row, c'est donc à mettre dans la boucle while. ^_-

Hors ligne

#21 21-03-2010 13:16:49

aurel22
Membre
Inscription : 21-03-2010
Messages : 13

Re : trier resultat requete

donc c est

while($row = mysql_fetch_array($result)) {

for($i=1; $i<=20; $i++)
$tab_boule[$row["boule".$i]]++;

echo '<tr>';
        echo '<td bgcolor="#66ff00">'.$row['id'].'</td>';
        echo '<td bgcolor="#CCCCCC">'.$row["boule1"].'</td>';
        echo '<td bgcolor="#CCCCCC">'.$row["boule2"].'</td>';
        echo '<td bgcolor="#CCCCCC">'.$row["boule3"].'</td>';
        echo '<td bgcolor="#CCCCCC">'.$row["boule4"].'</td>';
        echo '<td bgcolor="#CCCCCC">'.$row["boule5"].'</td>';   
        echo '<td bgcolor="#CCCCCC">'.$row["boule6"].'</td>';
        echo '<td bgcolor="#CCCCCC">'.$row["boule7"].'</td>';
        echo '<td bgcolor="#CCCCCC">'.$row["boule8"].'</td>';
        echo '<td bgcolor="#CCCCCC">'.$row["boule9"].'</td>';
        echo '<td bgcolor="#CCCCCC">'.$row["boule10"].'</td>';   
        echo '<td bgcolor="#CCCCCC">'.$row["boule11"].'</td>';
        echo '<td bgcolor="#CCCCCC">'.$row["boule12"].'</td>';
        echo '<td bgcolor="#CCCCCC">'.$row["boule13"].'</td>';
        echo '<td bgcolor="#CCCCCC">'.$row["boule14"].'</td>';
        echo '<td bgcolor="#CCCCCC">'.$row["boule15"].'</td>';   
        echo '<td bgcolor="#CCCCCC">'.$row["boule16"].'</td>';
        echo '<td bgcolor="#CCCCCC">'.$row["boule17"].'</td>';
        echo '<td bgcolor="#CCCCCC">'.$row["boule18"].'</td>';
        echo '<td bgcolor="#CCCCCC">'.$row["boule19"].'</td>';
        echo '<td bgcolor="#CCCCCC">'.$row["boule20"].'</td>';
      echo '</tr>'."\n";
     }
}
    echo '</table>'."\n";
    // fin du tableau.

                                                                                             
    }
else echo 'Pas d\'enregistrements dans cette table...';

// on libère le résultat             
mysql_free_result($result);

?>

Hors ligne

#22 21-03-2010 22:39:07

aurel22
Membre
Inscription : 21-03-2010
Messages : 13

Re : trier resultat requete

personne n a une idee?

Hors ligne

#23 22-03-2010 07:02:28

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : trier resultat requete

Rien n'est mieux qu'un test pour comprendre. ^^

Hors ligne

Pied de page des forums