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 :

Problème de shoutbox [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre éprouvé
    Avatar de Shugo78
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 119
    Points : 1 001
    Points
    1 001
    Par défaut Problème de shoutbox
    Bonjour
    Je voulais réaliser une shoutbox pour mon site, dont le fonctionnement était celui-ci :
    1 . Si on a quelque chose a enregistrer, on enregistre la table
    2 . On affiche les dix derniers message stocké dans la table
    On utilise un formulaire pour envoyer un message, il faut remplir deux champs :
    - pseudo
    - message
    Et ensuite on clique sur le bouton envoyer, voici mon script, il marche (a peu près ) mais il reste deux petits détails :
    - je n'arrive pas à n'afficher que les 10 derniers message !
    - lorsqu'un champ de la table est vide, il afficche ":" en début de ligne !
    Voici mon 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
     
    <html>
    <body>
    <form method="post" action="minichat.php">
    <label>Pseudo :   </label>
    <input type="text" name="pseudo"></input>
    <br>
    <label>Message :</label>
    <input type="text" name="message"></input>
    <br>
    <input type="submit" text="Envoyer"></input>
    </form>
    <?php
    // connection à la base de donnée 
    mysql_connect("localhost","root","");
    // choix de la base de donnée
    mysql_select_db("minichat");
    // Si les variables éxistent alors, l'utilisateur a bien renseigné les champs 
    if(isset($_POST['pseudo'])&&isset($_POST['message']))
    {
     /* dans ce cas, on assigne les variables à d'autre variables pour éviter des problèmes de balises */
     $pseudo = htmlspecialchars($_POST['pseudo']);
     $message = htmlspecialchars($_POST['message']);
     // on insert une nouvelle entrée dans la table
     $retour = mysql_query("INSERT INTO minichat(Pseudo, Message, ID) VALUES('$pseudo', '$message','')") or die(mysql_error());
    }
    // séléction
    $retour = mysql_query("SELECT * FROM minichat ORDER BY ID DESC");
    while($donnees = mysql_fetch_array($retour))
    {
    // afficaheg censé être conditionel !!!
     $increment = 0;
     if($increment<10)
     {
    ?>
    <strong>
    <?php
    echo $donnees['Pseudo'];
    ?>
    </strong>
    <?php
    echo " : ";
    echo $donnees['Message'];
    ?>
    <br>
    <?php
     }
    }
    // déconnection
    mysql_close();
    ?>
    </body>
    </html>
    Quelqu'un peut m'aider ?
    Omnes Vulnerant Ultima Necat
    Bye

  2. #2
    Membre éprouvé Avatar de sharrascript
    Homme Profil pro
    Développeur Web indépendant
    Inscrit en
    Avril 2007
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web indépendant

    Informations forums :
    Inscription : Avril 2007
    Messages : 678
    Points : 1 042
    Points
    1 042
    Par défaut
    bonsoir,

    Bon je n'aurais pas fait ainsi et je pense que j'aurais agencé le script autrement. Mais à première vu je peux t'aiguiller pour résoudre quelques uns de tes soucis:

    pour les 10 derniers messages:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $retour = mysql_query("SELECT * FROM minichat ORDER BY ID DESC LIMIT 10");
    plus besoin de ton $increment qui ne s'incrémente pas^^

    Ensuite je ferais dans tes enregistrements:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $retour = mysql_query("INSERT INTO minichat(Pseudo, Message) VALUES('$pseudo', '$message')") or die(mysql_error());
    Et l'ID serait en auto-incrémentations.

    Voilà ++
    LudiKreation Pour un web ludique et son Blog | CapRumbo pour un peu d'évasion | ChaOdisiaque Club Passion Rôliste |SierrElben le Jeu de rôle

  3. #3
    Membre éprouvé
    Avatar de Shugo78
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 119
    Points : 1 001
    Points
    1 001
    Par défaut
    Merci
    Citation Envoyé par sharrascript
    Et l'ID serait en auto-incrémentations.
    Il ne l'ai pas si je ne met rien ?
    Et pour mon problème de ":" ?
    Si je fais une comparaison avec une donnée vide, ça devrait aller, non ?
    Merci encore
    Omnes Vulnerant Ultima Necat
    Bye

  4. #4
    Membre éprouvé Avatar de sharrascript
    Homme Profil pro
    Développeur Web indépendant
    Inscrit en
    Avril 2007
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web indépendant

    Informations forums :
    Inscription : Avril 2007
    Messages : 678
    Points : 1 042
    Points
    1 042
    Par défaut
    Pas de quoi...

    Et l'ID serait en auto-incrémentations.
    Il ne l'ai pas si je ne met rien ?
    Normalement si au moment de la création de ta table tu l'as précisé, ce champs s'auto-incrémente. Si tu utilise phpMyAdmin vérifie et fait la modif si besoin, attention, ton champs doit être un champs numérique.

    Et pour mon problème de ":" ?
    Pour moi, tu devrais interdire les envois de champs vide,

    Voilà ++
    LudiKreation Pour un web ludique et son Blog | CapRumbo pour un peu d'évasion | ChaOdisiaque Club Passion Rôliste |SierrElben le Jeu de rôle

  5. #5
    Membre éprouvé
    Avatar de Shugo78
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 119
    Points : 1 001
    Points
    1 001
    Par défaut
    Voilà, ça marche avec ce code là :
    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
     
    <html>
    <body>
    <form method="post" action="minichat.php">
    <label>Pseudo :   </label>
    <input type="text" name="pseudo"></input>
    <br>
    <label>Message :</label>
    <input type="text" name="message"></input>
    <br>
    <input type="submit" text="Envoyer"></input>
    </form>
    <?php
    // connection à la base de donnée 
    mysql_connect("localhost","root","");
    // choix de la base de donnée
    mysql_select_db("minichat");
    // Si les variables éxistent alors, l'utilisateur a bien renseigné les champs 
    if(isset($_POST['pseudo'])&&isset($_POST['message']))
    {
     $pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo']));
     $message = mysql_real_escape_string(htmlspecialchars($_POST['message']));
     $retour = mysql_query("INSERT INTO minichat(Pseudo, Message, ID) VALUES('$pseudo', '$message','')") or die(mysql_error());
    }
    $retour = mysql_query("SELECT * FROM minichat ORDER BY ID DESC LIMIT 10");
    while($donnees = mysql_fetch_array($retour))
    {
     if($donnees['Message']!=""&&$donnees['Pseudo']!="")
     {
    ?>
    <strong>
    <?php
    echo $donnees['Pseudo'];
    ?>
    </strong>
    <?php
    echo " : ";
    echo $donnees['Message'];
    ?>
    <br>
    <?php
     }
    }
    // déconnection
    mysql_close();
    ?>
    </body>
    </html>
    Merci de ton aide
    Omnes Vulnerant Ultima Necat
    Bye

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème d'installation oracle 8.1.7 sous NT
    Par Anonymous dans le forum Installation
    Réponses: 7
    Dernier message: 02/08/2002, 14h18
  2. Problème d'impression
    Par IngBen dans le forum C++Builder
    Réponses: 7
    Dernier message: 22/05/2002, 11h37
  3. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10
  4. Réponses: 6
    Dernier message: 25/03/2002, 21h11

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