Traitement de conditions

Fermé
forrest - 6 avril 2010 à 00:31
 jp_forrest - 13 avril 2010 à 01:52
Je tourne en rond sur l'écriture de conditions, j'ai essayé différente façon mais je n'obtiens pas le résultat escompté.

Voilà mon problème :
J'ai une location avec des dates auxquelles la gestion est assurée par un organisme qu'on va appeler "LAC" entre le 12-06-2010 et le 19-09-2010.

En dehors des ces dates, c'est le propriétaire qui gère.

Pour cela, lorsqu'un visiteur remplit le formulaire, j'envoie un message soit au propriétaire, soit aux deux. Exemples :

Du 01-05-2010 au 10-06-2010 = Propriétaire (email_loueur)
Du 01-05-2010 au 20-06-2010 = Propriétaire + LAC
Du 20-06-2010 au 30-06-2010 = Propriétaire + LAC
Du 15-08-2010 au 30-09-2010 = Propriétaire + LAC
Du 20-09-2010 au 30-09-2010 = Propriétaire

Voici le code (le dernier testé...) que j'utilise :
// explication

$datedeb = date de début de location internaute
$datefin = date de fin de location internaute
$date_loc_lac_d1 = date de début de gestion LAC
$date_loc_lac_f1 = date de finde gestion LAC

//Code
if ($datedeb<$date_loc_lac_d1)
{
if ($datefin>$date_loc_lac_f1)
$destinataire = $email_loueur;
else
$destinataire = "$email_loueur,$email_lac";
}
else
$destinataire = "$email_loueur,$email"; //ici j'ai changé $email_lac, par email pour savoir quelle étape a été traité

Voici les testes effectués :

Du 01-06 au 29-06 = Destinataire loueur (résultat incorrect) la date de début est bien inférieur mais la date de fin est inférieur à la date de fin lac, je devrais donc envoyer le mail à "LAC"
Du 24-06 au 30-06 = Destinataire loueur et email (ok) là, la date de début est supérieur donc ok
Du 24-06 au 30-09 = Destinataire loueur et email (ok) Idem
Du 24-09 au 30-09 = Destinataire loueur et email (résultat incorrect) mais là c'est de ma faute, il manque une condition
Du 12-04 au 20-05 = Destinataire loueur (OK) mais pas par rapport au code, car la date de fin n'est superieur au 19-09-2010

Qu'ai-je manqué ???

Jean-Pierre

7 réponses

Ricky38 Messages postés 4349 Date d'inscription samedi 15 mars 2008 Statut Contributeur Dernière intervention 2 novembre 2013 1 459
6 avril 2010 à 01:05
Salut,

essaie:

if ($datedeb<$date_loc_lac_d1) {
$destinataire = $email_loueur;
}
if ($datefin>$date_loc_lac_f1) {
$destinataire = $email_loueur;
}
else {
$destinataire = "$email_loueur,$email_lac";
}

0
jp_forrest Messages postés 4 Date d'inscription mardi 6 avril 2010 Statut Membre Dernière intervention 17 février 2014
6 avril 2010 à 07:48
Bonjour RickY38,

Je ne sais pas si je me trompe, mais si j'essaie ce que tu m'envoie, à la première condition je sorts en envoyant $email_loueur, sans tester la suite alors que si $datefin n'est pas supérieur à $date_loc_lac_f1, je dois exécuter $destinataire = "$email_loueur,$email_lac";

Jean-Pierre
0
Ricky38 Messages postés 4349 Date d'inscription samedi 15 mars 2008 Statut Contributeur Dernière intervention 2 novembre 2013 1 459
6 avril 2010 à 14:02
Salut,

Si la date est inférieur à la date de début de gestion LAC le courriel est envoyé au proprio.
Si la date est supérieur à la date de fin de gestion LAC le courriel est toujours envoyé au proprio.

En d'autre cas le courriel est envoyé aux 2 lac et proprio.
0
jp_forrest Messages postés 4 Date d'inscription mardi 6 avril 2010 Statut Membre Dernière intervention 17 février 2014
6 avril 2010 à 15:02
Désolé Ricky, il y a une date de début et une de fin de réservation. Et je dis :
Si la date de début est inférieur à la date de début LAC et que
Si la date de fin est supérieur à la date fin LAC
Destinataire = proprio
Si non
Destinataire = proprio et LAC

Et ce n'est pas ce que j'obtiens, exemple :
Début résa 01-06-2010 / fin résa 20-06-2010

Je devrais envoyer un mail au proprio et à LAC puisque la date de fin est inférieur, ce n'est pas le cas, le mail est envoyé qu'au proprio...

Alors que mes dates sont bonnes et au même format, la date de fin (20-06-2010) est considérée comme inférieur à la date de fin LAC (19/09/2010)

Je ne comprends pas et j'ai pourtant tout vérifié...


if ($datedeb<$date_loc_lac_d1)
{
if ($datefin>$date_loc_lac_f1)
$destinataire = $email_loueur;
else
$destinataire = "$email_loueur,$email_lac";
}
else
$destinataire = "$email_loueur,$email";
0

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

Posez votre question
Ricky38 Messages postés 4349 Date d'inscription samedi 15 mars 2008 Statut Contributeur Dernière intervention 2 novembre 2013 1 459
6 avril 2010 à 15:08
Salut,

if ($datedeb<$date_loc_lac_d1) AND ($datefin>$date_loc_lac_f1) {
$destinataire = $email_loueur;
}
else {
$destinataire = "$email_loueur,$email_lac";
}

0
jp_forrest Messages postés 4 Date d'inscription mardi 6 avril 2010 Statut Membre Dernière intervention 17 février 2014
Modifié par jp_forrest le 6/04/2010 à 15:27
Salut,

if (($datedeb<$date_loc_lac_d1) AND ($datefin>$date_loc_lac_f1)) {
$destinataire = $email_loueur;
}
else {
$destinataire = "$email_loueur,$email_lac";
}

Avec les parenthèses, je vais vérifier, mais je suis pratiquement sûr d'avoir fait ça aussi. Avec && pour le "et" mais c'est la même chose

Je contrôle

JP

Ben voilà ! Je viens de faire le teste le résultat est le même, debut 01-06-2010, fin 20-06-2010, je devrais avoir un mail au 2, je n'ai que le mail proprio...
0
Ricky38 Messages postés 4349 Date d'inscription samedi 15 mars 2008 Statut Contributeur Dernière intervention 2 novembre 2013 1 459
6 avril 2010 à 19:11
j'ai testé avec ce code en mettant des echo et ça fonctionne

 <?php
$datedeb = "14/06/2010";
$datefin = "21/09/2010";
$date_loc_lac_d1 = "12/06/2010";
$date_loc_lac_f1 = "19/09/2010"; 
?>


<?php 
if (($datedeb<$date_loc_lac_d1) OR ($datefin>$date_loc_lac_f1)) {
echo "courriel loueur";
}
else {
echo "courriel loueur et lac";
} 
?> 
0
Bonsoir Ricky,

Pour info, mon code final et qui fonctionne :

if ($nom_location=="Le Cantou")
$destinataire = $email_loueur;

else if ($datedeb<$date_loc_lac_d1)
{
if ($datefin<$date_loc_lac_d1)
$destinataire = $email_loueur;
else
$destinataire = "$email_loueur,$email_lac";
}
else if (($datedeb>$date_loc_lac_d1) && ($datedeb<$date_loc_lac_f1))
{
$destinataire = "$email_loueur,$email_lac";
}
else
$destinataire = $email_loueur;

Merci pour les conseils

JP
0