Upload en php ajax instantanément

uahinsi Messages postés 1 Statut Membre -  
jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   -
bonjour. j'ai un problème dont après plusieurs recherche j'ai plus le choix que vous.

je veut uploader un fichier type='file' et l'enregistrer dans un dossier et dans une bdd avec son textarea et d'autres information sur la personne qui a publier. je veut le faire instantanément sans recharger ma page web donc ajax est le mieux placer pour ça,

si je le fait sans ajax tout marche bien mais si je le fait avec ajax rien ne marche ni dans la bdd ni dans le dossier d'image. pourtant j'ai besoin d'ajax pour ne pas recharger ma page.

publication.php:
<form method="post" action="" id="pub_form" enctype="multipart/form-data">
  <input type="file" name="photo_pub" id="photo_pub">
  <textarea rows="15" id="legend_photo_video" name="legend_photo_video"></textarea>
  <input type="submit" name="submit" id="submit" value="Publier">
</form>
<div id="pub_message"></div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
    $(document).ready(function(){
        $('#pub_form').on('submit', function(event){
        event.preventDefault();
            var form_data = $(this).serialize();
            $.ajax({
                url : "publication_add.php",
                method : "POST",
                data : form_data,
                dataType : "JSON",
                success : function(data)
                {
                    if (data.error != '') {
                        $('#pub_form')[0].reset();
                        $('#pub_message').html(data.error);
                        load_comment();
                    }
                }
            })
        });
    });
</script>


publication_add.php
<?php
    if (session_status() == PHP_SESSION_NONE) {
        session_start();
    }
    require_once'inc/functions.php';
$pdo = new PDO('mysql:host=localhost;dbname=comment', 'root', '');
    if (isset($_SESSION['auth']->id_user) AND $_SESSION['auth']->id_user > 0) {
        $iduser = intval($_SESSION['auth']->id_user);//on a creer a variable pour l'id de l'utilisateur
        $req = $pdo->prepare('SELECT id_user, nom_user, prenom_user, domaine_user, avatar_user FROM users WHERE id_user = ?');
        $req->execute(array($iduser));
        $infouser = $req->fetch();
  
        $error = '';
          
        if (isset($_FILES['photo_pub'])){
            $legend_photo = htmlspecialchars($_POST['legend_photo_video']);
            $taillephotomax = 2000000;
            $extensionphotovalide = array('png', 'jpg', 'jpeg', 'gif', 'ico', 'bmp', 'tiff', 'tif', 'svg');
            if ($_FILES['photo_pub']['size'] <=$taillephotomax) {
                $extensionphotoupload = strtolower(substr(strrchr($_FILES['photo_pub']['name'], '.'), 1));
                $cheminphoto = "image/photovideopublier/" .$_SESSION['auth']->id_user."_photo".$infouser->nom_user."." .$extensionphotoupload;
                $resultatphoto = move_uploaded_file($_FILES['photo_pub']['tmp_name'], $cheminphoto);
                if (in_array($extensionphotoupload, $extensionphotovalide)) {
                    $req = $pdo->prepare('INSERT INTO publication (id_user_auteur, prenom_user_auteur, nom_user_auteur, avatar_user_auteur, domaine_user_auteur, nom_pub, legend_pub, date_time_pub) VALUES (?, ?, ?, ?, ?, ?, ?, NOW())');
                    $req->execute(array($infouser->id_user, $infouser->prenom_user, $infouser->nom_user, $infouser->avatar_user, $infouser->domaine_user, $_SESSION['auth']->id_user.'_photo_'.$infouser->nom_user.'.'.$extensionphotoupload, $legend_photo));
                }
                else{
                    //
                }
            }
            else{
                //
            }
        }
    }
    $data = array('error' => $error);
    echo json_encode($data);
?>


EDIT : Ajout des balises de code

1 réponse

  1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    Bonjour,

    Commence par ajouter le "error" dans ton ajax
    error: function (error) {
        alert('error ');
       console.log(error);
    }
    


    Puis active la gestion des erreurs PDOhttps://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs

    Et l'affichage des erreurs php:
    https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code

    regardes ensuite dans la console de ton navigateur si il n'y a pas de choses qui s'affichent et si ta requête ajax s'exécute correctement ( pour ça, je te conseille d'utiliser la console de firefox ou d'installer, pour chrome, le plugin ajax debuger )

    NB: A l'avenir, pour poster ton code, merci de le faire en utilisant les balises de code
    explications disponibles ici :
    https://codes-sources.commentcamarche.net/faq/11288-poster-un-extrait-de-code

    .
    0