J'ai une erreur que je n'arrive pas à comprendre, j'ai fais ce que l'on nous a dot de faire en cours, j'ai tenté plusieurs modifications mais ça ne marche pas donc si vous pouviez jeter un oeil sur mon code et me dire si vous voyez où se situe l'erreur, je vous en serais très reconnaissant.
<?php
include ('connection.php'); //connexion à la bdd
//---------------------------------------------------------------------
//procédure d'affichage d'une table sous forme d'un tableau html
//à partir d'une requete sql
function afficheTable ($requete) {
$ressource = mysql_query($requete); //interrogation de la bdd
if (!$ressource) {
//message en cas d'erreur
die('Requete impossible : '.mysql_error());
} else {
echo '<table border="1">'; //création du tableau html
$nb_champs = mysql_num_fields($ressource);
//écriture de l'en-tête du tableau
echo '<tr>';
for ($i = 0; $i < $nb_champs; $i++) {
echo '<th>'.mysql_field_name($ressource, $i).'</th>';
}
//écriture des données du tableau
echo '</tr>';
while ($ligne = mysql_fetch_array($ressource)) {
echo '<tr>';
for ($i = 0; $i < $nb_champs; $i++) {
echo '<td>'.$ligne[mysql_field_name($ressource, $i)].'</td>';
}
echo '</tr>';
}
echo'</table>';
}
}
//---------------------------------------------------------------------
//Affichage d'une table choisie par l'utilisateur
$table = $_POST['table']; //on recupère la choix de l'utilisateur
switch ($table) {
case 'Attaques' :
$requete = "SELECT *
FROM Attaques";
echo '<h1>Attaques</h1>';
afficheTable($requete);
break;
case 'DeTypes' :
$requete = "SELECT *
FROM DeTypes";
echo '<h1>DeTypes</h1>';
afficheTable($requete);
break;
case 'Especes' :
$requete = "SELECT *
FROM Especes";
echo '<h1>Especes</h1>';
afficheTable($requete);
break;
case 'Niveaux' :
$requete = "SELECT *
FROM Niveaux";
echo '<h1>Niveaux</h1>';
afficheTable($requete);
break;
case 'Physique' :
$requete = "SELECT *
FROM Physique";
echo '<h1>Physique</h1>';
afficheTable($requete);
break;
case 'Pokemons' :
$requete = "SELECT *
FROM Pokemons";
echo '<h1>Pokemons</h1>';
afficheTable($requete);
break;
case 'Types' :
$requete = "SELECT *
FROM Types";
echo '<h1>Types</h1>';
afficheTable($requete);
break;
}
//---------------------------------------------------------------------
//Affichage des pokemons + un critère choisie par l'utilisateur
$critere = $_POST['critere']; //on recupère la choix de l'utilisateur
switch ($critere) {
case 'Niveaux' :
$requete = "SELECT idPokemon, nom, niveau
FROM Pokemons NATURAL JOIN Niveaux
ORDER BY nom";
echo '<h1>Niveaux des Pokemons</h1>';
afficheTable($requete);
break;
case 'Espèces' :
$requete = "SELECT nom, espece
FROM Pokemons NATURAL JOIN Especes
ORDER BY nom";
echo '<h1>Espèces des Pokemons</h1>';
afficheTable($requete);
break;
case 'Types' :
$requete = "SELECT nom, type
FROM Pokemons NATURAL JOIN DeTypes NATURAL JOIN Types
ORDER BY nom";
echo '<h1>Types des Pokemons</h1>';
afficheTable($requete);
break;
case 'Taille et poids' :
$requete = "SELECT nom, taille_m, poids_kg
FROM Pokemons NATURAL JOIN Physique
ORDER BY nom";
echo '<h1>Taille et poids des Pokemons</h1>';
afficheTable($requete);
break;
case 'Légendaire' :
$requete = "SELECT nom, legendaire
FROM Pokemons
ORDER BY nom";
echo '<h1>Pokemons légendaire ou non</h1>';
afficheTable($requete);
break;
case 'Attaque signature' :
$requete = "SELECT nom, attaqueSignature
FROM Pokemons NATURAL JOIN Attaques
ORDER BY nom";
echo '<h1>Attaque signature des Pokemons</h1>';
afficheTable($requete);
break;
case 'PV' :
$requete = "SELECT nom, PV
FROM Pokemons
ORDER BY nom";
echo '<h1>PV des Pokemons</h1>';
afficheTable($requete);
break;
}
//---------------------------------------------------------------------
//Affichage des pokemons d'un type et/ou d'un niveau indique par l'utilisateur
$type = $_POST['Type'];
$choix = $_POST['rdo'];
$compar = $_POST['comparateur'];
$niv = $_POST['niveaux'];
if ($choix = 'et') {
$requete = "SELECT numero, nom, type, niveau
FROM Pokemons NATURAL JOIN Types NATURAL JOIN DeTypes NATURAL JOIN Niveaux
WHERE type = '".$type."' AND niveau '".$compar."' '".$niv."'";
} else {
$requete = "SELECT numero, nom, type, niveau
FROM Pokemons NATURAL JOIN Types NATURAL JOIN DeTypes NATURAL JOIN Niveaux
WHERE type = '".$type."' OR niveau '".$compar."' '".$niv."'";
}
afficheTable($requete);
//----------------------------------------------------------------------
//Recherche de pokemons par nom
$nom = $_POST['nom'];
$requete = "SELECT numero, nom, legendaire, espece, type, attaqueSignature, taille_m, poids_kg
FROM Pokemons NATURAL JOIN Attaques NATURAL JOIN Especes NATURAL JOIN Types NATURAL JOIN DeTypes NATURAL JOIN Physique
WHERE nom = '".$nom."'";
afficheTable($requete);
//----------------------------------------------------------------------
//Recherche d'un pokemon precis
$recherche = $_POST['idrecherche'];
$requete = "SELECT numero, nom, idPokemon, niveau
FROM Pokemons NATURAL JOIN Niveaux
WHERE idPokemon = '".$recherche."'";
afficheTable($requete);
mysql_close($link); //déconnection de la bdd
?>
L'erreur que j'obtiens est :
Requete impossible : 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 at line 3