foodstyling Posté 24 Septembre 2006 Partager Posté 24 Septembre 2006 Ma question est certainement stupide , mais je ne trouve pas de réponse: Si je met la fonction header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); sur une page php le header me renvoie la date de la modification de la page mais pas de son contenu. Jai donc rajouté un champ "date à ma base et je voudrais donc connecter la fonction: header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); à la date du champ date de ma base de données. Comment faire? merci Lien vers le commentaire Partager sur d’autres sites More sharing options...
Dan Posté 24 Septembre 2006 Partager Posté 24 Septembre 2006 Bonjour, Il te suffit dans ce cas d'ajouter un argument supplémentaire à la fonction gmdate qui soit le champ date de ta base de données au format "timestamp". Je ne vois pas où est le problème ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
foodstyling Posté 24 Septembre 2006 Auteur Partager Posté 24 Septembre 2006 Merci pour ta réponse, mais n'étant en rien un spéciaste de php, je ne connais pas la sytaxe à utiliser. Que dois-je ajouter à la page php? Lien vers le commentaire Partager sur d’autres sites More sharing options...
foodstyling Posté 24 Septembre 2006 Auteur Partager Posté 24 Septembre 2006 Je viens de trouver un morceau de code que j'ai implanté sur ma page php, mais la date retournée par le header reste la date actuelle, donc pas la date de la dernière modification. la ligne $date = time('date'); semble poser problème, date devrait être le champ date dans ma base de données? // --- Your code ---// You need past following before any output// here you need to select modified date from DB in UNIX timestamp format// (same as time() function in PHP or UNIX_TIMESTAMP() function in MySQL)$date = time('date');$last_modified = gmdate('D, d M Y H:i:s', $date) . ' GMT';// did the browser send an if-modified-since request?if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])) { // parse header $if_modified_since = preg_replace('/;.*$/', '', $_SERVER['HTTP_IF_MODIFIED_SINCE']); if ($if_modified_since == $last_modified) { // the browser's cache is still up to date header('HTTP/1.0 304 Not Modified'); exit; }}header('Last-Modified: ' . $last_modified);// --- Your code --- Lien vers le commentaire Partager sur d’autres sites More sharing options...
Dan Posté 24 Septembre 2006 Partager Posté 24 Septembre 2006 Le tout est de savoir quel format tu as adopté pour le champs de la base de données. S'il est au format "timestamp", tu peux utiliser cette valeur directement dans ton appel à gmdate. Mais avant d'aller plus avant, dis-moi quel format tu as choisi... et comment tu le mets à jour. Dan Lien vers le commentaire Partager sur d’autres sites More sharing options...
foodstyling Posté 24 Septembre 2006 Auteur Partager Posté 24 Septembre 2006 (modifié) le format est "timestamp" et je met à jour avec phpmyadmin Modifié 24 Septembre 2006 par foodstyling Lien vers le commentaire Partager sur d’autres sites More sharing options...
Dan Posté 24 Septembre 2006 Partager Posté 24 Septembre 2006 Si tu lis le champ de ta table dans une variable $date_page, il te suffit d'invoquer gmdate comme ceci: gmdate("D, d M Y H:i:s", $date_page) C'est tout simple... Lien vers le commentaire Partager sur d’autres sites More sharing options...
foodstyling Posté 24 Septembre 2006 Auteur Partager Posté 24 Septembre 2006 Salut Dan, Je n'ai toujours rien compris à tes explications. Voici ce que j'ai fait: Base de données: j'ai rajouté un champ 'date' à ma table de données 'recettes' de ma base de données 'Recettes' nom: 'date' type='timestamp' qui me donne des dates de format 20060924114321 puis j'ai mis dans ma page detail_fr.php la requète suivante mysql_select_db($database_recettes, $recettes);$query_rs_date = "SELECT `date` FROM recettes ";$rs_date = mysql_query($query_rs_date, $recettes) or die(mysql_error());$row_rs_date = mysql_fetch_assoc($rs_date);$totalRows_rs_date = mysql_num_rows($rs_date); cette requète testée me donne les dates du format 20060924114321 Puis j'ai inséré le code suivant sur la même page: 'detail_fr.php // --- Your code ---// You need past following before any output// here you need to select modified date from DB in UNIX timestamp format// (same as time() function in PHP or UNIX_TIMESTAMP() function in MySQL)$rs_date = time();$last_modified = gmdate('D, d M Y H:i:s',$rs_date) . ' GMT';// did the browser send an if-modified-since request?if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])) { // parse header $if_modified_since = preg_replace('/;.*$/', '', $_SERVER['HTTP_IF_MODIFIED_SINCE']); if ($if_modified_since == $last_modified) { // the browser's cache is still up to date header('HTTP/1.0 304 Not Modified'); exit; }}header('Last-Modified: ' . $last_modified);// --- Your code ---?> le résultat me donne un header: HTTP/1.1 200 OKDate: Sun, 24 Sep 2006 20:03:47 GMT Server: Apache/1.3.27 (Unix) (Red-Hat/Linux) PHP/ 4.3.11 X-Powered-By: PHP/4.3.11 Last-Modified: Sun, 24 Sep 2006 20:03:47 GMT Connection: close Content-Type: text/html Donc, la date de l'instant même et non celle de la dernière modification. Je dois être plutôt stupide pour ne pas comprendre la logique de ce sysème, donc j'ai vraiment besoin d'aide, niveau jardin d'enfants! Henri Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant