Insertion ajax avec PHP
delaville81
Messages postés
209
Statut
Membre
-
delaville81 Messages postés 209 Statut Membre -
delaville81 Messages postés 209 Statut Membre -
Bonjour,
je cherche la bonne méthode pour insérer des données en BDD via JS/AJAX.
J'ai cherché mais je ne trouve pas
Le code JS
Le HTML
Le PHP
Merci d'avance pour votre aide
--
Bien PHPment et MySQLment
Delaville
je cherche la bonne méthode pour insérer des données en BDD via JS/AJAX.
J'ai cherché mais je ne trouve pas
Le code JS
$(document).ready(function (){
$("#publier").click(function (){
$.ajax({
url: 'subject.php',
type: 'POST',
data: {subject: $("#subject").val()},
success: function (result) {
alert('success');
}
});
});
});
Le HTML
<form>
<div class="div_flex">
<div class="col-1 col-sm-1 col-md-1 img-user">
<img src="<?php echo avatar($_SESSION['id_membre']); ?>" class="clipClass">
</div>
<div class="col-md-9">
<div class="form-group">
<textarea class="textarea-subject" name="subject" id="subject" rows="3" placeholder="Tapez votre texte<?php echo membre_prenom($_SESSION['id_membre']); ?>"></textarea>
<a class="btn_input"><i class="far fa-image" id="ico_image"></i><span class="name">Photos</span></a>
<input type="file" name="img_sujet" id="imgSujet" value="" lang="fr" accept=".jpg,.jpeg,.gif,.png" onchange="loadFile(event)">
</div>
</div>
</div>
<div class="image" id="image">
<img src="" id="output" class="img-fluid" alt="">
<a class="btn_del" onclick="delFile(event)"><i class="fas fa-trash-alt delete" id="trash"></i></a>
</div>
<div id="testdiv"></div>
<hr>
<div class="ligne_top"></div>
<div>
<button type="button" class="btn btn-primary btn-sm publier" id="publier">Publier</button>
</div>
</form>
Le PHP
require '../connexion.php';
$subject = $_POST['subject'];
$date_sujet = date("Y-m-d H:m:s");
$id_user = $_SESSION['id_user'];
$timeStamp = time();
$imgSujet = $_FILES['img_sujet'];
$sql_insert = "INSERT INTO sujet (id_user, date, texte_sujet) values (:id_user, :date, :texte_sujet)";
$stmt = $pdo->prepare($sql_insert);
include 'smiley_encode.php';
$nb = $stmt->execute(array(':id_user'=>$id_user, ':date'=>$date_sujet, ':texte_sujet'=>$subject));
$last_id = $pdo->lastInsertId();
Merci d'avance pour votre aide
Configuration: Macintosh / Safari 13.1
--
Bien PHPment et MySQLment
Delaville
6 réponses
-
Bonjour
Le bon code js ??
Ben.. c'est celui que tu nous montres....
-
Mon problème est que ça ne marche pas, aucune insertion ne s'effectue.
Je sollicite votre aide car je ne trouve pas l'erreur
Merci
-
J'ai testé sur Firefox, la console ne me retrouve aucune erreur.
J'ai réutilisé une fonction testée fonctionnelle dans un autre projet.
function insertData(){ var subject=$("#subject").val(); var img_sujet=$("#img_sujet").val(); var datas = {subject:subject,img_sujet:img_sujet}; // AJAX code to send data to php file. $.ajax({ type: "POST", url: "subject.php", //data: datas, data: datas, dataType: "JSON", success: function(data) { $("#message").html(data); $("p").addClass("alert alert-success"); }, error: function (xhr, ajaxOptions, thrownError) { alert(xhr.status); alert(thrownError); } }); }
En cliquant sur mon bouton publier (j'ai ajouté unonclick
) ma fonction
affiche bien le$("p").addClass("alert alert-success");, donc je pas bien dans le success.
Le problème est que les donnés ne sont pas transmises dans le PHP.
Comment faire ?
Merci
-
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
-
Que contient ton fichier php ?
Il semble qu'il renvoie une réponse : "test"
Mais je ne trouve aucune trace dans le code PHP que tu nous as posté précédemment de ce retour...
De plus applique les consignes donné ton ce lien
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
.
-
-
J'ai testé une autre fonction JS
function insertData(){ var form = $('form').get(0); var formData = new FormData(form); $.ajax({ type : 'POST', url : 'subject.php', data : formData, dataType : 'json', processData: false, contentType: false, success: function(formData) { $("#message").html(formData); $("p").addClass("alert alert-success"); }, error: function (xhr, ajaxOptions, thrownError) { alert(xhr.status); alert(thrownError); } }); }
Mon fichier PHPrequire '../connexion.php';//connexion à la base $subject = $_POST['subject']; $date_sujet = date("Y-m-d H:m:s"); $id_user = $_SESSION['id_user']; $timeStamp = time(); $imgSujet = $_FILES['img_sujet']; $sql_insert = "INSERT INTO sujet (id_user, date, texte_sujet) values (:id_user, :date, :texte_sujet)"; $stmt = $pdo->prepare($sql_insert); include 'smiley_encode.php'; $nb = $stmt->execute(array(':id_user'=>$id_user, ':date'=>$date_sujet, ':texte_sujet'=>$subject)); $last_id = $pdo->lastInsertId(); if (!empty($_FILES['img_sujet']['name'])) { $nom_fichier = $_FILES['img_sujet']['name']; $ext = explode('.', $nom_fichier); $ext = strtolower($ext[count($ext) - 1]); $nom_md5 = md5($nom_fichier); $taille = $_FILES['img_sujet']['size']; $type = $_FILES['img_sujet']['type']; $tmp = $_FILES['img_sujet']['tmp_name']; $chemin = utf8_encode(stripslashes($nom_fichier)); $dossier="blog/".$_SESSION['id_user'].''.$timeStamp.''.$last_id.".".$ext.""; if(move_uploaded_file ($_FILES['img_sujet']['tmp_name'][$i], $dossier)) { $img_sujet = $_SESSION['id_user'].''.$timeStamp.''.$last_id.".".$ext; $sql_img_sujet = "INSERT INTO img_sujet (id_sujet, id_user, date, img_sujet) values (:id_sujet, :id_user, :date, :img_sujet)"; $date_img = date("Y-m-d H:m:s"); $stmt=$pdo->prepare($sql_img_sujet); $nb = $stmt->execute(array(':id_sujet'=>$last_id, ':id_user'=>$id_user, ':date'=>$date_img, ':img_sujet'=>$img_sujet)); } } $array = [$_POST['subject'], $_FILES['img_sujet']]; // J'indique au navigateur que je retourne du JSON header('Content-type: application/json'); // Je transforme mon tableau en JSON et je l'imprime dans le body de ma réponse echo json_encode($array);
HTML<form id="publie" action="subject.php" method="post" enctype="multipart/form-data"> <div class="div_flex"> <div class="col-1 col-sm-1 col-md-1 img-user"> <img src="<?php echo avatar($_SESSION['id_membre']); ?>" class="clipClass"> </div> <div class="col-md-9"> <div class="form-group"> <textarea class="textarea-subject" name="subject" id="subject" rows="3" placeholder="Exprimez-vous, <?php echo membre_prenom($_SESSION['id_membre']); ?>"></textarea> <a class="btn_input"><i class="far fa-image" id="ico_image"></i><span class="name">Photos</span></a> <input type="file" name="img_sujet" id="img_sujet" value="" lang="fr" accept=".jpg,.jpeg,.gif,.png" onchange="loadFile(event)"> </div> </div> </div> <div class="image" id="image"> <img src="" id="output" class="img-fluid" alt=""> <a class="btn_del" onclick="delFile(event)"><i class="fas fa-trash-alt delete" id="trash"></i></a> </div> <div id="testdiv"></div> <hr> <div class="ligne_top"></div> <div> <button type="button" class="btn btn-primary btn-sm publier" id="publier" onclick="insertData()">Publier</button> </div> <p id="message"></p> </form>
Pour la réponse "teste" c'est que je tape dans le texarea de mon form.
Je vais suivre le lien que tu m'a envoyé (dans la journée).
Merci


