Interpréteur sql php

Résolu
JakeKreese Messages postés 2 Date d'inscription mercredi 17 avril 2024 Statut Membre Dernière intervention 17 avril 2024 - 17 avril 2024 à 00:47
jordane45 Messages postés 38274 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 8 novembre 2024 - 17 avril 2024 à 22:35

Bonjour voici mon problème actuel,

Ce problème est pour moi un ENORME problème. En effet depuis quelques temps j'essaye de coder un site test ou il y a seulement une page avec un interpréteur où des commandes sql peuvent être tapés. Pour se faire je passe par XAMPP avec un serveur sur phpMyAdmin et une DB nommé wwe. Après avoir enchaîné moulte problème que j'ai pu réglé pour certain me voici bloqué avec une erreur.

Cette erreur se passe lorsque je formule de requête à la fois comme

"SELECT * FROM city;
SELECT * FROM country;"

Mais il n'y a pourtant aucun problème lors de l'exécution d'une seule commande à la fois.

Je vous donne tout mon code :

<?php
// Informations de connexion à la base de données
$servername = "localhost"; // Adresse du serveur MySQL
$username = "root"; // Nom d'utilisateur MySQL
$password = ""; // Mot de passe MySQL
$dbname = "WWE"; // Nom de la base de données

// Récupérer les commandes SQL envoyées depuis le frontend
$sqlQueries = $_POST['sqlQueries'];

// Connexion à la base de données
$conn = new mysqli($servername, $username, $password, $dbname);

// Vérifier la connexion
if ($conn->connect_error) {
    die("Connexion échouée : " . $conn->connect_error);
}

// Diviser les commandes SQL en un tableau
$sqlQueriesArray = explode(";", $sqlQueries);

// Exécuter chaque commande SQL
foreach ($sqlQueriesArray as $sqlQuery) {
    // Supprimer les espaces en début et en fin de la commande SQL
    $sqlQuery = trim($sqlQuery);
    
    // Vérifier si la commande SQL est vide
    if (!empty($sqlQuery)) {
        // Exécuter la commande SQL
        $result = $conn->query($sqlQuery);

        // Vérifier les erreurs lors de l'exécution de la requête
        if (!$result) {
            // Afficher les erreurs MySQL
            echo "Erreur d'exécution de la requête : " . $conn->error;
        } else {
            // Si la requête a renvoyé des résultats
            if ($result->num_rows > 0) {
                // Traitement des résultats de la requête
                $output = "<table border='1'><tr>";
                while ($fieldinfo = $result->fetch_field()) {
                    $output .= "<th>" . $fieldinfo->name . "</th>";
                }
                $output .= "</tr>";
                while ($row = $result->fetch_assoc()) {
                    $output .= "<tr>";
                    foreach ($row as $value) {
                        $output .= "<td>" . $value . "</td>";
                    }
                    $output .= "</tr>";
                }
                $output .= "</table>";
                echo $output;
            } else {
                // Si la requête ne renvoie aucun résultat, afficher un message approprié
                echo "La requête n'a renvoyé aucun résultat.";
            }
        }
    }
}

// Fermer la connexion à la base de données
$conn->close();
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Interpréteur SQL</title>
    <link rel="stylesheet" href="styles.css">
</head>
<body>
    <div class="container">
        <h1>Interpréteur SQL</h1>
        <textarea id="sqlInput" placeholder="Entrez vos commandes SQL ici..."></textarea>
        <button onclick="executeSQL()">Exécuter</button>
        <div id="output"></div>
    </div>

    <script src="script.js"></script>
</body>
</html>
function executeSQL() {
    // Récupérer la commande SQL saisie par l'utilisateur
    var sqlQuery = document.getElementById('sqlInput').value;

    // Créer une requête HTTP POST vers notre script PHP backend
    var xhr = new XMLHttpRequest();
    xhr.open('POST', 'backend.php', true);
    xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');

    // Envoyer la commande SQL au backend
    xhr.onload = function() {
        if (xhr.status >= 200 && xhr.status < 300) {
            // Afficher les résultats retournés par le backend
            document.getElementById('output').innerHTML = xhr.responseText;
        } else {
            // En cas d'erreur, afficher un message d'erreur
            document.getElementById('output').innerHTML = 'Erreur : ' + xhr.status + ' ' + xhr.statusText;
        }
    };

    // Envoyer la requête avec la commande SQL en tant que données POST avec la clé "sqlQueries"
    xhr.send('sqlQueries=' + encodeURIComponent(sqlQuery));
}
DROP TABLE IF EXISTS superstar;
DROP TABLE IF EXISTS city;
DROP TABLE IF EXISTS country;
DROP TABLE IF EXISTS championship;
DROP TABLE IF EXISTS holder;
DROP TABLE IF EXISTS roster;
DROP TABLE IF EXISTS faction;
DROP TABLE IF EXISTS ple;
DROP TABLE IF EXISTS appartient;

/*###########################################################################*/

CREATE TABLE superstar (
id INTEGER PRIMARY KEY AUTOINCREMENT,
forename VARCHAR(100),
name VARCHAR(100) NOT NULL,
gender VARCHAR(6) NOT NULL,
height INTEGER,
weight INTEGER ,
roster VARCHAR(15),
country_id VARCHAR(100) NOT NULL,
city_id VARCHAR(100),
);

CREATE TABLE country (
id INTEGER PRIMARY KEY AUTOINCREMENT,
country VARCHAR(100),
continant VARCHAR(100)
);

CREATE TABLE championship (
id INTEGER PRIMARY KEY AUTOINCREMENT,
title_name VARCHAR(100) NOT NULL,
since VARCHAR(100),
holder INTEGER,
);

CREATE TABLE city (
id INTEGER PRIMARY KEY AUTOINCREMENT,
city VARCHAR(100),
country_id VARCHAR(100),
state VARCHAR(100),
);

CREATE TABLE roster (
name VARCHAR (15) PRIMARY KEY,
day VARCHAR(10)
);

CREATE TABLE faction (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name VARCHAR(20),
roster VARCHAR(15),
);

CREATE TABLE ple (
name VARCHAR(35) PRIMARY KEY,
month VARCHAR(10),
speciality TEXT
);

CREATE TABLE appartient (
id_superstar INTEGER,
id_faction INTEGER,
);

/*###########################################################################*/

INSERT INTO country (country, continant)
VALUES 
("United States","America"),
("Ireland","Europe"),
("Australia","Oceania"),
("Spain","Europe"),
("Austria","Europe"),
("Russia","Asia"),
("Japan","Asia"),
("United Kingdom","Europe"),
("Scotland","Europe"),
("Canada", "America"),
("Ireland", "Europe"),
("New Zeland", "Oceania"),
("Italia", "Europe"),
("Germany", "Europe");

INSERT INTO city (city, country_id, state)
VALUES
("Pensacola", 1, "Florida"),
("Davenport", 1, "Lowa"),
("Camp Lejeune", 1, "North Carolina"),
("Canton", 1, "Ohio"),
("New York", 1, "New York"),
("Bray", 9, "Wicklow"),
("Vienne", 4, ""),
("Kamakura", 7, "Kanagawa Prefecture"),
("Sydney", 3, ""),
("Glen Ridge", 1, "New Jersey"),
("Winter Park", 1, "Florida"),
("MacDonough", 1, "Georgia"),
("José", 1, "California"),
("Limerick", 11, "Munster"),
("Knoxville", 1, "Tennessee"),
("Auckland", 12, ""),
("Osaka", 7, "Osaka Prefecture"),
("Hikari", 1, "Yamaguchi Prefecture"),
("Sacramento", 1, "California"),
("Francisco", 1, "California"),
("Sud-Tyrol", 13, "Bolzano"),
("Pinneberg", 14, "Pinneberg"),
("Diego", 1, "California"),
("Cumberland", 1, "Maryland"),
("Asheville", 1, "North Carolina"),
("Angeles", 1, "California");

INSERT INTO superstar (forename, name, gender, roster, height, weight, country_id, city_id)
VALUES
("Roman", "Reigns", "Male", "Smackdown", 191, 130, 1, 1),
("Seth", "Rollins", "Male", "Raw", 185, 102, 1, 2),
("", "Gunther", "Male", "Raw", 193, 135, 4, 7),
("Logan", "Paul", "Male", "Free Agent", 1.88, 90, 1, 4),
("Damian", "Priest", "Male", "Raw", 196, 113, 1, 5),
("Finn", "Balor", "Male", "Raw", 180, 86, 9, 6),
("Iyo", "Sky", "Female", "Smackdown", 156, 54, 7, 8),
("Rhea", "Ripley", "Female", "Raw", 170, 62, 3, 9),
("Katana", "Chance", "Female", "Raw", 157, 54, 1, 10),
("Kayden", "Carter", "Female", "Raw", 152, 45, 1, 11),
("AJ", "Styles", "Male", "Smackdown", 180, 99, 1, 5),
("", "Bayley", "Female", "Smackdown", 168, 54, 1, 13),
("Becky", "Lynch", "Female", "Raw", 168, 63, 11, 14),
("Bianca", "Belair", "Female", "Smackdown", 170, 70, 1, 15),
("Dakota", "Kai", "Female", "Smackdown", 168, 55, 12, 16),
("", "Asuka", "Female", "Smackdown", 160, 62, 7, 17),
("Kari", "Sane", "Female", "Smackdown", 155, 52, 7, 18),
("Solo", "Sikoa", "Male", "Smackdown", 188, 109, 1, 19),
("Jimmy", "Uso", "Male", "Smackdown", 188, 114, 1, 20),
("Giovanni", "Vinci", "Male", "Raw", 183, 100, 13, 21),
("Ludwig", "Kaiser", "Male", "Raw", 191, 100, 14, 22),
("JD", "McDonagh", "Male", "Raw", 178, 82, 9, 6),
("Dominik", "Mysterio", "Male", "Raw", 185, 91, 1, 23),
("Luke", "Gallows", "Male", "Smackdown", 203, 132, 1, 24),
("Karl", "Anderson", "Male", "Smackdown", 184, 98, 1, 25),
("Mia Yim", "Michin", "Female", "Smackdown", 170, 60, 1, 26);

INSERT INTO championship (title_name, since, holder)
VALUES
("WWE Champion", "April 3, 2022", 1),
("Universal Champion", "August 30, 2019", 1),
("World Heavyweight Champion", "May 27, 2023", 2),
("Intercontinental Champion", "June 10, 2022", 3),
("United States Champion", "Novembre 4, 2023", 4),
("Raw Tag Team Champion", "October 16, 2023", 6),
("Raw Tag Team Champion", "October 16, 2023", 5),
("Smackdown Tag Team Champion", "October 16, 2023", 6),
("Smackdown Tag Team Champion", "October 16, 2023", 5),
("WWE Women's Champion", "August 5, 2023", 7),
("Women's World Champion", "April 1, 2023", 8),
("Women's Tag Team Champion", "October 16, 2023", 9),
("Women's Tag Team Champion", "December 19, 2023", 10);

INSERT INTO roster (name, day)
VALUES
("Raw", "Monday"),
("Smackdown,", "Friday"),
("NXT", "Wednesday"),
("Free Agent", NULL);

INSERT INTO faction(name, roster)
VALUES
("Damage Control", "Smackdown"),
("The Bloodline", "Smackdown"),
("The Judgment Day", "Raw"),
("The Imperium", "Raw"),
("The OC", "Smackdown");

INSERT INTO ple(name, month, speciality)
VALUES
("Royal Rumble"  ,"January", "Men's and Women's Royal Rumble matchs"),
("Elimination Chamber", "February", "Men's and Women's Elimination Chamber matchs"),
("Wrestlemania" , "April", "Two nights event"),
("Backlash" , "May", NULL),
("Night of Champions" , "June", "Saudia"),
("Money in The Bank" ,"July" ,"Men's and Women's Ladders Money in the Bank contract matchs"),
("Bash in Berlin" , "August", NULL),
("Summerslam" ,"August" , NULL),
("Payback" ,"September" , NULL),
("Fastlane" ,"October" , NULL),
("Crown Jewel" ,"November" , "Saudia"),
("Survivor Series" ,"December" , "Men's and Women's War Games matchs");

INSERT INTO appartient(id_superstar, id_faction)
VALUES
(7, 1),
(12, 1),
(15, 1),
(16, 1),
(17, 1),
(1, 2),
(19, 2),
(18, 2),
(8, 3),
(5, 3),
(6, 3),
(22, 3),
(23, 3),
(3, 4),
(20, 4),
(21, 4),
(24, 5),
(25, 5),
(26, 5);

S'il vous plaît aidez moi, je tourne vraiment en rond depuis 1 semaine.

A voir également:

3 réponses

jordane45 Messages postés 38274 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 8 novembre 2024 4 696
17 avril 2024 à 06:20

bonjour 

quelle erreur ??

tu peux nous donner le message d'erreur rencontré ?


0
JakeKreese Messages postés 2 Date d'inscription mercredi 17 avril 2024 Statut Membre Dernière intervention 17 avril 2024
17 avril 2024 à 21:12

Oui excusez moi j'ai oublié l'essentiel l'erreur était :

"Undefined array key "sqlQueries" in D:\XAMPP\htdocs\TEST\backend.php on line 9"

Seulement en retestant ce matin j'ai vu que tout allait mieux et je ne sais par quel miracle, j'ai fait quelques modification sur ma BD et voilà que tout refonctionne.

Pouvez quand même m'expliquer d'où provenait l'erreur ?

0
jordane45 Messages postés 38274 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 8 novembre 2024 4 696
17 avril 2024 à 22:35
0