J'envoie des données de formulaire par ajax, mais on m'affiche ce type d'erreur : 500 Internal Server Error. Pourtant, je ne vois pas où ça cloche. Cependant, lorsque j'envoie seulement UNE donnée, ça fonctionne. Je ne vois pas où est le problème dans ma concaténation de la variable donnée...
Je dois envoyer le tout en POST pour ne pas dépassé la limite de caractère en GET, puisque qu'il peut s'y enregistrer des articles très très longs.
Page news.php
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137 <?php require_once('../Connections/connexion.php'); ?> <?php session_start(); if (!isset($_SESSION['user'])) { header ('Location: index.html'); } ?> <?php require_once('../include/fonctions_communes.inc.php'); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <? require_once('includes/head.inc.php'); ?> <title>Nouvelles</title> <script language="javascript" type="text/javascript"> $( document ).ready(function() { $(".submitNouvelle").click(function(){ for (instance in CKEDITOR.instances) { CKEDITOR.instances[instance].updateElement(); } var titre = $("#titre").val(); var tagline = $("#tagline").val(); var datepicker = $("#datepicker").val(); var nouvelle = $("#nouvelle").val(); var auteur = $("#auteur").val(); var categorie = $("#categorie").val(); var sujet = $("#sujet").val(); var donnee = "titre="+titre + "&tagline=" + tagline + "&datepicker=" + datepicker + "&nouvelle=" + nouvelle + "&auteur=" + auteur + "&categorie=" + categorie + "&sujet=" + sujet; jQuery.ajax({ type:"POST", url:"ajax/ajouterNouvelle.php", data: donnee, dataType:"html", success: function(contenu){ $("#messageEtat").append(contenu); } }); }); }); </script> </head> <body> <div class="contenu"> <? require_once('includes/menu.inc.php'); ?> <div class="page"> <div id="messageEtat"></div> <? //Ajouter ou supprimer une nouvelle if(isset($_POST['supprimer'])){ supprimerNouvelle(); } //Supprimer la nouvelle function supprimerNouvelle (){ $id = $_POST['supprimer']; $strDelete = "DELETE FROM beta_news WHERE id= $id"; mysql_query($strDelete); header('Location: news.php'); echo "<p class='avertissement-positif'>Votre nouvelle est supprimée.</p>"; } ?> <h2>Les nouvelles</h2> <div id="nouvelles"> <h3>Ajouter une nouvelle</h3> <div> <form method="post" action="<? $_SERVER['PHP_SELF']; ?>" name="ajouterNouvelle" id="ajouterNouvelle"> <p>Complétez bien tous les champs. </p> <p> <label for="titre">Titre de la nouvelle</label> <input type="text" maxlength="19" name="titre" id="titre" value="<? if (isset($_POST['titre'])){ echo $_POST['titre'];} ?>"/> </p> <p> <label for="tagline">Tagline</label> <input type="text" maxlength="41" name="tagline" id="tagline" value="<? if (isset($_POST['tagline'])){ echo $_POST['tagline'];} ?>" /> </p> <p> <label for="datepicker">Date</label> <input type="text" id="datepicker" name="datepicker" value="<? if (isset($_POST['datepicker'])){ echo $_POST['datepicker'];} ?>"/> </p> <p class="ckeditor"> Contenu de la nouvelle : </p> <p><textarea id="nouvelle" name="nouvelle"><? if (isset($_POST['nouvelle'])){ echo $_POST['nouvelle'];} ?></textarea></p> <p> <label for="auteur">Auteur : </label> <input type="text" maxlength="25" name="auteur" id="auteur" value="<? if (isset($_POST['auteur'])){ echo $_POST['auteur'];} ?>" /> </p> <p><label for="categorie" >Catégorie :</label> <select id="categorie" name="categorie"> <option value="article">Article</option> <option value="rubrique">Rubrique</option> <option value="general">Général</option> </select> </p> <p><label for="sujet" >Sujet de la nouvelle :</label> <select id="sujet" name="sujet"> <? //Liste le sujet de la nouvelle $strSujet = ""; $strRequeteSujet = "SELECT * FROM beta_subject"; $resultatSujet = mysql_query($strRequeteSujet) or die("La requête sujet a échoué"); if(mysql_num_rows($resultatSujet)==0){ echo "Aucun sujet n'a été trouvé"; exit; } while($a_sujet=mysql_fetch_array($resultatSujet,MYSQL_ASSOC)){ $strSujet.="<option value={$a_sujet['id']}> {$a_sujet['title']} </option>"; } echo $strSujet; mysql_free_result($resultatSujet); ?> </select> </p> <p> <input type="button" class="submitNouvelle" value="Ajouter" id="ajouter" name="ajouter" /> </p> </form> </div> </div> </div> </body> </html>
Voici la page appelée par ajax :
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 //Ajouter la nouvelle if(!empty($_POST)){ $titre = $_POST['titre']; $tagline = $_POST['tagline']; $date = $_POST['datepicker']; $nouvelle = $_POST['nouvelle']; $auteur = $_POST['auteur']; $slug = Slug($titre); $categorie = $_POST['categorie']; $sujet = $_POST['sujet']; $strRequeteAjouter = "INSERT INTO beta_news (title,summary,published_date,text,slug,cat,auteur,subject_id) VALUES ('{$titre}','{$tagline}','{$date}','{$nouvelle}','{$slug}','{$categorie}','{$auteur}',$sujet) "; if(mysql_query($strRequeteAjouter)){; echo "<p class='avertissement-positif'>Votre nouvelle est ajoutée</p>"; }else{ echo "<p class='avertissement-negatif'>Il y a eu un problème lors de votre enregistrement.</p>"; } }else{ echo "<p class='avertissement-negatif'>Votre nouvelle n'a pas été ajoutée. Veuillez compléter le formulaire au complet.</p>"; }
Merci à celui où celle qui peut résoudre mon problème.
Partager