IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

jQuery Discussion :

Test d'une shoutbox - fonction php mal appelée ?


Sujet :

jQuery

  1. #1
    Membre à l'essai
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Mars 2002
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 23
    Points : 13
    Points
    13
    Par défaut 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 : 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 ?

  2. #2
    Membre à l'essai
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Mars 2002
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 23
    Points : 13
    Points
    13
    Par défaut
    En tout cas, les modérateurs auront eu au moins le loisir de s'amuser à changer plusieurs fois ce sujet de forum ...

Discussions similaires

  1. récupere resultat test d'une autre fonction
    Par jules_diedhiou dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 08/04/2013, 14h49
  2. Réponses: 2
    Dernier message: 03/04/2006, 19h38
  3. Réponses: 6
    Dernier message: 16/11/2005, 21h43
  4. Réponses: 3
    Dernier message: 06/11/2005, 19h02
  5. Réponses: 7
    Dernier message: 08/10/2005, 09h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo