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

PHP & Base de données Discussion :

Alerte lors d'une insertion, à la "Facebook"


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2016
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Mars 2016
    Messages : 38
    Points : 23
    Points
    23
    Par défaut Alerte lors d'une insertion, à la "Facebook"
    Bonjour à tous.

    Je suis en train d'essayer de réaliser un système d'alerte, comme Facebook, où, lorsque je poste une info sur une page admin, mes clients sont prévenu en étant sur une page qu'ils affichent tout le temps sur leur navigateur.

    J'ai donc installer Xampp, j'ai crée une base Mysql nommée alerte, et j'ai crée une table :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CREATE TABLE IF NOT EXISTS `messageTest` (
    `id` int(50) NOT NULL AUTO_INCREMENT,
    `notification` varchar(255) NOT NULL,
    `status` varchar(50) NOT NULL,
    PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
    puis dans htdocs, création d'un dossier alerte, contenant index.php avec :

    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
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    <!doctype html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>Document sans titre</title>
    <style>
    #notification_count
    {
    padding: 0px 3px 3px 7px;
    background: #cc0000;
    color: #ffffff;
    font-weight: bold;
    margin-left: 77px;
    border-radius: 9px;
    -moz-border-radius: 9px;
    -webkit-border-radius: 9px;
    position: absolute;
    margin-top: -1px;
    font-size: 10px;
    }
    </style>
     
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js" type="text/javascript" charset="utf-8"></script>
    <script type="text/javascript" charset="utf-8">
     
    function addmsg(type, msg){
     
    $('#notification_count').html(msg);
     
    }
     
    function waitForMsg(){
     
    $.ajax({
    type: "GET",
    url: "select.php",
     
    async: true,
    cache: false,
    timeout:50000,
     
    success: function(data){
    addmsg("new", data);
    setTimeout(
    waitForMsg,
    1000
    );
    },
    error: function(XMLHttpRequest, textStatus, errorThrown){
    addmsg("error", textStatus + " (" + errorThrown + ")");
    setTimeout(
    waitForMsg,
    15000);
    }
    });
    };
     
    $(document).ready(function(){
     
    waitForMsg();
     
    });
     
    </script>
    </head>
     
    <body>
    <span id="notification_count"></span>
    <a href="#" id="notificationLink" onclick = "return getNotification()">Notifications</a>
    <div id="HTMLnoti" style="textalign:center"></div>
    </body>
    </html>
    et dans select.php :

    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
    <?php
           $servername = "localhost";
           $username = "root";
           $password = "monmotdepasse";
           $dbname = "alerte";
     
           // Create connection
     
           $conn = new mysqli($servername, $username, $password, $dbname);
     
           // Check connection
     
           if ($conn->connect_error) {
     
               die("Connection failed: " . $conn->connect_error);
     
           } 
     
           $sql = "SELECT * from messageTest where status = 'unread'";
           $result = $conn->query($sql);
           $row = $result->fetch_assoc();
           $count = $result->num_rows;
           echo $count;
           $conn->close();
    ?>
    Mais sur ma page s'affiche "parsererror (undefined)" à la place du compteur.

    Une idée de l'erreur ?

    Merci à tous :-)

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Non.
    Il faudrait nous donner le vrai message d'erreur (complet).

    Tu peux aussi tester select.php directement dans la barre d'adresse (sans passer par ajax).
    Tu verras bien si le compteur s'affiche.

  3. #3
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,

    1-
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onclick = "return getNotification()">
    La fonction getNotification() n'existe pas, c'est waitForMsg.

    2- Si c'est pour compter, inutile de charger toute les enregistrements de la table qui va bouffer de ressource et pénalise la performance.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $sql = "SELECT count(id_table) as nbMsg from messageTest where status = 'unread'";
           $result = $conn->query($sql);
           $row = $result->fetch_assoc();
           $count = $row["nbMsg"];
    A+.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2016
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Mars 2016
    Messages : 38
    Points : 23
    Points
    23
    Par défaut
    Merci jreaux62, voici l'erreur :
    connect_error) { die("Connection failed: " . $conn->connect_error); } $sql = "SELECT * from messageTest where status = 'unread'"; $result = $conn->query($sql); $row = $result->fetch_assoc(); $count = $result->num_rows; echo $count; $conn->close(); ?>
    Il me semble pourtant avoir bien fait :


    andry.aime, merci, je fais la modif dès que j'arrive à faire marcher la chose.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bon.

    Il prend le > de ->connct_error pour une balise de fermeture ?> !

    • Vérifie l'encodage du fichier "select.php" -> "utf-8 SANS BOM"
    • Ajoute au début :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <?php
    header('Content-type:text/html; charset=UTF-8');	// encodage UTF-8

  6. #6
    Membre à l'essai
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2016
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Mars 2016
    Messages : 38
    Points : 23
    Points
    23
    Par défaut
    Alors, j'ai donc dans mon select.php, tout ceci :

    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
    <?php
    header('Content-type:text/html; charset=UTF-8');
     
           $servername = "localhost";
           $username = "root";
           $password = "lemotdepasse";
           $dbname = "alerte";
     
           // Create connection
     
           $conn = new mysqli($servername, $username, $password, $dbname);
     
           // Check connection
     
           if ($conn->connect_error) {
     
               die("Connection failed: " . $conn->connect_error);
     
           } 
     
           $sql = "SELECT * from messageTest where status = 'unread'";
           $result = $conn->query($sql);
           $row = $result->fetch_assoc();
           $count = $result->num_rows;
           echo $count;
           $conn->close();
    ?>
    Firefox m'affiche :
    connect_error) { die("Connection failed: " . $conn->connect_error); } $sql = "SELECT * from messageTest where status = 'unread'"; $result = $conn->query($sql); $row = $result->fetch_assoc(); $count = $result->num_rows; echo $count; $conn->close(); ?>
    Merci

Discussions similaires

  1. Réponses: 13
    Dernier message: 14/05/2008, 16h22
  2. [BDE] Echec de contrôle lors d'une insertion
    Par rbag dans le forum Bases de données
    Réponses: 2
    Dernier message: 26/11/2004, 09h57
  3. PB date lors d'une insertion en Base.
    Par NATHW dans le forum Langage SQL
    Réponses: 4
    Dernier message: 09/09/2004, 17h53

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