Impossible d'inserer les données du formulaire en base de données. Help!

Fermé
mouls22 - 29 oct. 2021 à 09:30
jordane45 Messages postés 38326 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 2 décembre 2024 - 29 oct. 2021 à 11:56
Bonjour,
Je n'arrive pas à insérer les données du formulaire PHP dans ma base de données Mysql. Seule la photo à envoyer dans le formulaire apparait dans le dossier pictures présent dans le répertoire www. Je n'arrive toujours pas à trouver ce qui ne vas pas, et pourtant le code n'affiche pas d'erreur. Est-ce que à cause de la liste déroulante qu'il faut changer de formule? Help!!!
Voici le code:


<?php

$bdd= new PDO('mysql:host=127.0.0.1;dbname=espace_membre', 'root', '');

$photo="";

if(isset($_POST['formannonce'])) {
    $phone= intval($_POST['phone']);
    $mail = htmlspecialchars($_POST['mail']);
    $categorie= ($_POST['categorie']);
    $villes= ($_POST['villes']);
    $titre = htmlspecialchars($_POST['titre']);
    $prix= intval($_POST['prix']); 
    $presentation= nl2br(htmlspecialchars($_POST['presentation']));
    $photo= ($_FILES['img']['name']);
    $upload= "pictures/".$photo;
    move_uploaded_file($_FILES['img']['tmp_name'],$upload);

  $sql= "INSERT INTO annonces(categorie,ville,titre,presentation,prix,telephone,email,photo) VALUES('$categorie','$villes','$titre','$presentation','$prix','$phone','$mail','$photo')";

}



?>

<html>


    <head>
       <meta charset="utf-8">

       <style>
           legend{
               text-align: center;
           }

       </style>

        <link rel="stylesheet" href="style.css">
    </head>
    <body>
    
            
    <div class= "pub">      
    <form action="" method="POST" enctype="multipart/form-data">
        <p>
                <fieldset>
         
             <legend>Déposer votre annonce</legend>

                <label for="categorieannonce"> Catégorie de votre annonce</label>
                <select name="categorie">
                    <optgroup label= "Immobilier">
                    <option value= "appartements"> Appartements</option>
                    <option value= "maisons"> Maisons et Villas</option>
                    <option value= "terrains"> Terrains</option>
                    <option value= "locations"> Location</option>
                    <option value= "bureaus"> Bureaux</option>
                </optgroup> <br> <br>


                <optgroup label= "Véhicules">
                    <option value= "voitures"> Voitures</option>
                    <option value= "motos"> Motos</option>
                    <option value= "pieces"> Pièces et accessoires pour véhicules</option>
                    <option value= "velos"> Vélos</option>
                    <option value= "vehiculepro"> Véhicules Professionnels</option>
                </optgroup>


                <optgroup label= "Informatique et Multimédia">
                    <option value= "telephone"> Téléphone</option>
                    <option value= "ordinateur"> Ordinateurs Portables</option>
                    <option value= "accessoires"> Accessoires informatiques</option>
                    <option value= "ordibureau"> Ordinateurs de Bureaux</option>
                </optgroup>

                <optgroup label= "Cours">
                    <option value= "voitures"> Privés</option>
                    <option value= "motos"> Collectifs</option>
                </optgroup>



                </select> <br> <br>


                
                <label for="ville">Ville</label>
                <select name="villes">
                    <option value= "A"> Nouakchott</option>
                    <option value= "B"> Nouadhibou</option>
                    <option value= "C"> Atar</option>
                    <option value= "D"> Rosso</option>
         
                
</select>

             <br> <br>



                <label for= "titre">Titre de votre annonce</label>
                <input type="text" id="titre" name="titre">  <br> <br>

                <label for= "presentation">Présentation de votre annonce</label>
                <textarea id="presentation" name="presentation" rows="4" cols="50"> </textarea> <br> <br> <br> <br>

                <label for= "prix">Prix</label>
                <input type="number" id="prix" name="prix">  <br> <br>
                
                <label for="phone">Téléphone</label>
                <input type="tel" id="phone" name="phone"> <br> <br>

                <label for= "mail">Email (optionnel) </label>
                <input type="email" id="mail" name="mail" /> <br> <br>


                <label for= "image">Photos</label>
                <input type="file" id="img" name="img" accept="image/png, image/jpeg">  <br> <br>


                <input type="submit" id='submit' name="formannonce" value='Valider' >
             
            </form>
</fieldset>
</div>
        </div>
    </body>
</html>


2 réponses

jordane45 Messages postés 38326 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 2 décembre 2024 4 711
29 oct. 2021 à 09:39
Bonjour,

Et bien.. c'est simple .....
Tu as écris ta requête SQL ... mais à aucun moment tu ne l'exécutes .... ( comme si tu avais rempli un verre d'eau que tu n'avais pas bu... et que tu nous dises ensuite que tu as toujours soif... :-) )

Je te conseille, au passage, d'utiliser les requêtes préparées ainsi que de bien activer l'affichage des éventuels messages d'erreurs PDO.
Pour ça, regarde l'exemple fourni ici https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs

0
Super! Merci infiniment pour le lien :). Voici donc l'exécution de la requête pour que le code marche:

  $sql= "INSERT INTO annonces(categorie,ville,titre,presentation,prix,telephone,email,photo) VALUES('$categorie','$villes','$titre','$presentation','$prix','$phone','$mail','$photo')";
  $datas= array($categorie, $villes, $titre, $phone, $mail, $prix, $presentation, $photo);

//Execution de la requete
try{
    $requete = $bdd -> prepare($sql) ;
    $requete->execute($datas) ;
  }catch(Exception $e){
    // en cas d'erreur :
     echo " Erreur ! ".$e->getMessage();
     echo " Les datas : " ;
    print_r($datas);
  }

0
jordane45 Messages postés 38326 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 2 décembre 2024 4 711
Modifié le 29 oct. 2021 à 11:56
presque ...
remplace
 $sql= "INSERT INTO annonces(categorie,ville,titre,presentation,prix,telephone,email,photo) 
VALUES('$categorie','$villes','$titre','$presentation','$prix','$phone','$mail','$photo')";


par
 $sql= "INSERT INTO annonces(categorie,ville,titre,presentation,prix,telephone,email,photo) 
VALUES(?,?,?,?,?,?,?)";

0