Bonjour à tous,

Je cherche à afficher, à l’aide de PHP/MySQL, le nombre de visites de ville qu’une personne doit faire pour atteindre un record (ne cherchez pas de sens à ce concours c’est purement théoriques). Voici mes tables :

villes : Les lignes stockent le nom des villes
ID_ville | nom_ville
1 | Paris
2 | Lille

personnes : On retrouve le nom des villes dans les colonnes et les lignes stockent, par personne, le nombre de visite quelles font dans chaque ville.
ID_personne | Paris | Lyon | Lille
1 | 24 | 45 | 45
2 | 45 | 55 | 36
3 | 78 | 00 | 78

Par exemple la personne n°2 a visité 55 fois Lyon et la personne n°1 à visité 24 fois Paris.

Ce que je cherche à faire, avec une requête, c’est extraire, pour une personne, le nombre de visite qu’il lui reste à faire pour obtenir le record 1 ou 2 selon ma troisième table :

records : nombre de visite en ligne, les colonnes contiennent le nom des villes :

ID_record | Paris | Lyon |Lille
1 | 12 | 25 | 1
2 | 45 | 8 | 90

Ensuite, j’ai construit le code de la façon suivante :

On extrait le nombre de visite à faire dans les villes pour avoir le record n°1 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
$record1 = mysql_fetch_array(mysql_query(“SELECT * FROM records WHERE id_record=’1’;”));
Ensuite on verifie, pour la personne n° 1, si elle remplie les conditions du record, stockées dans $record1 :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$sql = mysql_query(“SELECT * FROM personnes WHERE id_visite=’1’ AND paris >= ’ $record1[paris]’ AND lyon >= ’ $record1[lyon]’  AND lille >=’ $record1[lille];” );
 
$ok= mysql_num_rows($sql);
 
if($ok == ‘1){
 
// La personne a visité suffisamment de fois les villes pour avoir droit au record n°1
 
}
if($ok == ‘0){
 
// La personne n’a pas fais assez de visites
 
}
Normalement, ce code là fonctionne (si je n’ai pas fait d’erreur de recopiage). Ce que je cherche à faire, et c’est là où j’ai besoin de vous, c’est comment faire pour générer dynamiquement la liste des conditions à remplir dans ma requête $sql ?

Ce que je veux dire, c’est que les records ne se limiteront pas à 3 villes, des lignes dans la table villes ainsi que des colonnes dans la table personnes vont s’ajouter.Je ne veux pas completer les requetes à chaque qu'une ville s'ajoute !

Y’a-t-il un moyen pour qu'une requête soit semblable a celle-ci (vraiment désolé, je sais que ce code ne fonctionne pas mais c’est un bon moyen pour exprimer ma demande) :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// On extrait le nombre du record n°1
$record1 = mysql_fetch_array(mysql_query(“SELECT * FROM records WHERE id_record=’1’;”));[/
 
 
// On extraits le nom des villes
$villesql = mysql_query("SELECT * FROM villes; ") ;
 
 
// Puis on intègre un while de $villesql dans les conditions de la requête pour generer les noms des villes
$sql = mysql_query(“SELECT * FROM personnes WHERE id_visite=’1’ AND 
 
While($ville = mysql_fetch_array($villesql)){
 
Echo $ville[‘nom_ville’].’ >= ‘.$Record1[$ville[‘nom_ville’]].’ AND ‘;
}
paris >= ’ $Record1[paris]’ AND lyon >= ’ $Record1[lyon]’  AND lille >=’ $Record1[lille]
 
;” );
Merci d’avance