Insertion de données dans une table en PHP

Fermé
Ekom - 1 juin 2023 à 13:05
jordane45 Messages postés 38427 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 février 2025 - 5 juin 2023 à 13:29

Bonjour,

S'il vous plaît, je suis un débutant en PHP. Je fais une requête d'insertion de données dans une table en PHP. Mon objectif est que le client joint 1 ou plusieurs images en plus les autres entrées.

Quant j'exécute la requête, une page vide s'affiche. Les images ne sont pas uploadées et toutes les données ne sont pas non plus insérées dans la table. 

Veuillez m'assister, s'il vous plaît.

Voici mon code PHP:

$db_host = "localhost";
$db_username = "root";
$db_password = "";
$db_name = "my_database";
$conn = new mysqli($db_host, $db_username, $db_password, $db_name);
if ($conn->connect_error) {
  die("Connection failed: " . $conn->connect_error);
}
						
$utilisateur = filter_input(INPUT_POST, 'user', FILTER_SANITIZE_STRING);
$titre = filter_input(INPUT_POST, 'titre', FILTER_SANITIZE_STRING);
$type = filter_input(INPUT_POST, 'type', FILTER_SANITIZE_STRING);
$disponibilite = filter_input(INPUT_POST, 'disponibilite', FILTER_SANITIZE_STRING);
$prix = filter_input(INPUT_POST, 'price', FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION);
$devise = filter_input(INPUT_POST, 'devise', FILTER_SANITIZE_STRING);
$detail = filter_input(INPUT_POST, 'detail', FILTER_SANITIZE_STRING);
$cat = (int) $_POST['cat'];

// Chemin de sauvegarde des images
$target_dir = "../images/avatars/";

// Upload et insertion de chaque image dans la base de données
for ($i = 1; $i <= 6; $i++) {
  $avatar_name = "avatar" . $i;

  // Vérifier si l'utilisateur a sélectionné une image
  if ($_FILES[$avatar_name]['name'] !== '') {
    $target_file = $target_dir . basename($_FILES[$avatar_name]["name"]);
    $uploadOk = 1;
    $imageFileType = strtolower(pathinfo($target_file, PATHINFO_EXTENSION));

    // Vérifier si le fichier image est réellement une image
    if (isset($_POST["envoyer"])) {
      $check = getimagesize($_FILES[$avatar_name]["tmp_name"]);
      if ($check !== false) {
        $uploadOk = 1;
      } else {
        $uploadOk = 0;
      }
    }

    // Vérifier si le fichier existe déjà
    if (file_exists($target_file)) {
      $uploadOk = 0;
    }

    // Vérifier la taille du fichier
    if ($_FILES[$avatar_name]["size"] > 18000000) {
      $uploadOk = 0;
    }

    // Si toutes les vérifications sont valides, uploader le fichier image
    if ($uploadOk == 1) {
      if (move_uploaded_file($_FILES[$avatar_name]["tmp_name"], $target_file)) {
        // Insertion de l'image dans la base de données
        $query = "INSERT INTO annonce_table (annonce_cat_id, utilisateur, type, titre, disponibilite, prix, devise, detail, avatar1, avatar2, avatar3, avatar4, avatar5, avatar6, date) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, NOW()) ON DUPLICATE KEY UPDATE avatar" . $i . "=?";
        $stmt = $conn->prepare($query);
        $stmt->bind_param("ssssssssssssss", $cat, $utilisateur, $type, $titre, $disponibilite, $prix, $devise, $detail, $avatar1, $avatar2, $avatar3, $avatar4, $avatar5, $avatar6);
        ${"avatar_position" . $i} = $target_file;
        $stmt->bind_param("s", ${"avatar_position" . $i});
        if ($stmt->execute()) {
          echo "<button type='button' class='btn btn-success toastrDefaultSuccess'>
               Votre annonce est publiée avec succès
               </button>";
          $url = "../Espace_perso.php";
          if (!headers_sent()) {
            header('Location: ' . $url);
            exit;
          } else {
            echo "<script type='text/javascript'>";
            echo "window.location.href='" . $url . "';";
            echo "</script>";
            exit;
          }
          echo "Image uploadée avec succès.";
        } else {
          echo "Erreur d'insertion image: " . $conn->error;
        }
        $stmt->close();
      } else {
        echo "Erreur d'upload d'image.";
      }
    }
  }
}
A voir également:

2 réponses

yg_be Messages postés 23473 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 février 2025 Ambassadeur 1 568
2 juin 2023 à 20:58

bonjour,

pour éviter d'afficher une page blanche, ajoute des echo dans ton code, pour t'assurer de toujours afficher un texte qui te permettra de comprendre le comportement de ton code.

1

Bonjour yg_be,
Merci pour ton apport.
J'ai inséré des echo comme tu pouvais le voir, mais mon code ne marche toujours pas. La page blanche ou vide s'affiche toujours.

S'il vous plaît, pouvez-vous jeter un coup d'oeil sur mon code et me corriger ce qui ne va pas?

0
yg_be Messages postés 23473 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 février 2025 1 568 > Ekom
5 juin 2023 à 13:04

Si ta page est blanche, c'est qu'il y a des cas où il manque des echo.

0
jordane45 Messages postés 38427 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 février 2025 4 735
2 juin 2023 à 22:29
1

Bonjour jordane45,

Merci pour ton apport aussi.

0
jordane45 Messages postés 38427 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 février 2025 4 735 > Ekom
5 juin 2023 à 13:29

Une page blanche peut aussi signifier une erreur 500

Autrement dit, une erreur dans le code PHP ou un souci côté serveur...

Tu pourrais dans un premier temps, supprimer tout le contenu de ton script PHP, et faire des var_dump

Des variables post et files... Et voir ce qu'elles contiennent...

0