Problème if/else...

Résolu
globalslyced Messages postés 55 Statut Membre -  
globalslyced Messages postés 55 Statut Membre -
Bonjour,

Je réalise actuellement un script de commentaires pour mon site et un problème se pose je n'arrive pas par les conditions if et else à afficher certains messages.
Pour être plus clair :

<?php

require_once('includes/config.sql.php');
require_once('includes/class.sql.php');
$db = new sql($host, $user, $pass, $db);

$infos = mysql_query('SELECT * FROM commentaires WHERE idnews='.$_GET['idnews'].' ORDER BY id DESC');
while ($donnees = mysql_fetch_array($infos))
{
$pseudo = stripslashes($donnees['pseudo']);
$message = stripslashes($donnees['message']);
$variable = 1;
?>

Commentaire de <?php echo $pseudo ; ?> :
<br>
<?php
if($variable == 1 )
{
echo $message;
}
else
{
echo 'Pas de commentaires pour le moment';
}
?>
<br />
<br />
<?php
}
if (isset($_POST['message']) AND isset($_POST['pseudo']))
{
if($_POST['message'] != '' AND $_POST['pseudo'] != '')
{
$auteur = addslashes(htmlentities($_POST['pseudo'], ENT_QUOTES));
$message = addslashes(htmlentities($_POST['message'], ENT_QUOTES));
$idcomment = $_POST['idcomment'];

mysql_query ("INSERT INTO commentaires VALUES('', '" . $auteur . "', '" . $message . "', '" . $idcomment . "')")or die (mysql_error());

echo "Merci d'avoir commenté !";
}
}
?>

En fait j'aimerais par les conditions if et else afficher les commentaires quand il y en a, et afficher un message du type "Pas de commentaires pour le moment..." quand il 'y en a pas.

Bref je me casse la tête la dessus, j'ai pourtant essayer à plusieurs reprises mais rien à faire, il m'affcihe jamais ce que je veux,

Si vous ouviez m'aiguiller je vous serais très reconnaissant
Merci d'avance
Configuration: Windows XP
Firefox 2.0.0.13

4 réponses

  1. Mimiste Messages postés 1159 Statut Membre 206
     
    il faudrai que tu compte le nombre de ligne que te retourne cette requete, si tu a 0 lignes c'est qu'il n'y a pas de commentaire
    0
  2. globalslyced Messages postés 55 Statut Membre 3
     
    Ok mais comment fait-on pour compter des lignes ... ?
    0
    1. Mimiste Messages postés 1159 Statut Membre 206
       
      $NbLignes = mysql_num_rows($infos);
      0
  3. Barracuda8 Messages postés 108 Date d'inscription   Statut Membre Dernière intervention   72
     
    Salut,

    Qu'est ce qu'il taffiche? Là, à mon avis, il va afficher toutes les lignes où un commentaire existe et ne jamais dire quand il n'y a pas de commentaire.

    Reprenons:

    $infos = mysql_query('SELECT * FROM commentaires WHERE idnews='.$_GET['idnews'].' ORDER BY id DESC');
    while ($donnees = mysql_fetch_array($infos))
    {
    $pseudo = stripslashes($donnees['pseudo']);
    $message = stripslashes($donnees['message']);

    $variable = 1; //est à 1 si commentaire 0 sinon?
    //Ca ne sert à rien vu que ta requête renvoie des valeurs quand elles existent et rien sinon
    //C'est ca le coeur de ton probleme!

    ?>

    Commentaire de <?php echo $pseudo ; ?> :
    <br>
    <?php
    if($variable == 1 ) //donc effectivement si tu as un commentaire tu passeras bien ici
    {
    echo $message;
    }
    else //mais tu passeras jamais là vu que $variable ne change jamais de valeur et n'est jamais differente de 1
    {
    echo 'Pas de commentaires pour le moment';
    }
    ?>
    <br />
    <br />
    <?php
    }

    ------------------------------------------------Tu peux essayer ca------------------------------------------------------------

    $variable = 0; //Je transforme $variable en compteur de commentaires que j'initialise à 0, je le place avant le WHILE

    $infos = mysql_query('SELECT * FROM commentaires WHERE idnews='.$_GET['idnews'].' ORDER BY id DESC');
    while ($donnees = mysql_fetch_array($infos))
    {
    $pseudo = stripslashes($donnees['pseudo']);
    $message = stripslashes($donnees['message']);
    //On a un commentaire donc on peut incrementer notre compteur
    $variable ++;

    ?>
    //Tu peux essayer de concatener les chaines que tu veux afficher, c'est plus propre, là je laisse comme c'était.

    Commentaire de <?php echo $pseudo ; ?> :
    <br>
    <?php

    //tu affiches le commentaire qui existe forcement sinon on ne serait pas entré dans le WHILE donc pas de test à faire
    echo $message;
    }

    }// fin du WHILE, tous les commentaires existant sont affichés

    //Mais si on a pas de commentaire enregistré, on ne passe pas dans le WHILE et notre compteur reste à 0
    //Donc on peut le tester

    if( $variable == 0)
    {
    echo 'Pas de commentaires pour le moment';
    }
    ?>

    Voilà le principe, après j'ai pas testé le code transformé donc il y a pê des erreurs mais la logique de programmation est là.

    Bonne journée!
    Barracuda.
    0
  4. globalslyced Messages postés 55 Statut Membre 3
     
    Je vous remercie tous pour vos conseils, maintenantmon script fonctionne parfaitement !
    J'ai bien concaténer comme m'a dit Barracuda ! J'ai soigné un peu la présentation et paf sa fait des chocapics !! ^^

    Merci encore

    Un apperçu ici : http://coldfiction.free.fr/Manu
    0