begin process at 2012 05 28 08:46:12
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Base de données

 > 

MySQL

 > 

Comparaison de dates : je n'arrives pas !!!


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Comparaison de dates : je n'arrives pas !!!

jeudi 18 décembre 2008 à 23:13:34 | Comparaison de dates : je n'arrives pas !!!

morpheus22170

Bonsoir,

C'est un truc tout simple mais je n'arrive pas a faire un système d'alerte quand les livres ne sont pas rendu à temps

dans le cas, j'ai un livre emprunté le 18-11-2008 (2008-11-18 dans mon code) et le retour prévu le 17-12-2008 (vice-versa)

je n'arrive pas à afficher le livre qui est en retard d'un jour. Quand j'inverse le signe je vois les autres livres à rendre plus tard

$aujourdhui = date("Y-m-d");
    $today = date("d-m-Y");
   
    echo "Nous sommes aujourd'hui le " . $today . "" ;
    echo "<br>Vous trouverez ci-dessous la liste des livres non rendus.";
    echo "<p>";
    $user = "root";
    $host = "localhost";
    $password = "";
    $database = "bibliotheque";
    $connexion = mysql_connect($host, $user, $password) or die ("Connexion au serveur impossible");
    $db = mysql_select_db($database, $connexion) or die ("Sélection de la base de données impossible");
    $rq = "SELECT * FROM emprunts WHERE DateFinEmp >= '$aujourdhui' ";
    $result = mysql_query($rq) or die ("Exécution de la requête impossible");
    echo "<b>LISTE DES ALERTES EMPRUNTS</b><p>";
    echo "<table border='0'cellpadding='8'>";
    echo "<tr align='center'>";
    echo "<td><b>Numéro d'emprunt</b></td>";
    echo "<td><b>Nom du livre</b></td>";
    echo "<td><b>Nom de l'adhérent</b></td>";
    echo "<td><b>Date d'emprunt</b></td>";
    echo "<td><b>Date de retour de l'emprunt</b></td>";
    echo "</tr>";
    echo "<tr align='center'>";
    while ($ligne = mysql_fetch_array($result))
    {
        echo "<td align='center'>";
        echo $ligne[0];
        echo "</td>";
        echo "<td align='center'>";
        echo $ligne[1];
        echo "</td>";
        echo "<td align='center'>";
        echo $ligne[2];
        echo "</td>";
        echo "<td align='center'>";
        echo $ligne[3];
        echo "</td>";
        echo "<td align='center'>";
        echo $ligne[4];
        echo "</td>";
        echo "</tr>";
    }
    echo "</table>";
vendredi 19 décembre 2008 à 01:31:29 | Re : Comparaison de dates : je n'arrives pas !!!

willeraser

Réponse acceptée !
Avec un supérieur ou égal, déjà, tu englobes les livres qui doivent être rendus le jour même, donc par définition, pas en retard.
Il te faut donc un comparateur de supériorité strict si on suit ta logique.
Bon mais ensuite, s'il faut que ca se fasse 1 jour après, c'est donc la date d'aujourd'hui + 1 jour.
Or, une date est générée avec un motif que tu as défini (chaque membre est séparé par un tiret).
Renseigne toi sur les fonctions explode et implode.

Tu exploses ta chaine en choisissant le délimiteur tiret. Ca va te donner un tableau de 3 cases indexées de 0 à 2
Ensuite, ta 2ème case (indexée 1), sera celle qui contient le jour (format US). Tu rajoute +1 à la valeur que contient cette case. Ca t edonne donc aujourd'hui+1 c'est à dire demain. Donc 1 jour de retard par rapport à la date maximale d'emprunt qui serait en théorie aujourd'hui.
Ensuite, tu fais un implode (réunion d'un tableau en une variable unique).

______
En faisant ca, ca te permet donc d'ajouter 1 jour à une date, quelle qu'elle soit.
Toi si ce que tu veux c'est récupérer tous les livres en retard d'un jour, c'est donc une comparaison d'égalité.

$req = mysql_query('SELECT * FROM emprunts WHERE DateFinEmp = \''.$aujourdhui+1.'\'');

Voilà, il est tard, mon cerveau commence à partir en vrille, peut être que j'ai mal lu ton problème xD
On verra !

PS : pitié, réduis le nombre de echo ! Ca rend le code moins lourd et plus lisible. Et utilise les simples quotes pour les echo (le seul interet des doubles quotes étant l'interprétation des variables dans la chaine, mais toi tu concatène donc ca devient inutile, "lent" et pas beau)
Aussi, à moins que ton site exploite plusieurs bases de données sur plusieurs serveurs, le tout dans un même script, inutile d'affecter dans une var le résultat de mysql_connect et inutile d'ajouter cette var en paramètre dans mysql_select_db ^^ c'est de l'optimisation mais c'est toujours plus agréable d'avoir un code court, simple et efficace !
vendredi 19 décembre 2008 à 12:08:35 | Re : Comparaison de dates : je n'arrives pas !!!

kohntark

Membre Club
Réponse acceptée !
Salut,


Tu rajoute +1 à la valeur que contient cette case. Ca t edonne donc aujourd'hui+1 c'est à dire demain.
=>  non, ça donnera régulièrement n'importe quoi
ex : nous sommes le 31/12/2008 => 32/12/2008 ???? alors qu'il faut avoir 01/01/2009

=> voir mktime


Cordialement,

Kohntark -

vendredi 19 décembre 2008 à 12:48:37 | Re : Comparaison de dates : je n'arrives pas !!!

malalam

Administrateur CodeS-SourceS
Réponse acceptée !
Hello,

perso, je préfère strtotime(), plus simple à utiliser et plus lisible :
$demain = strftime('%Y-%m-%d', strtotime('+ 1 day'));
vendredi 19 décembre 2008 à 13:28:16 | Re : Comparaison de dates : je n'arrives pas !!!

willeraser

non, ça donnera régulièrement n'importe quoi
ex : nous sommes le 31/12/2008 => 32/12/2008 ???? alors qu'il faut avoir 01/01/2009

putain c'est exact >.< on dira que c'est du à l'heure du post okay ?
vendredi 19 décembre 2008 à 19:00:01 | Re : Comparaison de dates : je n'arrives pas !!!

morpheus22170

Salut à tous (willeraser, kohntark et malalam)

merci pour votre aide à tous tout d'abord,

c'est vrai que ca peut paraitre .... à voir un réveillon le 32 décembre 2008 !!!

Tourner général à nouveau de champagne !!!!

En fait, willeraser m'a mis la puce à l'oreille avec explode et implode. donc j'ai modifié tout le code et j'ai pu travaillé avec des fonctions de dates que j'utilisais déjà. Voilà, le code marche nickel et même avec prévisions sur l'année 2009

code:
$aujourdhuiA = date("Y");
 $aujourdhuiB = date("m");
 $aujourdhuiC = date("d");
 $today = date("d-m-Y");
  
 echo "Nous sommes aujourd'hui le " . $today . "" ;
 echo "<br>Vous trouverez ci-dessous la liste des livres non rendus.";
 echo "<p>";
 $user = "root";
 $host = "localhost";
 $password = "";
 $database = "bibliotheque";
 $connexion = mysql_connect($host, $user, $password) or die ("Connexion au serveur impossible");
 $db = mysql_select_db($database, $connexion) or die ("Sélection de la base de données impossible");
 $rq = "SELECT * FROM emprunts";
 $result = mysql_query($rq) or die ("Exécution de la requête impossible");
 echo "<b>LISTE DES ALERTES EMPRUNTS</b><p>";
 echo "<table border='0'cellpadding='8'>";
 echo "<tr align='center'>";
 echo "<td><b>Numéro d'emprunt</b></td>";
 echo "<td><b>Nom du livre</b></td>";
 echo "<td><b>Nom de l'adhérent</b></td>";
 echo "<td><b>Date d'emprunt</b></td>";
 echo "<td><b>Date de retour de l'emprunt</b></td>";
 echo "</tr>";
 echo "<tr align='center'>";
 while ($ligne = mysql_fetch_array($result))
 {
  $jour = date("d", strtotime($ligne[4])); //correspond à la colonne DateFinEmp
  $mois = date("m", strtotime($ligne[4]));
  $annee = date("Y", strtotime($ligne[4]));
  
  if ($annee <= $aujourdhuiA)
  {
   if ($mois <= $aujourdhuiB)
   {
    if ($jour <= $aujourdhuiC)
    {
     echo "<td align='center'>";
     echo $ligne[0];
     echo "</td>";
     echo "<td align='center'>";
     echo $ligne[1];
     echo "</td>";
     echo "<td align='center'>";
     echo $ligne[2];
     echo "</td>";
     echo "<td align='center'>";
     echo $ligne[3];
     echo "</td>";
     echo "<td align='center'>";
     echo $ligne[4];
     echo "</td>";
     echo "</tr>";
    }
    else
    {
    }
   }
   else
   {
   }
  }
  else
  {
  }
 }
 echo "</table>";

Merci à tous pour vos remarques. Bonne fête de fin d'année.
vendredi 19 décembre 2008 à 19:10:40 | Re : Comparaison de dates : je n'arrives pas !!!

malalam

Administrateur CodeS-SourceS
Beuh...j'ai du mal, là. Tu te compliques la vie.
Si le but est finalement de ne sortir que les livres en retard :

$sQuery = 'SELECT blabla FROM emprunts WHERE DateFinEmp < \''.date('Ymd').'\'';

ça suffit amplement, si ton champ DateFinEmp  est un datetime ou timestamp.
Sinon, suffit de le convertir dans la requête.


Cette discussion est classée dans : ligne, date, mysql, livres, echo


Répondre à ce message

Sujets en rapport avec ce message

rajouter une ligne à mon tableau en cliquant sur un bouton [ par Deis94 ] Voila jai un petit souci et je bricole pas mal pour men sortir (suffit de jeter un coup d'oeilà mon script )en considérant que je suis dans un tableau echo pas adequate par rapport à la situation :( [ par oceane751 ] bonjour à tous! je viens de regler un petit problème que j'avais avec mon code (merci ecore à ceux qui m'ont bien aidé) mais j'aimerais bien en regler Calcul de date [ par CyberMen30 ] Bonjour,   Je sais que certains vont me dire qu'il y a des tuto.  J'ai bien fait des recherches depuis hier et de ce que j'ai trouvé, rien n'a fon AU secourrrrrrrrrrrrssssssssss [ par twixster ] Bonjour :Voila, je vous poste mon code, mais d'abord je vous explique, j'affiche a ubout de chaque ligne( c'est a dire chaque fois qu'on a fait enter erreur de controle mais où ??? [ par ahcorad ] Alors une page normale avec des liste déroulantes avec des données MySQL, au lancement de la page, les valeurs devraient être vides mais la première l Affichage page par page [ par Leneuf8000 ] Bonjour, j'aimerai réaliser un affichage page par page. En fait je voudrai que tout soit gérer dans le même fichier.  Ainsi pour le moment, mes résult date et heure de modif ligne mysql [ par coolboarder17bzh ] salut, je voulais avoir s'il était possible de récupérer la date et l'heure de modification d'une ligne d'une table de bdd mysql. si oui, pourriez-vo gestion de news en php [ par yunie77 ] bonjour à tous,je crée un site sur la gestion de nouvelles d'un site internet. j'aimerai limiter le nombre d'affichage de news (5 par page) et pouvoir indexation et défillement [ par toffis ] Bonjour,J'ai un petit probleme avec ce script compte tenu que l'indexation avec LIMIT ne fonctionne pas dans ce cas,je voudrais quand même avoir la po Ligne de couleur [ par forchrisw ] je voudrais affichier a l'ecran une lign esur deux comment je peux fairevoici mon code//Pour charger les infos de connection$connect=mysql_connect($ho


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,998 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales