CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Problème requete sql et PHP

TechnoForce3
TechnoForce3
Niveau 39
09 avril 2015 à 10:15:24

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

toupine
toupine
Niveau 32
09 avril 2015 à 19:00:48

Tu as essayé tes requêtes SQL avant de les mettre dans ton code PHP ? Parce que à première vue, ce n'est pas une erreur de PHP mais de SQL.

De plus, je vois que tu utilise les fonctions MySQL comme mysql_connect ou encore mysql_close... fais attention parce que c'est fonctions seront bientôt obsolètes (source : http://php.net/manual/fr/fr/function.mysql-connect.php) donc il est temps de te mettre à PDO :-)))

TechnoForce3
TechnoForce3
Niveau 39
09 avril 2015 à 19:14:40

C'est un projet pour la fac à rendre à la fin du mois, on nous fait utiliser ces fonctions :(

Bunyan
Bunyan
Niveau 17
10 avril 2015 à 08:08:12

Affiche tes requêtes avant de les réaliser :)
Si tu retombes sur l'erreur, copie la requête et debug là. Le message d'erreur signifie bien que tu as un souci au niveau d'une de celles-ci. Le code fourni peut être faut ou tu peux mal l'utiliser. Le seul moyen de le savoir est de regarder la requête (ou les requêtes) déclenchant cette erreur.

Ps : le code pour les requêtes n'est par propre selon moi, puisque ce sont des requêtes écrites en dur et non sécurisé. Il faudrait plutôt passer par des prepared statement, m'enfin...

TechnoForce3
TechnoForce3
Niveau 39
10 avril 2015 à 09:35:43

Je suis en l1 d'info, on nous apprend pas encore tout ce qui est sécurité à part mettre la connexion à la bdd dans un fichier externe.
j'essaierais de m'occuper de ça cet aprèm pour tester mes requêtes.
j'ai demandé de l'aide à un prof qui m'a parlé de retour de chariot que les >, >=... seraient des affectations et qu'il fallait pas mettre d'apostrophe autour de $compar

TechnoForce3
TechnoForce3
Niveau 39
10 avril 2015 à 12:38:19

on a trouvé la solution, la requête mettait des quotes autour de $compar qui correspond à =/</>...

TechnoForce3
TechnoForce3
Niveau 39
10 avril 2015 à 12:44:13

et aussi on avait pas mit de condition que les formulaires soient remplit pour exécuter les requêtes maintenant c'est fait

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Programmation
  • Création de sites web
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment