Problème d'essence ^^ IF ... ELSE ...

Résolu
Signaler
Messages postés
9
Date d'inscription
dimanche 31 août 2008
Statut
Membre
Dernière intervention
7 mai 2011
-
Messages postés
9
Date d'inscription
dimanche 31 août 2008
Statut
Membre
Dernière intervention
7 mai 2011
-
Bonjour et tout mes voeux pour cette nouvelle année à ceux et celles qui lirons ce post!

Comme dit plus haut, j'ai un problème d'IF !

je passe outre la connexion à la DB, car elle fonctionne.

Voilà le code :
<?php
echo mysql_num_rows(mysql_query("Select id FROM ak_msg"))." messages en attentes";

// Requête pour tout les messages
$req = mysql_query("Select * from ak_livredor Order by id Desc") or die ("Erreur requête : ".mysql_error());

// On prend toutes les valeurs de la requête dans un tableau fetch_array et exploiter via une boucle while
if (mysql_num_rows($req)<1){
echo "Il n'y à aucun message";
}
else {
while ($donnee = mysql_fetch_array($req)){
// Sortie du résultat
if (($donnee[rnom])!=NULL) {
echo "Posté par ".$donnee[pnom]." le ".$donnee[pdate].",
Réponse de ".$donnee[rnom]." le ".$donnee[rdate].",

----

".nl2br($donnee[msg]).",
".nl2br($donnee[rmsg])."
";
}
else {
echo "Posté par ".$donnee[pnom]." le ".$donnee[pdate].",

----

".nl2br($donnee[msg])."
";
}
echo "<hr>";
}
mysql_close();
//Fin de la boucle while, fermeture de la connexion MySQL
}
?>


petite explication :
les messages sont display dans un tableau pour chaque message, avec une séparation entre chaque tableau via la balise HTML <hr>.

Dans la construction de chaque tableau, selon que le message à une réponse ou non, on affiche deux cellules ou une seul.

Problème :
if (($donnee[rnom])!=NULL) {

me donne des tableaux d'une seule cellule, alors que certains devraient en contenir deux.

et si je change pour :
if (($donnee[rnom])==NULL) {

alors j'ai que des tableaux avec deux cellules alors certains devraient en avoir une seule.

Une petite aide serait la bienvenue !!!
Merci

3 réponses

Messages postés
9
Date d'inscription
dimanche 31 août 2008
Statut
Membre
Dernière intervention
7 mai 2011

Bon j'ai trouvé une solution à mon problème :

<?php
require ('./Connections/aka.php');

mysql_select_db($database_aka, $aka);

// Requête pour prendre tout les messages
$query_ak_msg = "SELECT * FROM Tak_msg ORDER BY id DESC";
$ak_msg = mysql_query($query_ak_msg, $aka) or die(mysql_error());
$Enregis_ak_msg = mysql_fetch_assoc($ak_msg);
$TotalEnregis_ak_msg = mysql_num_rows($ak_msg);

// --- On effectue une boucle, pour construire l'affichage.
do {
$MTable = "";
if (($Enregis_ak_msg['rpseudo'])!=NULL) {
$MTable  = "\";
$MTable .= \"----
\";
$MTable .= \"Posté par ".$Enregis_ak_msg['pnom']." le ".$Enregis_ak_msg['pdate'].", \";
$MTable .= \"Réponse de ".$Enregis_ak_msg['rnom']." le ".$Enregis_ak_msg['rdate'].", \";
$MTable .= \"\";
$MTable .= \"----
\";
$MTable .= \"".nl2br($Enregis_ak_msg['pmsg']).", \";
$MTable .= \"".nl2br($Enregis_ak_msg['rmsg']).", \";
$MTable .= \"\";
$MTable .= "
";
}
else {
$MTable = "\";
$MTable .= \"----
\";
$MTable .= \"Posté par ".$Enregis_ak_msg['pnom']." le ".$Enregis_ak_msg['pdate'].", \";
$MTable .= \"\";
$MTable .= \"----
\";
$MTable .= \"".nl2br($Enregis_ak_msg['pmsg']).", \";
$MTable .= \"\";
$MTable .= "
";
}
echo $MTable;
echo "<hr>";
} while ($Enregis_ak_msg = mysql_fetch_assoc($ak_msg));
?>


Si ça peut servir à quelqu'un ^^.
Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
20
bonsoir

pourquoi dans le else tu refais

else {
echo [color=red>/color

echo '';

while{

/* ton code */

}
echo '
';

<?php
echo mysql_num_rows(mysql_query("Select id FROM ak_msg"))." messages en attentes";

// Requête pour tout les messages
$req = mysql_query("Select * from ak_livredor Order by id Desc") or die ("Erreur requête : ".mysql_error());

// On prend toutes les valeurs de la requête dans un tableau fetch_array et exploiter via une boucle while
if (mysql_num_rows($req)<1){
echo "Il n'y à aucun message";
}
else {

echo '';

while ($donnee = mysql_fetch_array($req)){
// Sortie du résultat
if (($donnee[rnom])!=NULL) {

echo \"----

Posté par ".$donnee[pnom]." le ".$donnee[pdate].",
Réponse de ".$donnee[rnom]." le ".$donnee[rdate].",

----

".nl2br($donnee[msg]).",
".nl2br($donnee[rmsg]).",

}
else {

----

Posté par ".$donnee[pnom]." le ".$donnee[pdate].",

----

".nl2br($donnee[msg]).",
\";

}
echo \"<hr>\";
}
echo "
";

mysql_close();
//Fin de la boucle while, fermeture de la connexion MySQL
}
?>



a++
Messages postés
9
Date d'inscription
dimanche 31 août 2008
Statut
Membre
Dernière intervention
7 mai 2011

Bonsoir COD57,

C'est effectivement une très bonne remarque.

Mais dans ce cas précis, tu remarqueras après avoir testé, que les lignes de séparations de tableaux se retrouvent toutes en tête de l'affichage, alors que le visuel souhaité est le suivant :
1 tableau
1 séparation
1 tableau
1 séparation
1 tableau
...

Il est donc nécessaire de répéter la construction complète du tableau.