If Elseif

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : If Elseif

Re: If Elseif

par orell1 » 29 sept. 2013, 17:23

Mes dates sont au format DATETIME dans ma base.
Donc enregistre au format 0000-00-00 00:00

Merci beaucoup

Re: If Elseif Gigantesque connerie de ma part

par sirakawa » 29 sept. 2013, 16:57

Mais je ne peux pas y résister:
Ami, entends-tu le vol noir des objets dans ton code ?
Ami, entends-tu les cris sourds du elsif qu'on enchaîne ?

Re: If Elseif

par moogli » 29 sept. 2013, 16:22

Attention cela ne fonctionne que si l'on est sur du format :)

Et la méthode createfromformat retourne un datetime ou false en cas d'erreur ce qui doit être cas car je pense que loin format n'est pas bon par rapport ce l'on récupère de la base.

@+

Re: If Elseif

par yann18 » 29 sept. 2013, 13:43

et pourtant createFromFormat('d-M-Y', $date) est de type DateTime(donc un object) alors pourquoi le clonage échoue?

Pour ne pas se focaliser sur ce problème, il faut carrément créer un objet DateTime sur lequel on peut cloner l'instance:

<?php

$today = new DateTime();

while ($rech_ent = mysql_fetch_array($result)) {
    // Dépend du format dans ta base, tu peux le forcer avec la fonction mysql date_format
    $p14days = new DateTime($rech_ent['client_appele_le']);
    $p21d = clone $p14days;
    $p14days->add(new DateInterval('P14D'));
    $p21d->add(new DateInterval('P21D'));

    if ($today > $p21days) {
        echo "<tr><td class='fond'><img src='images/statut_non.png'></td>";
    } else if ($today > $p14days) {
        echo "<tr><td class='fond'><img src='images/statut_peut_etre.png'></td>";
    } else {
        echo "<tr><td class='fond'><img src='images/statut_oui.png'></td>";
    }
}

Re: If Elseif

par orell1 » 29 sept. 2013, 01:22

Version 5.3
Quand tu dis n'est pas un objet ça veut dire...?

Merci beaucoup pour tes explications ;-)

Re: If Elseif

par moogli » 29 sept. 2013, 01:15

Qu'elle version de php as tu ?
Si clone donne une erreur c'est que $p14days n'est pas un objet :/

@+

Re: If Elseif

par orell1 » 28 sept. 2013, 22:15

Merciiiiii.

je viens d'essayer et j'ai cette erreur: Fatal error: __clone method called on non-object in D:\

J'utilise WAMP

Re: If Elseif

par moogli » 28 sept. 2013, 14:12

tu peux tester quelque chose comme sa
<?php

$today = new DateTime();

while ($rech_ent = mysql_fetch_array($result)) {
    // Dépend du format dans ta base, tu peux le forcer avec la fonction mysql date_format
    $p14days = DateTime::createFromFormat('d-M-Y', $rech_ent['client_appele_le']);
    $p21d = clone $p14days;
    $p14days->add(new DateInterval('P14D'));
    $p21d->add(new DateInterval('P21D'));

    if ($today > $p21days) {
        echo "<tr><td class='fond'><img src='images/statut_non.png'></td>";
    } else if ($today > $p14days) {
        echo "<tr><td class='fond'><img src='images/statut_peut_etre.png'></td>";
    } else {
        echo "<tr><td class='fond'><img src='images/statut_oui.png'></td>";
    }
}

Re: If Elseif

par orell1 » 27 sept. 2013, 12:34

Bon je viens de modifier en mettant ceci :
if($rech_ent['client_appele_le'] < $il_y_a_14_jours) {
echo "<tr><td class='fond'>$test<img src='images/statut_oui.png'></td>";
}
elseif ($rech_ent['client_appele_le'] > $il_y_a_14_jours && $rech_ent['client_appele_le'] < $il_y_a_21_jours) {
echo "<tr><td class='fond'>$test<img src='images/statut_peut_etre.png'></td>";
}
else {
echo "<tr><td class='fond'>$test<img src='images/statut_non.png'></td>";
}
Et malheureusement cela ne fonctionne pas, je ne comprends vraiment pas la...

Re: If Elseif

par orell1 » 27 sept. 2013, 11:57

Merci beaucoup.
Je vais modifier cela.

Re: If Elseif

par moogli » 27 sept. 2013, 11:29

Si j'ai bien compris tu veux

Afficher oui si le rappel date de max 14 jours
Afficher peux être si rappel entre 14 et 21 jours
Nous au delà

Donc je vois que dans le if la comparaison n'est pas bonne (tu as mis supérieur ou égale)
Le else if doit contenir une "double" condition (date entre 14 et 21)
Le else ben ça va ;)


@+

Re: If Elseif

par orell1 » 26 sept. 2013, 16:53

Je viens de faire ceci, à priori cela fonctionne, vous pouvez me confirmer que mon codage est correct?

Merci par avance.

Cordialement.
if($rech_ent['client_appele_le'] >= $il_y_a_14_jours) {
echo "<tr><td class='fond'>$test<img src='images/statut_oui.png'></td>";
}
elseif ($rech_ent['client_appele_le'] >= $il_y_a_21_jours) {
echo "<tr><td class='fond'>$test<img src='images/statut_peut_etre.png'></td>";
}
else {
echo "<tr><td class='fond'>$test<img src='images/statut_non.png'></td>";
}

Re: If Elseif

par orell1 » 26 sept. 2013, 16:20

merci...

Voilà j'ai refait ça :
if($rech_ent['client_appele_le'] < $today && $rech_ent['client_appele_le'] < $il_y_a_14_jours) {
echo "<tr><td class='fond'><img src='images/statut_oui.png'></td>";
}
elseif($rech_ent['client_appele_le'] > $il_y_a_14_jours && $rech_ent['client_appele_le'] < $il_y_a_21_jours) {
echo "<tr><td class='fond'><img src='images/statut_peut_etre.png'></td>";
}
else {
echo "<tr><td class='fond'><img src='images/statut_non.png'></td>";
}
ça ne fonctionne toujours pas... je ne comprends pas, c'est usant! MDR

Re: If Elseif

par moogli » 26 sept. 2013, 14:46

Pense a ce que tu veux :
- afficher une image en fonction de la date du dernier rappel.
Les données utilisées ici ne le seront que pour cette requête.
Ensuite il te faut faire la différence entre la date du jour et les date fournie par la requête.
Je t'ai fournis deux possibilités et sirakawa une. Toutes trois s'applique pour cette requête uniquement.
Rien ne t'empêche d'ajouter une colonne calculée contenant le nombre te jour entre maintenant le champs en base.

Pour info le test de ton if me semble foireux vu que tu demande si le dernier rappel est dans le futur (superieur a today).


As tu compris pourquoi ton code ne peux fonctionner tel qu'il est ? (En dehors de la remarque ci dessus ;))

@+

Re: If Elseif

par orell1 » 26 sept. 2013, 11:19

Merci.
Mais dans ce cas toutes les autres requêtes qui utilisent le while ne serot plus corrects...?