Sujet : Utiliser les notifications en php/mysql

Bonjour à tous,

Je n'arrive vraiment pas a comprendre comment afficher une notification en jquery après un insert en php/mysql, voici mon code.

<!DOCTYPE html> 
<html>
<head> 
    <title>Notifications</title> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    ...
    <script src="js/library.js"></script>
    <script src="js/notification.js"></script>
    <script>
        $(document).ready(function() {            
    
            $('#timeout').click(function() {
                $.notification( 
                    {
                        title: "Success",
                        content: 'Vos infos ont bien été enregistrée',
                        timeout: 5000,
                        showTime: false,
                        icon: 'N'
                    }
                );
            });                    
        });
    </script>
    
</head> 
    
<body>
                        <?php
                        function quote_smart($value)
                        {
                            if (get_magic_quotes_gpc()) {
                                $value = stripslashes($value);
                            }
                            
                            if (!is_numeric($value)) {
                                $value =  mysql_real_escape_string($value);
                            }
                        
                            return $value;
                        }
                        
                                    
                        if ( isset ( $_POST['submit'] ) ) {
                            
                        $Nom = quote_smart($_POST['Nom']);
                        $Prenom = quote_smart($_POST['Prenom']);
                                                            
                        $names = "Id, Nom, Prenom";
                        $values = "'ID','$Nom','$Prenom'";
                        $req ="INSERT INTO ben (".$names.") VALUES (".$values.")";
                        mysql_query($req)  or die('mysql_error()');
                        
            echo '<p id="timeout"></p>';
            }
        ?> 

Je souhaite que lorsque l'ajout est fait la notification s'affiche, je ne vois pas le code à insérer dans le "echo".

J'ai compris pour .click, .ready() et on .load(), mais aucun ne fonctionne comme j'en ai besoin.

Merci d'avance.
Burnside.

Re : Utiliser les notifications en php/mysql

Re,

Bon voilà j'ai fait le code de cette façon...j'espère que c'est propre et pas un travail de bourin...

<!DOCTYPE html> 
<html>
<head> 
    <title>Notifications</title> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <link href="static/main.css" rel="stylesheet" type="text/css" media="screen" />
    <link href="static/demo/demo.css" rel="stylesheet" type="text/css" media="screen" />
    <script src="static/js/library.js"></script>
    <script src="static/js/notification.js"></script>
    
</head>
                            <?php
                        function quote_smart($value)
                        {
                            if (get_magic_quotes_gpc()) {
                                $value = stripslashes($value);
                            }
                            
                            if (!is_numeric($value)) {
                                $value =  mysql_real_escape_string($value);
                            }
                        
                            return $value;
                        }
                        
                                    
                        if ( isset ( $_POST['submit'] ) ) {
                            
                        $Nom = quote_smart($_POST['Nom']);
                        $Prenom = quote_smart($_POST['Prenom']);
                                                            
                        $names = "Id, Nom, Prenom";
                        $values = "'ID','$Nom','$Prenom'";
                        $req ="INSERT INTO ben (".$names.") VALUES (".$values.")";
                        mysql_query($req)  or die('<div class="notification msgerror">
                        <a class="close"></a>
                        <p>'. mysql_error() .'</p>
                        </div>');
                        
                        [b]echo "    <script>
                            $(document).ready(function() {            
                                $('#timeout').show(function() {
                                    $.notification( 
                                        {
                                            title: 'Success',
                                            content: 'Vos infos ont bien été enregistrée',
                                            timeout: 5000,
                                            showTime: false,
                                            icon: 'N'
                                        }
                                    );
                                });                    
                            });
                        </script>";[/b]

                        }
                        ?> 

Si quelqu'un peut m'expliquer en mieux je suis preneur.

Bàv,
Burnside.

Re : Utiliser les notifications en php/mysql

Hum oui, il faut qu'on t'explique un peu là.

Il faut que tu fasses la distinction entre ce qui s'exécute sur le serveur et ce qui se passe sur le client (le navigateur). Sur le premier, ton PHP et tes requêtes SQL  vont s'exécuter. Quand ce processus là sera fini, le serveur va envoyer le condensé de HTML/CSS/JavaScript au navigateur. Ce dernier prendra alors la relève pour afficher la page, la décorer avec le CSS et enfin exécuter ton code JavaScript et donc le code écrit à l'aide de jQuery.

Que tu aies écrit ton code JavaScript dans le HTML ou que ce soit PHP qui en fait un simple echo n'aura donc aucun impact quel qu'il soit. Maintenant que ça c'est clair, on peut passer à ton idée principal : notifier ton client quand l'enregistrement sur le serveur s'est bien passé.

Pour ça, tu n'as pas besoin de recharger toute une page. Tu as juste besoin de transmettre un ordre au serveur et que lui t'envoies une confirmation. jQuery a son utilité dans ce cas là. Je te laisse regarder la fonction $.ajax() qui te permettra de faire ça.
Et la notification que tu as déjà codé elle n'a plus qu'à atterrir dans le code de la fonction de callback de succès de la fonction $.ajax().

Tu allégeras ton serveur, l'enregistrement sera fait, le navigateur affichera la notification au moment opportun et toi, maintenant, tu connais le cycle suivi par l'exécution de ton code.