Requetes qui ne fonctionne pas

Fermé
firpic Messages postés 91 Date d'inscription jeudi 3 juin 2021 Statut Membre Dernière intervention 17 novembre 2022 - 2 juil. 2021 à 11:54
firpic Messages postés 91 Date d'inscription jeudi 3 juin 2021 Statut Membre Dernière intervention 17 novembre 2022 - 5 juil. 2021 à 13:49
Bonjour,
J'ai fais un programme pour vérifier si la table saisie existe, si oui, il vérifie que le numéro de l'épisode saisie existe, si non, il l'ajoute. Mais mon programme ne fonctionne pas.


voici mon code :
<?php
// Initialiser la session
session_start();
// Vérifiez si l'utilisateur est connecté, sinon redirigez-le vers la page de connexion
if(!isset($_SESSION["username"])){
// verifier si l'utilisateur peut avoir acceder a la page
    if($_SESSION['username'] === 'admin'){
    }else{
        header("Location: https://streawer.000webhostapp.com/");
        exit();
    }
}
//affichage des erreurs PHP
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);

$message = "";
$DBVerif = "";
// Récupération PROPRE des variables AVANT de les utiliser
$DB = !empty( $_POST['DBchoo']) ?  $_POST['DBchoo'] : NULL;
$nameEpi = !empty( $_POST['nameEpi']) ?  $_POST['nameEpi'] : NULL; 
$numEpi = !empty( $_POST['numEpi']) ?  $_POST['numEpi'] : NULL;
$linkEpi = !empty( $_POST['linkEpi']) ?  $_POST['linkEpi'] : NULL;

// Informations d'identification
define('DB_SERVER', 'localhost');
define('DB_USERNAME', 'id16626384_admin1');
define('DB_PASSWORD', 'ovih}=uK5wC?Nuq7');
define('DB_NAME', 'id16626384_serie');
 
// Connexion � la base de donn�es MySQL 
$conn = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_NAME);
 
// V�rifier la connexion
if($conn === false){
    die("ERREUR : Impossible de se connecter. " . mysqli_connect_error());
}

if(isset($_POST['DB'])){
    $DBVerif_query = mysqli_query($conn, "SHOW TABLES LIKE '$DB' ");
    if(mysqli_num_rows($DBVerif_query) == 1){
        $DBVerif == TRUE;
        if($DBVerif == TRUE){
            $Epi_query = mysqli_query($conn, "SELECT `epsiode` FROM `$DB` WHERE `$numEpi`");
            if(empty($Epi_query)){
                $add_query = mysqli_query($conn, "INSERT into `$DB` (epsiode, title, lien)VALUES('$numEpi', '$nameEpi', '$linkEpi') ");
                $message = "L'episode a été ajouté";
            }else{
                $message = "L'episode existe deja";
            }
        }else{
            $message = "La base de donnée sélectionné n'existe pas";
        }
    }else{
        $DBVerif == FALSE;
        $message = "La base de donnée sélectionné n'existe pas";
    }
}
?>

<!DOCTYPE html>
<html>
  <head>
    <meta name="googlebot" content="noindex">
      <link rel="icon" type="images/png" sizes="512x512" href="android-chrome-512x512.png">
      <link rel="stylesheet" href="serie/allstyle.css">
      <link rel="stylesheet" href="style.css">
      <link rel="stylesheet" href="style1.css">
      <meta charset="UTF-8">
      <meta http-equiv="X-UA-Compatible" content="IE=edge">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>Streawer</title>
  </head>
  <body style="background-color: #444444;">
    <!-- En-tête de la page-->
    <div class="entete" onclick="window.location.reload()">
        <img src="img/logo.png" id="logo" alt="Logo Streawer"/>
        <a href="main.php" id="nm" style="color: #4DB89A;"><h1 id="nom">Streawer</h1></a>
    </div>
    <form class="box" action="" method="post"> <h1>Nouvelle episode</h1>
        <input type="text" class="box-input" name="DBchoo" placeholder="Nom de la BD" required>
        <input type="text" class="box-input" name="nameEpi" placeholder="Nom de l episode" required>
        <input type="text" class="box-input" name="numEpi" placeholder="Numero de l epidode" required>
        <input type="text" class="box-input" name="linkEpi" placeholder="Lien de L episode" required>
        <input type="submit" name="submit" value="Ajouter" class="box-button">
        <?php if (!empty($message)){ echo '<p class="errorMessage">'.$message.'</p>'; } ?>
        <input type="hidden" value="<?php echo $message;?>" name="numero" class="box-input">
    </form>

    <script>
    $(document).keydown(function(e){
      if(e.which === 123){
         return false;
      }
    });
    </script>
  </body>
<?php include('footer.php'); ?>
</html>

3 réponses

yg_be Messages postés 20753 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 2 décembre 2022 1 273
2 juil. 2021 à 11:58
bonjour,
quel est le but des lignes 43 et 44?
0
firpic Messages postés 91 Date d'inscription jeudi 3 juin 2021 Statut Membre Dernière intervention 17 novembre 2022 1
2 juil. 2021 à 13:28
La ligne 43/44 vérifie si la table excite ou non
0
yg_be Messages postés 20753 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 2 décembre 2022 1 273 > firpic Messages postés 91 Date d'inscription jeudi 3 juin 2021 Statut Membre Dernière intervention 17 novembre 2022
2 juil. 2021 à 13:44
quelle table? où assignes-tu une valeur à la variable?
0
Utilisateur anonyme > firpic Messages postés 91 Date d'inscription jeudi 3 juin 2021 Statut Membre Dernière intervention 17 novembre 2022
Modifié le 2 juil. 2021 à 14:00
Yo.
Cette condition ne sert à rien, ton code entre forcément ici avec la condition de la ligne 42. Condition que tu as déjà fermée avec un ELSE identique ligne 55.
Vire les lignes 43, 44, 52 à 54. Ligne 56 aussi, si tu n'as pas prévu d'utiliser ce bool dans ton code. Sert à rien de mettre un false que tu n'utiliseras jamais.

Je précise également qu'une table n'excite pas. Même la plus jolie des tables. Mais tu as le droit de vérifier si elle existe.
0
yg_be Messages postés 20753 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 2 décembre 2022 1 273
2 juil. 2021 à 12:00
"ne fonctionne pas": comment se comporte-t-il?
que contient $_POST?
qu'attends-tu comme résultat?
qu'affiche le programme?
0
firpic Messages postés 91 Date d'inscription jeudi 3 juin 2021 Statut Membre Dernière intervention 17 novembre 2022 1
Modifié le 2 juil. 2021 à 13:49
$_POST contient :
- le nom de la table
- le titre de l'épisode
- le numéro de l'épisode
- le lien de la vidéo

Avant j'avais fait des fonctionnes :
- une pour vérifier si la table existe
- une pour vérifier si l'épisode n'existe pas déjà
- une pour ajouter l'épisode

Est ce mieux d'avoir un code avec des fonctionne ou pas ?
voici l'ancien code :
<?php
// Initialiser la session
session_start();
// Vérifiez si l'utilisateur est connecté, sinon redirigez-le vers la page de connexion
if(!isset($_SESSION["username"])){
// verifier si l'utilisateur peut avoir acceder a la page
    if($_SESSION['username'] === 'admin'){
    }else{
        header("Location: https://streawer.000webhostapp.com/");
        exit();
    }
}
//affichage des erreurs PHP
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
$message = "";
// Récupération PROPRE des variables AVANT de les utiliser
$NbAj = !empty($_POST['nbaj']) ? $_POST['nbaj'] : NULL;
$DB = !empty( $_POST['DB']) ?  $_POST['DB'] : NULL;
$nameEpi = !empty( $_POST['nameEpi']) ?  $_POST['nameEpi'] : NULL; 
$numEpi = !empty( $_POST['numEpi']) ?  $_POST['numEpi'] : NULL;
$linkEpi = !empty( $_POST['linkEpi']) ?  $_POST['linkEpi'] : NULL;

// connection DB
require('configepi.php');

// fonction pour verifier si le table existe
function DBVerif($conn, $DB, $DBVerif, $message){
    $DBVerif_query = mysqli_query($conn, "SHOW TABLES LIKE '$DB'")or die(mysqli_error());
    if(mysqli_num_rows($DBVerif_query) == 1){
        $DBVerif == TRUE;
    }else{
        $DBVerif == FALSE;
        $message = "La base de donnée sélectionné n'existe pas";
    }
}
//fonction pour verif si un episode exite ou pas
function VerifEpi($conn, $DBVerif, $DB, $nameEpi, $numEpi, $linkEpi, $message){
    DBVerif($conn, $DB,$DBVerif, $message);
    if($DBVerif == TRUE){
        $Epi_query = mysqli_query($conn, "SELECT `epsiode` FROM `$DB` WHERE `$numEpi`");
        if(empty($Epi_query)){
            addEpi($conn, $DB,$nameEpi, $numEpi, $linkEpi, $message);
        }else{
            $message = "L'episode existe deja";
        }
    }else{
        $message = "La base de donnée sélectionné n'existe pas";
    }
}
//fonction pour ajouter un episode
function addEpi($conn, $DB,$nameEpi, $numEpi, $linkEpi, $message){
    $add_query = mysqli_query($conn, "INSERT into `$DB` (epsiode, title, lien)VALUES('$numEpi', '$nameEpi', '$linkEpi') ");
    $message = "L'episode a été ajouté";
}

VerifEpi($conn, $DBVerif, $DB, $nameEpi, $numEpi, $linkEpi, $message);
//juste le temps des tests, pour voir si ton formulaire s'envoie bien
echo "<br> ---> POST :";
var_dump($_POST);
?>

<!DOCTYPE html>
<html>
  <head>
    <meta name="googlebot" content="noindex">
      <link rel="icon" type="images/png" sizes="512x512" href="android-chrome-512x512.png">
      <link rel="stylesheet" href="serie/allstyle.css">
      <link rel="stylesheet" href="style.css">
      <link rel="stylesheet" href="style1.css">
      <meta charset="UTF-8">
      <meta http-equiv="X-UA-Compatible" content="IE=edge">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>Streawer</title>
  </head>
  <body style="background-color: #444444;">
    <!-- En-tête de la page-->
    <div class="entete" onclick="window.location.reload()">
        <img src="img/logo.png" id="logo" alt="Logo Streawer"/>
        <a href="main.php" id="nm" style="color: #4DB89A;"><h1 id="nom">Streawer</h1></a>
    </div>

     <form class="box" action="" method="post">
 <h1>Nouvelle episode</h1>
        <input type="text" class="box-input" name="DB" placeholder="Nom de la BD" required>
        <input type="text" class="box-input" name="nameEpi" placeholder="Nom de l episode" required>
        <input type="text" class="box-input" name="numEpi" placeholder="Numero de l epidode" required>
        <input type="text" class="box-input" name="linkEpi" placeholder="Lien de L episode" required>
        <input type="submit" name="submit" value="Ajouter" class="box-button">
        <?php if (!empty($message)){ echo '<p class="errorMessage">'.$message.'</p>'; } ?>

<input type="number" name="nbaj" value="1" class="box-num" style="margin: 20px;font-size: 20px;text-align: center;border: 10px;background-color: #444444;color: #4DB89A;">
<input type="hidden" value="<?php echo $message;?>" name="numero">
</form>

    <script>
    $(document).keydown(function(e){
      if(e.which === 123){
         return false;
      }
    });
    </script>
  </body>
<?php include('footer.php'); ?>
</html>


Deja il y a une erreur pour mysqli_error, il manque un paramètre alors que je l'ai utiliser dans une autre page et cela fonctionne très bien.

et voici les autre erreur :


Notice: Undefined variable: DBVerif in /storage/ssd3/384/16626384/public_html/NewEpi4.php on line 58

Warning: mysqli_query() expects parameter 1 to be mysqli, object given in /storage/ssd3/384/16626384/public_html/NewEpi4.php on line 30

Warning: mysqli_error() expects exactly 1 parameter, 0 given in /storage/ssd3/384/16626384/public_html/NewEpi4.php on line 30
0
yg_be Messages postés 20753 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 2 décembre 2022 1 273 > firpic Messages postés 91 Date d'inscription jeudi 3 juin 2021 Statut Membre Dernière intervention 17 novembre 2022
2 juil. 2021 à 13:45
que contient $_POST? montre-nous exactement son contenu, inutile d'expliquer ce que tu penses que cela contient.
qu'attends-tu comme résultat?
qu'affiche le programme?
0
firpic Messages postés 91 Date d'inscription jeudi 3 juin 2021 Statut Membre Dernière intervention 17 novembre 2022 1 > yg_be Messages postés 20753 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 2 décembre 2022
3 juil. 2021 à 20:16
$_POSTt contient 4 input .
Le résultat que j'attends, est qu'il envoie les $_POST qui si le numero de l'input numEpi n'est pas deja existant dans la table.
il doit afficher ce que contient la variable $_POST.
0
Utilisateur anonyme > firpic Messages postés 91 Date d'inscription jeudi 3 juin 2021 Statut Membre Dernière intervention 17 novembre 2022
3 juil. 2021 à 22:09
Il te demande ce que contient vraiment $_POST. Fais un
var_dump($_POST);
pour voir son contenu exact.
0
firpic Messages postés 91 Date d'inscription jeudi 3 juin 2021 Statut Membre Dernière intervention 17 novembre 2022 1 > Utilisateur anonyme
4 juil. 2021 à 14:46
maintenant que j'ai compris voici ce que contient $_POST:
 ---> POST :array(6) { ["DBchoo"]=> string(6) "MyHero" ["nameEpi"]=> string(4) "test" ["numEpi"]=> string(6) "761698" ["linkEpi"]=> string(4) "test" ["submit"]=> string(7) "Ajouter" ["numero"]=> string(0) "" }
0
yg_be Messages postés 20753 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 2 décembre 2022 1 273
2 juil. 2021 à 14:14
pourrais-tu éviter d'ouvrir deux discussions sur le même sujet?
0
firpic Messages postés 91 Date d'inscription jeudi 3 juin 2021 Statut Membre Dernière intervention 17 novembre 2022 1
3 juil. 2021 à 20:09
d'accord
0