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 sql et php

TechnoForce3
TechnoForce3
Niveau 39
09 avril 2015 à 10:21:56

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

TechnoForce3
TechnoForce3
Niveau 39
10 avril 2015 à 07:35:44

Je pense pas car pour afficher les tables et pour afficher selon un critère, ça marche sans problème.

TechnoForce3
TechnoForce3
Niveau 39
10 avril 2015 à 12:37:57

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

TechnoForce3
TechnoForce3
Niveau 39
10 avril 2015 à 12:43:28

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

Tallen-2
Tallen-2
Niveau 10
10 avril 2015 à 17:16:51

Bon j'arrive un peu tard mais moi quand j'ai ce genre de problème, je fais un echo des requêtes que j'envoie pour vérifier leur synthaxe correctement, parce que la synthaxe SQL à travers le PHP est juste imbuvable entre les .et le " à foison.

TechnoForce3
TechnoForce3
Niveau 39
10 avril 2015 à 17:21:59

Oui, j'y penserais la prochaine fois, c'est vrai que c'est très dur lire comme requête :noel: J'espère que j'aurais une bonne note à ce projet vu le temps qu'on passe dessus.

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