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 :
$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 :
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 na 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) :
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
Partager