Problème affichage conditionnel d'une requête sql

Résolu
xxiv Messages postés 29 Date d'inscription mardi 16 septembre 2008 Statut Membre Dernière intervention 4 novembre 2010 - 14 janv. 2009 à 12:29
xxiv Messages postés 29 Date d'inscription mardi 16 septembre 2008 Statut Membre Dernière intervention 4 novembre 2010 - 14 janv. 2009 à 17:26
Bonjour à tous,

Je vous expose ce qui devrais se passer.

Les personnes inscrites peuvent choisir que leur nom et prénom apparaissent ou non.
Mais si ils ont laissé un commentaire il apparait quand même; si non visible et pas de commentaire ne pas afficher.

Mais je n'ai que ceux qui ne sont pas visible et avec un commentaire qui apparaissent aucun autre.

Merci d'avance de votre aide
// Creation et envoi de la requete
$query = "SELECT id,nom,prenom,comm,visible FROM form ORDER BY id  DESC";

$result = mysql_query($query);

// Recuperation des resultats
while($row = mysql_fetch_row($result)){
$id = $row[0];

$nom = $row[1];

$prenom = $row[2];

$commentaire = nl2br($row[3]);

$visible = $row[4];

// Si strictement visible afficher $id $nom $prenom $commentaire
if($vissible== o)  
{echo "<tr>
<td>$id&amp;nbsp;&amp;nbsp;$nom&amp;nbsp;$prenom
</td>
<td>$commentaire

</td>
</tr>";}

// Sinon si strictement non visible et commentaire strictement different de null afficher $id $commentaire
elseif($visible==n &amp;&amp; $commentaire!=NULL) 
    { 
    echo "<tr>
    <td>$id
</td>
    <td>$commentaire

</td>
    </tr>";
    }

//Dans tout les autres cas ne rien afficher    
else{
echo "RIEN!!!";

}

}

9 réponses

theguitou Messages postés 75 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 14 janvier 2009 34
14 janv. 2009 à 13:23
Salut,

Au moins deux problèmes :

if($vissible= = o)

et
elseif($visiblen && $commentaire!NULL)

C'est quoi 'n' ?
3
theguitou Messages postés 75 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 14 janvier 2009 34
14 janv. 2009 à 17:08
$i = 0;

while($row = mysql_fetch_row($result)) {
  $id = $row[0];
  $nom = $row[1];
  $prenom = $row[2];
  $commentaire = nl2br($row[3]);
  $visible = $row[4];

  $i++;  $color ($i%2 0) ? "color1" : "color2";

  if($visible == o) {
    echo "<tr class="$color">
          <td>$id&nbsp;&nbsp;$nom&nbsp;$prenom
</td>
          <td>$commentaire

</td>
          </tr>";
    }
  elseif($visible == n && $commentaire != NULL) {
    echo "<tr class="$color">
          <td>$id
</td>
          <td>$commentaire

</td>
          </tr>";
  }   
  else {
    echo "RIEN!!!";
    $i--;
  }
}

à tester...
3
xxiv Messages postés 29 Date d'inscription mardi 16 septembre 2008 Statut Membre Dernière intervention 4 novembre 2010
14 janv. 2009 à 13:34
Merci je n'avais aps vu mon S de trop.
Sinon le "n" non visible et "o" oui visible
0
Teclis01 Messages postés 1423 Date d'inscription mardi 14 décembre 2004 Statut Membre Dernière intervention 29 décembre 2012 4
14 janv. 2009 à 13:52
Un tiny int de 1 aurait suffit di diou !Oui ou Non 1 ou 0 booléen ^_^

Il vaut mieux poser une question et passer pour bête que le rester toute sa vie

Les geeks n'ont pas une case en moins ils commencent juste à compter à partir de zéro
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
theguitou Messages postés 75 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 14 janvier 2009 34
14 janv. 2009 à 16:41
Ce que voulais dire, c'est qu'à moins qu'il y est un define ailleurs dans le code, ce n tout seul (et pas $n ou "n") me paraît foireux...
0
xxiv Messages postés 29 Date d'inscription mardi 16 septembre 2008 Statut Membre Dernière intervention 4 novembre 2010
14 janv. 2009 à 16:47
Dans ma table Sql le champ "visible" est de type "SET" avec les valeurs " 'o','n' "

Sinon au passage une idée pour les faire apparaitre dans des "boites" de la largeur de la page avec un font de couleur différent une fois sur deux?
0
theguitou Messages postés 75 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 14 janvier 2009 34
14 janv. 2009 à 16:52
$i = 0;

while($row = mysql_fetch_row($result)) {
  if($i % 2 == 0) echo '<tr class="color1">...</tr>';
  else echo '<tr class="color2">...</tr>';
  $i++;
}
0
xxiv Messages postés 29 Date d'inscription mardi 16 septembre 2008 Statut Membre Dernière intervention 4 novembre 2010
14 janv. 2009 à 16:57
Merci beaucoup,
je vais peut-être exagérer, mais je ne vois pas comment l'intégrer dans mon code vu les conditions existantes
0
xxiv Messages postés 29 Date d'inscription mardi 16 septembre 2008 Statut Membre Dernière intervention 4 novembre 2010
14 janv. 2009 à 17:26
ça marche!!
Theguitou  encore un tout grand merci à toi [javascript:Insert_Emoticon('/imgs2/smile_tongue.gif'); ]

XXIV
0