willeraser
Messages postés55Date d'inscriptionmercredi 15 octobre 2003StatutMembreDernière intervention 6 mai 2009 19 déc. 2008 à 01:31
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 !
kohntark
Messages postés3705Date d'inscriptionlundi 5 juillet 2004StatutMembreDernière intervention27 avril 201230 19 déc. 2008 à 12:08
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
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
echo "Nous sommes aujourd'hui le " . $today . "" ;
echo "
Vous trouverez ci-dessous la liste des livres non rendus.";
echo "";
$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 " LISTE DES ALERTES EMPRUNTS ";
echo "\";
echo \"----
\";
echo \"Numéro d'emprunt, \";
echo \"Nom du livre, \";
echo \"Nom de l'adhérent, \";
echo \"Date d'emprunt, \";
echo \"Date de retour de l'emprunt, \";
echo \"\";
echo \"----
\";
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]));