Problème if/else...
Résolu
globalslyced
Messages postés
54
Date d'inscription
Statut
Membre
Dernière intervention
-
globalslyced Messages postés 54 Date d'inscription Statut Membre Dernière intervention -
globalslyced Messages postés 54 Date d'inscription Statut Membre Dernière intervention -
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
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
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
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.
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.