Else et else if

Résolu/Fermé
caro__48 Messages postés 242 Date d'inscription mercredi 14 avril 2010 Statut Membre Dernière intervention 18 mai 2017 - 25 juin 2014 à 11:05
caro__48 Messages postés 242 Date d'inscription mercredi 14 avril 2010 Statut Membre Dernière intervention 18 mai 2017 - 25 juin 2014 à 20:56
Bonjour,

J'ai un problème pour afficher des données, depuis une requête sql, je compile des if , else if et esle pour afficher les données suivant différents critères (sélectionnés avec les if). Ca marche bien sauf dès que je mets le denier else, il oubli toutes mes autres conditions et passe direct au else
Je galère un peu.
Voici mon code:
<?php
$date1= date("Y-m-d");

$requete1=mysql_query("
select

L.gamme,
L.ref_produit,
L.descriptif,
L.nom_produit,
L.date_livraison,
L.recherche_1,
L.recherche_2,
L.recherche_3,
L.photo,
L.photo_grand_modele,
L.cdt,
L.PA,
L.PVC,
L.id_categories,
L.etat,
L.date_limite_cde,
L.date_limite_affichage,
L.New,
L.Titre_import,
L.Sous_titre_import,
L.Reassort,
L.Coef,
L.logo,
L.texte_specifique,
L.fourn_import,
C.qt_commande_L_01,
C.qt_commande_L_02,
C.date,
C.id_adh,
C.etat_I
From liste as L, commandes_import as C
WHERE id_categories = 8 AND etat ='OUI' order by fourn_import, Titre_import, Sous_titre_import ASC") or die (mysql_error());
//vérification des donnée si aucune message

$a= mysql_num_rows($requete1);

if ($a==0)
{
echo ('<center>
<br><br><h2>Aucun produit disponible en commande actuellement. <br> Merci de votre compréhension.</h2></center');
}
else
{

while ($val = mysql_fetch_object($requete1))
{
if ( ($val->date_limite_affichage> $date1) && ($val->id_adh == $adh))
{
echo "Date limite d'affichage atteinte, on affiche que les données validées par ladh dans la table commandes_import ";
}
else if (($val->date_limite_affichage<=$date1) && ($val->id_adh == $adh))
{


echo "l'id_adh est déjà présent dans ma table commandes_import, on affiche tous les produits avec en plus les quantités déjà entrées par l'utilisateur.";
}
else
{
//if (($val->id_adh == "") && ($val->date_limite_affichage<=$date1))
//{
echo "On affiche tous les produits car adh inconnu dans la table_commandes_import (pas présent) et date limite <= a la date du jour.";
//}




}

}
}

Quelqu'un aurait-il une solution?
Merci d'avance


2 réponses

pandorz Messages postés 177 Date d'inscription mardi 24 juin 2014 Statut Membre Dernière intervention 7 juillet 2014 46
Modifié par pandorz le 25/06/2014 à 11:49
Bonjour,

Peux tu mettre des commentaires pour etre sur de bien comprendre ton probleme (genre rentre ici alors que devrait pas) et mettre tonc ode entre balise code stp

Sinon peut tu faire un echo de $val->id_adh et adh, ils sont peut etre différents ...
0
caro__48 Messages postés 242 Date d'inscription mercredi 14 avril 2010 Statut Membre Dernière intervention 18 mai 2017 61
25 juin 2014 à 15:19
Normalement le $val->id_adh marche.

En fait je veux que si id_adh n'existe pas dans ma table_commandes_import, on passe au dernier else.
Je ne peux plus modifier mon message mais voilà. J'espère que tu comprends un peu ce que j'essaie de t'expliquer.
En tout cas merci de ton aide
0
pandorz Messages postés 177 Date d'inscription mardi 24 juin 2014 Statut Membre Dernière intervention 7 juillet 2014 46
25 juin 2014 à 15:24
Je n'arrive pas trop à voir non :)

Essaie de dés-imbriquer tout çà.

if(isset($variable) && $variable==$valeur)
{
if($date>=$date_voulu)
//instructions
else
//instructions
}
else
{
//Elle existe pas
}
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
25 juin 2014 à 15:42
A essayer :
if ($a==0) {
	echo ('<center><br><br><h2>Aucun produit disponible en commande actuellement. <br> Merci de votre compréhension.</h2></center');
} else {
	while ($val = mysql_fetch_object($requete1))
	{
		if ($val->date_limite_affichage > $date1 && $val->id_adh == $adh) {
			echo "Date limite d'affichage atteinte, on affiche que les données validées par ladh dans la table commandes_import ";
		} else if ($val->date_limite_affichage <= $date1 && $val->id_adh == $adh) {
			echo "l'id_adh est déjà présent dans ma table commandes_import, on affiche tous les produits avec en plus les quantités déjà entrées par l'utilisateur.";
		} else if ($val->id_adh == "") {
			// $val->id_adh est vide
		} else {
			// $val->id_adh n'est pas vide et n'est pas égal à $adh
		}
	}
} 
0
pandorz Messages postés 177 Date d'inscription mardi 24 juin 2014 Statut Membre Dernière intervention 7 juillet 2014 46
25 juin 2014 à 15:32
Bon, ton code :


<?php
$date1 = date("Y-m-d");

$requete1 = mysql_query("SELECT L.gamme, L.ref_produit, L.descriptif, L.nom_produit,
L.date_livraison, L.recherche_1, L.recherche_2, L.recherche_3,
L.photo, L.photo_grand_modele, L.cdt, L.PA,
L.PVC, L.id_categories, L.etat, L.date_limite_cde,
L.date_limite_affichage, L.New, L.Titre_import,
L.Sous_titre_import, L.Reassort, L.Coef, L.logo,
L.texte_specifique, L.fourn_import, C.qt_commande_L_01,
C.qt_commande_L_02, C.date, C.id_adh, C.etat_I
FROM liste as L, commandes_import as C
WHERE id_categories = 8
AND etat ='OUI'
ORDER BY fourn_import, Titre_import, Sous_titre_import ASC") or die (mysql_error());
//vérification des donnée si aucune message

$a= mysql_num_rows($requete1);

if ($a==0)
{
echo ('<center>
<br /><br /><h2>Aucun produit disponible en commande actuellement. <br /> Merci de votre compréhension.</h2></center');
}
else
{

while ($val = mysql_fetch_object($requete1))
{
if ( ($val->date_limite_affichage> $date1) && ($val->id_adh == $adh))
echo "Date limite d'affichage atteinte, on affiche que les données validées par ladh dans la table commandes_import ";
else if (($val->date_limite_affichage<=$date1) && ($val->id_adh == $adh))
echo "l'id_adh est déjà présent dans ma table commandes_import, on affiche tous les produits avec en plus les quantités déjà entrées par l'utilisateur.";
else
{
//if (($val->id_adh == "") && ($val->date_limite_affichage<=$date1))
echo "On affiche tous les produits car adh inconnu dans la table_commandes_import (pas présent) et date limite <= a la date du jour.";
}

}
}
?>

Ce que j'essaierai en premier :


<?php
$date1 = date("Y-m-d");

$requete1 = mysql_query("SELECT L.gamme, L.ref_produit, L.descriptif, L.nom_produit,
L.date_livraison, L.recherche_1, L.recherche_2, L.recherche_3,
L.photo, L.photo_grand_modele, L.cdt, L.PA,
L.PVC, L.id_categories, L.etat, L.date_limite_cde,
L.date_limite_affichage, L.New, L.Titre_import,
L.Sous_titre_import, L.Reassort, L.Coef, L.logo,
L.texte_specifique, L.fourn_import, C.qt_commande_L_01,
C.qt_commande_L_02, C.date, C.id_adh, C.etat_I
FROM liste as L, commandes_import as C
WHERE id_categories = 8
AND etat ='OUI'
ORDER BY fourn_import, Titre_import, Sous_titre_import ASC") or die (mysql_error());
//vérification des donnée si aucune message

$a = mysql_num_rows($requete1);

if ($a==0)
{
echo ('<center>
<br /><br /><h2>Aucun produit disponible en commande actuellement. <br /> Merci de votre compréhension.</h2></center');
}
else
{

while ($val = mysql_fetch_object($requete1))
{
if($val->id_adh == $adh)
{
if ( strtotime($val->date_limite_affichage) > strtotime($date1))
echo "Date limite d'affichage atteinte, on affiche que les données validées par ladh dans la table commandes_import ";
if (strtotime($val->date_limite_affichage) <= strtotime($date1))
echo "l'id_adh est déjà présent dans ma table commandes_import, on affiche tous les produits avec en plus les quantités déjà entrées par l'utilisateur.";
}
else
{
echo "On affiche tous les produits car adh inconnu dans la table_commandes_import (pas présent) et date limite <= a la date du jour.";
}

}
}
?>

Qu'est ce que ça te donnes ?
0
caro__48 Messages postés 242 Date d'inscription mercredi 14 avril 2010 Statut Membre Dernière intervention 18 mai 2017 61
25 juin 2014 à 16:35
Cela m'affiche toujours le dernier echo avec en plus suivant les conditions les phrases dans les echo correspondant.

En fait j'ai tout le temps:
n affiche tous les produits car adh inconnu dans la table_commandes_import (pas présent) et date limite <= a la date du jour.
Avec en plus la phrase qui correspond.

Par exemple. Si la condition1 est rempli j'ai :
On affiche tous les produits car adh inconnu dans la table_commandes_import (pas présent) et date limite <= a la date du jour.Date limite d'affichage atteinte, on affiche que les données validées par ladh dans la table commandes_import

Tu vois?
0
ReDLoG Messages postés 243 Date d'inscription mardi 12 mars 2013 Statut Membre Dernière intervention 28 octobre 2021 57
25 juin 2014 à 20:49
Bonsoir,

C'est étrange, tu utilises dans tes conditions une variable $adh qui n'est déclarée (affectée) nulle part dans ton script ? Quelle valeur est-elle sensée contenir ?
Cordialement.
0
caro__48 Messages postés 242 Date d'inscription mercredi 14 avril 2010 Statut Membre Dernière intervention 18 mai 2017 61 > ReDLoG Messages postés 243 Date d'inscription mardi 12 mars 2013 Statut Membre Dernière intervention 28 octobre 2021
25 juin 2014 à 20:56
elle est déclarée bcp plus haut dans mon script. ca marche avec les sessions. je recupere l idh adh qui correspond a l utilisateur. (chaque utilisateur a nom de session unique)que je declare en $adh pour pouvoir m en servir. Verifier que l id connecter est bien celui que je veux dans ma requête et donc ds mes if...
0
caro__48 Messages postés 242 Date d'inscription mercredi 14 avril 2010 Statut Membre Dernière intervention 18 mai 2017 61 > ReDLoG Messages postés 243 Date d'inscription mardi 12 mars 2013 Statut Membre Dernière intervention 28 octobre 2021
25 juin 2014 à 20:56
elle est déclarée bcp plus haut dans mon script. ca marche avec les sessions. je recupere l idh adh qui correspond a l utilisateur. (chaque utilisateur a nom de session unique)que je declare en $adh pour pouvoir m en servir. Verifier que l id connecter est bien celui que je veux dans ma requête et donc ds mes if...
0