Problème if/else...

Résolu/Fermé
globalslyced Messages postés 54 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 23 mars 2010 - 27 mai 2008 à 13:59
globalslyced Messages postés 54 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 23 mars 2010 - 27 mai 2008 à 15:07
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

4 réponses

Mimiste Messages postés 1149 Date d'inscription samedi 17 mai 2008 Statut Membre Dernière intervention 6 mars 2016 206
27 mai 2008 à 14:15
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
globalslyced Messages postés 54 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 23 mars 2010 3
27 mai 2008 à 14:18
Ok mais comment fait-on pour compter des lignes ... ?
0
Mimiste Messages postés 1149 Date d'inscription samedi 17 mai 2008 Statut Membre Dernière intervention 6 mars 2016 206
27 mai 2008 à 14:20
$NbLignes = mysql_num_rows($infos);
0
Barracuda8 Messages postés 108 Date d'inscription vendredi 4 mai 2007 Statut Membre Dernière intervention 19 décembre 2011 65
27 mai 2008 à 14:31
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
globalslyced Messages postés 54 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 23 mars 2010 3
27 mai 2008 à 15:07
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