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 : 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
$(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 : 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
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 ?