Comment réaliser une page type classement depuis une base SQL

Fermé
maxvs Messages postés 7 Date d'inscription vendredi 24 mai 2019 Statut Membre Dernière intervention 26 mai 2019 - 26 mai 2019 à 14:32
maxvs Messages postés 7 Date d'inscription vendredi 24 mai 2019 Statut Membre Dernière intervention 26 mai 2019 - 26 mai 2019 à 17:11
Bonjour,

Je suis face à un problème je vais essayé de le détailler le plus simplement possible.
Mon site web est un site qui permet la gestion d'une compétition (ici de vélo).

Voici l'architecture de ma base de donnée :

Table Equipe (qui stocke les données de chaque équipes) :


Table Cycliste (qui stocke les données de chaque cyclistes) :


Table Etape (qui stocke les données de chaque étapes) :


Table Suivre (qui permet de faire la liaison entre les résultats et les tables étape et cycliste) :


Grâce à cette base de donnée je souhaite réaliser un classement de chaque cycliste mais pas par équipe (etape 1 - 2 - 3 et général).
Voilà ce que j'ai réalisé :

Script principal :

<?php	
include("mysql.php");
?>
	<section class="principal">
		<article>
		       <h3 class="titre">Classement Étape 1 - CLM :</h3>
			<br/>
			<?php
				$et1 = "SELECT `temps`,`num_licence` FROM `Suivre` 
				WHERE `num_etape`='1' ORDER BY `temps`";
				$repet1 = mysqli_query($id_bd,$et1)
					or die("Execution de la requete impossible : $et1");
			?>
			<table>
				<tr>
					<th> Rank </th>
					<th> Nom du cycliste </th>
					<th> Temps </th>
				</tr>
					
			<?php
				$i = 0;
				while($det1 = mysqli_fetch_array($repet1))
				{
				$i++;						
				$dnom = "SELECT `nom_joueur` FROM `Cycliste` WHERE `num_licence`=$det1['num_licence']";
				$rnom = mysqli_query($id_bd,$dnom)
					or die("Execution de la requete impossible : $dnom");
				$nom = mysqli_fetch_array($rnom);
				
				echo"<tr>
						<td>";
							echo $i;
				echo "</td>
						<td>";
							echo $nom['nom_joueur'];
				echo "</td>
						<td>";
						echo $det1['temps'];
				echo "</td>
						</tr>";
				}
							
			?>


Script d'accès à la base de donnée :
<?php
/* Script de connexion à la base smi */

  $id_bd = mysqli_connect("localhost","admin","tour","tourpy")
    or die("Connexion au serveur et/ou à la base de données impossible");

  /* Gestion de l'encodage des caractères */
  mysqli_query($id_bd, "SET NAMES 'utf8'");

  mysqli_error($id_bd);
?>


Et je rencontre ce type d'erreur :
Parse error: syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) in /opt/lampp/htdocs/pages/classement.php on line 60

Merci d'avance de l'aide que vous m'apporterez.
Cordialement.
A voir également:

1 réponse

jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
26 mai 2019 à 16:57
Je t'ai demandé, dans ta précédente question, de mettre le "bon" langage dans les balises de code... pourquoi n'est-ce pas fait ??

Je précise également que dans le choix du langage ( pour les balises de code ) il faut que tu indiques PHP lorsque tu as du code php dedans...
Petit rappel : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code


Et puis... La ligne 60 .. c'est laquelle ?
Celle la je suppose:
$dnom = "SELECT `nom_joueur` FROM `Cycliste` WHERE `num_licence`=$det1['num_licence']";			

A remplacer par :
$dnom = "SELECT `nom_joueur` FROM `Cycliste` WHERE `num_licence`='".$det1['num_licence']."'";			

0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
26 mai 2019 à 17:00
Au passage, évite de faire des sous-requêtes dans des boucles PHP....
Regarde donc ce que donne cette requête (directement en la testant dans phpmyadmin pour l'essayer...)
SELECT S.`temps`
      ,S.`num_licence`
      ,C.`nom_joueur`      
FROM `Suivre` S
LEFT JOIN Cycliste C  ON C.num_licence = S.num_licence 
WHERE S.`num_etape`='1' 
ORDER BY `temps`
0
maxvs Messages postés 7 Date d'inscription vendredi 24 mai 2019 Statut Membre Dernière intervention 26 mai 2019
Modifié le 26 mai 2019 à 17:15
merci @jordane45 pour l'aide apporté, je n'avais pas compris qu'il fallait utiliser <php> je suis débile...
J'ai exécuté ta requête directement dans ma base de donner aucunes erreur mais aucun résultat...
My bad j'avais rien rentré dans la base de donnée sa fonctionne!
Merci pour ton aide sur les divers sujet que j'ai posté, c'est super cool!
0