Upload en php ajax instantanément

Fermé
uahinsi Messages postés 1 Date d'inscription samedi 2 mars 2019 Statut Membre Dernière intervention 2 mars 2019 - Modifié le 2 mars 2019 à 21:49
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 - 2 mars 2019 à 21:53
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
A voir également:

1 réponse

jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
2 mars 2019 à 21:53
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