Test d'une shoutbox - fonction php mal appelée ?
Bonjour,
J'ai voulu "jouer" avec un script de shoutbox trouvé sur www.yensdesign.com, mais je rencontre un soucis : l'appel à la fonction PHP qui sauvegarde ne semble pas se faire correctement.
A l'aide de firebug, je constate que je passe bien pas la fonction d'appel dans le js, mais il ne semble rien se passer côté PHP (j'ai mis quelques lignes très moches de logs pour tester)
le code :
Code:
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
| $(document).ready(function(){
//global vars
var inputUser = $("#shoutboxUser");
var inputMessage = $("#shoutboxMessage");
var loading = $("#shoutboxLoading");
var messageList = $(".shoutboxContent > ul");
//functions
function updateShoutbox(){
//just for the fade effect
messageList.hide();
loading.fadeIn();
//send the post to shoutbox.php
$.ajax({
type: "POST", url: "shoutbox.php", data: "action=update",
complete: function(data){
loading.fadeOut();
messageList.html(data.responseText);
messageList.fadeIn(2000);
}
});
}
//check if all fields are filled
function checkForm(){
if(inputUser.attr("value") && inputMessage.attr("value"))
return true;
else
return false;
}
//Load for the first time the shoutbox data
updateShoutbox();
//on submit event
$("#shoutboxForm").submit(function(){
if(checkForm()){
var nick = inputUser.attr("value");
var message = inputMessage.attr("value");
//we deactivate submit button while sending
$("#shoutboxSend").attr({ disabled:true, value:"Sending..." });
$("#shoutboxSend").blur();
//send the post to shoutbox.php
$.ajax({
type: "POST", url: "shoutbox.php", data: "action=insert&nick=" + nick + "&message=" + message,
complete: function(data){
messageList.html(data.responseText);
updateShoutbox();
//reactivate the send button
$("#shoutboxSend").attr({ disabled:false, value:"Shout it!" });
}
});
}
else alert("Please fill all fields!");
$("#shoutboxMessage").attr("value") = "";
//we prevent the refresh of the page after submitting the form
return false;
});
}); |
Code:
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
| function getContent($num){
$res = mysql_query("SELECT date, user, message FROM shoutbox ORDER BY date DESC LIMIT ".$num);
if(!$res)
die("Error: ".mysql_error());
else
return $res;
}
function insertMessage($user, $message){
$userToInsert = mysql_real_escape_string(strip_tags($user));
$messageToInsert = mysql_real_escape_string(strip_tags($message));
$dateToInsert = Date('d/m/Y H:i:s');
$idToInsert = 0;
$logMsg = "";
$logMsg .= "User = $userToInsert\nMessage = $messageToInsert\nDate = $dateToInsert\n";
$query="SELECT max(id) FROM shoutbox";
$result=mysql_query($query) or die (mysql_error());
while ($row=mysql_fetch_array($result))
{
$idToInsert=$row[0];
}
$idToInsert = $idToInsert+1;
$logMsg .= "Id = $idToInsert\n";
$query = "INSERT INTO shoutbox(id,date, user, message) VALUES('$idToInsert','$dateToInsert', '$userToInsert', '$messageToInsert')";
$res = mysql_query($query);
$logMsg .= "Res = $res\n";
if(!$res) {
$logMsg .= "Error: ".mysql_error()."/n";
$fp = fopen("logs.txt","a");
fwrite($fp,$logMsg);
fclose($fp);
die("Error: ".mysql_error());
}
else {
$fp = fopen("logs.txt","a");
fwrite($fp,$logMsg);
fclose($fp);
return $res;
}
}
/******************************
MANAGE REQUESTS
/******************************/
switch($_POST['action']){
case "update":
$res = getContent(20);
$result = "";
while($row = mysql_fetch_array($res)){
$result .= "<li><span class='shoutboxUser'>".$row['user']."</span><img src=\"img/shoutbox/bullet.gif\" alt=\"-\" />".$row['message']." <span class=\"shoutboxDate\">(".$row['date'].")</span></li>";
}
echo $result;
break;
case "insert":
echo insertMessage($_POST['nick'], $_POST['message']);
break;
} |
Oui, bon, ok, je sais que ma manière d'insérer le code dans InsertMessage n'est pas tres sexy, mais bon ...
Information complémentaire : pas systématique, à savoir que cela est rare en local, mais quasiment la majorité en "prod".
Cela vous inspire t'il ?