2 votes

Boucle à travers la ligne de la table mysql et vérifie si une colonne correspond à un nombre défini en php.

J'essaie de faire une boucle dans une table mysql et de vérifier si une ligne contient le nombre que je spécifie :

Voici ce que j'ai :

table mysql avec des chiffres :

table mysql :

no1|no2|no3|no4|no5
 1   3   5   2   6
 4   7   8   9   8
 2   6   9   1   0
 ...

Par exemple : J'ai le numéro 4 5 3 7

Ainsi, dans la première ligne, je devrais obtenir un total de 2 car il y a les numéros 3 et 5 dans la première ligne et ces numéros sont dans le nombre que j'ai spécifié.

Dans la deuxième ligne, je devrais obtenir un total de 1, car il n'y a qu'un 4 dans la ligne et le nombre que j'ai spécifié.

Et dans la dernière ligne, le total devrait être de 0 car il n'y a pas de correspondance.

J'espère que c'est clair.

J'ai essayé ce qui suit, mais cela ne fonctionne pas. J'espère que quelqu'un pourra m'aider à résoudre ce problème, merci d'avance.

$lottono1=4;
$lottono2=5;
$lottono3=3;
$lottono4=7;

$no1 = 0;
$no2 = 0;
$no3 = 0;
$no4 = 0;

do { ?>
// i done the following if code for each numbers but
//putting this only to take less space

if (($row_Recordset1['no1']=$lottono1) || ($row_Recordset1['no1']=$lottono2) || ($row_Recordset1['no1']=$lottono3) || ($row_Recordset1['no1']=$lottono4)) {
      $no1=1;

  } 

while ($row_Recordset1 = mysql_fetch_assoc($Recordset1));

3voto

Nicola Cossu Points 18168
select *,
if(no1 in (4,5,3,7),1,0)+
if(no2 in (4,5,3,7),1,0)+
if(no3 in (4,5,3,7),1,0)+
if(no4 in (4,5,3,7),1,0)+
if(no5 in (4,5,3,7),1,0) as found
from table

2voto

DaOgre Points 1212

Pour accomplir avec PHP/MySQL vous pouvez faire ce qui suit :

 $query = 'SELECT * FROM table';

 $result = mysql_query($query) or die();
 $matchValues = array(4,5,3,7);

 while($row = mysql_fetch_array($result)){
     $counter = 0;
     foreach($matchValues as $value)
     {
         if(in_array($value, $row))
         {
             $counter++;
         }
     }
     print "Searched row and found $counter matches<br/>";
 }

2voto

Ben D Points 7458

Tout d'abord, vos opérateurs sont incorrects dans vos conditions "si" (vous définissez plutôt que vous comparez).

Quoi qu'il en soit, je ferais plutôt quelque chose comme.. :

$numbers_to_match = array(4,5,3,7) ;  
$query = mysql_query("select * from `table` where ____",connection_here);
$matches[] = array();
$i=0;
while($r=mysql_fetch_array($query)){
    $matches[$i]=0;
    foreach($r as $val){
        if (in_array($val,$numbers_to_match)){
            $matches[$i]++;
        }
    }
    $i++;
}
print_r($matches);

Non testé, mais cela devrait vous donner un tableau qui liste le nombre de correspondances pour chaque ligne.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X