ouvrir un fichier index.html

Eléphanteau du PHP | 11 Messages

16 sept. 2014, 23:36

Bonjour à tous
Je suis un petit nouveau sur votre forum mais j'ai quelques notions de PHP et HTML. Je programme depuis des années sur Mac, mais j'ai envie de passer à quelque chose de plus universel.
Voilà mon problème : j'ai créé un formulaire ou l'utilisateur doit entrer une date quelconque, ex: 16092014.
Il me faut récupérer cette date (je pense avoir trouvé). En parallèle, j'ai créé des flipping book correspondant depuis 2007 à des archives de journal.
Un flipping book = une parution. Ce que je veux faire c'est que lorsqu'un utilisateur lance le programme, on lui demande quelle date l'intéresse, il tape cette date dans le formulaire et en l'envoyant, celui-ci ouvre le flipping book correspondant.
Chaque flipping book comprend un fichier index.html, qui lui, ouvre un fichier écrit en java. Et c'est ce fichier index.html que veux ouvrir...
Je récapitule:
1 - j'ai créé un serveur sur un PC qui est en réseau dans une entreprise. Ce serveur contient des parutions journalières, sous forme d'un dossier qui contient lui-même un fichier Index.html, qui lui lance un flipping book composé des différentes pages du journal.
2 - j'ai créé un formulaire demandant à l'utilisateur (sur un pc distant) de taper la date recherchée. Une fois la date validée, je veux pouvoir accéder au dossier contenant le fichier index.html et le lancer de façon à lancer le flipping book correspondant.
Voilà, je m'excuse d'avoir été un peu long dans mes explications...
Merci pour votre aide à venir.
Marc

Nestecha
Invité n'ayant pas de compte PHPfrance

16 sept. 2014, 23:45

Alors en gros ça devrait être simple si c'est fait de façon organisée.

1° Tu choppes la date dans un $_POST (ou $_GET), donc ta date peut être inscrite dans une variable (disons $dDate).

2° Tu veux trouver le dossier qui correspond à $dDate. Pour que ce soit le plus simple possible, il faut que tu trouves un pattern récurrent dans les nom des dossiers, il y en a forcément un s'il y en a autant.

Exemple si un dossier s'appelle : "archive_01_06_2008" et qu'ils ont tous ce format d'écriture, avec de simples tests, tu auras l'URL que tu veux en fonction de la date entrée. Il te restera plus qu'à faire un header(); pour envoyer l'utilisateur vers cette page :)

Eléphanteau du PHP | 11 Messages

16 sept. 2014, 23:58

merci Nestecha.
Effectivement tous les dossiers se nomment de la même façon. ex: Aout_2013, qui lui contient toutes les dates du mois, sous la forme 01082013, 02082013 etc...
Sur les postes clients, j'ai monté un lecteur réseau, toujours L, qui pointe sur l'adresse IP du serveur ainsi que son nom.
J'ai effectivement regardé ce qu'il y avait dans la barre de navigation du navigateur, pour avoir une idée de ce que je devais mettre, et c'est ce que je ne sais pas faire. Quelle fonction utiliser pour ouvrir l'url dans le navigateur, du genre: file \\\L:\le nom du dossier principal\le nom du dossier concerné\fichier index.html
je n'ai pas en tête le code exact car je suis chez moi et mon programme et au boulot...

Merci d'avance
Marc

Nestecha
Invité n'ayant pas de compte PHPfrance

17 sept. 2014, 00:20

Tu peux utiliser header('Location: L:\le nom du dossier principal\le nom du dossier concerné\fichier index.html'); dans ton cas !

Eléphanteau du PHP | 11 Messages

17 sept. 2014, 00:55

encore merci Nestecha.

J'essaie tout cela demain matin...

Donc la date rentrée est par exemple le 01082013
le fichier index.html est situé dans le dossier 01082013, lui même situé dans un dossier nommé aout_2013.
Que pensez-vous de ce code pour obtenir les bons noms :

$ma_date="01082013" (la date entrée par l'utilisateur)

$jour = substr($ma_date,-8,2); =====> 01
$mois= substr($ma_date,-6,2);=====> 08
$annee=substr($ma_date,-4,4);=====>2013

if ($mois="01") {
$ms="Janvier";
}elseif ($mois="02"){
$ms="Fevrier";
}elseif ($mois="03") {
$ms="Mars";
}
etc.. avec les autres mois, ce qui me permet de convertir les chiffres en mois.
$a="_";
$date_dossier=$ms.$a.$annee=====>Aout_2013 (donc le dossier contenant le bon jour)
$date_jour=$jour.$mois.$annee=====>01082013 (qui est le dossier contenant le fichier index.html
En concatenant
$fichier="L:\Flipping\".$date_dossier."\".$date_jour."\index.html"===> L:\flipping\Aout_2013\01082013\index.html
Voilà, qu'en pensez-vous?

Encore merci pour tout

marc

Nestecha
Invité n'ayant pas de compte PHPfrance

17 sept. 2014, 05:56

Oui voilà, en gros c'est ça.

Par contre pour la concaténation, t'es pas obligé d'utiliser :
$a="_";
$date_dossier=$ms.$a.$annee=====>Aout_2013 (donc le dossier contenant le bon jour)
Tu peux faire ainsi :
$date_dossier=$ms.'_'.$annee=====>Aout_2013 (donc le dossier contenant le bon jour)
Vu que '_' est une simple chaîne de caractère.

Invité
Invité n'ayant pas de compte PHPfrance

17 sept. 2014, 11:28

Bonjour Nestecha

D'abord merci pour tout.
J'ai quelques problèmes avec la commande Header
Voilà la fin de mon code :

$date_dossier=$ms."_".$annee;
$date_jour=$jour.$mois.$annee;
$fichier="L:\\".$date_dossier."\\".$date_jour."\\"."Index.html";
$Nom_fichier="('Location: ".$fichier."')";
header ($nom_fichier);
avec la commande Echo voilà ce que cela donne : ('Location: L:\Janvier_2014\12012014\Index.html')

et voilà le message d'erreur de retour:
Warning: Cannot modify header information - headers already sent by (output started at C:\wamp\www\action.php:6) in C:\wamp\www\action.php on line 44

Eléphant du PHP | 151 Messages

17 sept. 2014, 11:30

La ligne 6 est incompatible avec la ligne 44.
tu as un echo qui traîne.
Développeur d'applications pour intranets industriels (IHM), DBA Oracle, auto entrepreneur. Je fuis les frameworks car je pense comme Rasmus Lerdorf : "all PHP frameworks suck"...
Je me suis lancé dans la reprise du projet PhpMyNewsletter (GNU GPL), que je vous invite à essayer.

echo ($user=='enregistré?"je t'aide":"je t'aide pas !");

Eléphanteau du PHP | 11 Messages

17 sept. 2014, 11:36

bonjour

J'ai supprimé la ligne Echo mais j'ai toujours la même erreur... sur la ligne 44 qui correspond à la commande HEADER...

marc

Eléphant du PHP | 151 Messages

17 sept. 2014, 14:24

Tu peux mettre tout le code entre balises code, et le message d'erreur ?
Développeur d'applications pour intranets industriels (IHM), DBA Oracle, auto entrepreneur. Je fuis les frameworks car je pense comme Rasmus Lerdorf : "all PHP frameworks suck"...
Je me suis lancé dans la reprise du projet PhpMyNewsletter (GNU GPL), que je vous invite à essayer.

echo ($user=='enregistré?"je t'aide":"je t'aide pas !");

Eléphanteau du PHP | 11 Messages

17 sept. 2014, 14:42

bonjour, pas de probleme

Fichier action.php
<?php
$date = $_POST['date'];
$jour=substr($date,-8,2);
$mois=substr($date,-6,2);
$annee=substr($date,-4,4);
if ($mois="01") {
$ms="Janvier";
}elseif ($mois="02") {
$ms="Fevrier";
}elseif ($mois="03") {
$ms="Mars";
}elseif ($mois="04") {
$ms="Avril";
}elseif ($mois="05") {
$ms="Mai";
}elseif ($mois="06") {
$ms="Juin";
}elseif ($mois="07") {
$ms="Juillet";
}elseif ($mois="08") {
$ms="Aout";
}elseif ($mois="09") {
$ms="Septembre";
}elseif ($mois="10") {
$ms="Octobre";
}elseif ($mois="11") {
$ms="Novembre";
}elseif ($mois="12") {
$ms="Decembre";
}
$date_dossier=$ms."_".$annee;
$date_jour=$jour.$mois.$annee;
$fichier="L:\\".$date_dossier."\\".$date_jour."\\"."Index.html";
$Nom_fichier="('Location: ".$fichier."')";
header ($nom_fichier);
pause;
?>

Il n'y a pas de code d'erreur
C'est juste que action.php essaye de se connecter à l'adresse réseau de mon serveur, dans le navigateur s'affiche l'adresse IP de serveur et cela tourne en rond...

Nestecha
Invité n'ayant pas de compte PHPfrance

17 sept. 2014, 15:07

Coquilles à la fin du code :
$Nom_fichier="('Location: ".$fichier."')";
header ($nom_fichier);
pause;
$Nom_fichier, puis $nom_fichier (les deux doivent être égales).
"pause;" qui ne signifie rien.
Mauvais concaténation dans $Nom_fichier.
Voilà le code, fonctionnant avec $fichier = 'http://google.fr', reste plus qu'à le faire fonctionner avec ton chemin de fichier ;)
$fichier="http://google.fr";
$Nom_fichier="Location: ".$fichier;
header ($Nom_fichier);

Eléphanteau du PHP | 11 Messages

17 sept. 2014, 16:38

bonjour et merci

J'ai rectifié mes erreurs et j'ai fait un test avec header et Google, cela fonctionne.

Mais avec mon code pour ouvrir le fichier html, toujours rien...

$fichier="L:\\".$date_dossier."\\".$date_jour."\\"."Index.html";
$Nom_fichier="('Location: ".$fichier."')";
header ($Nom_fichier);

Pas d'erreur, il ne se passe rien...

Eléphant du PHP | 151 Messages

17 sept. 2014, 16:59

Ton fichier, il est dans la racine du serveur ?
Parce que L:\\ ...
En windows, je pense au raccourci, sous linux je t'aurais dit de faire un lien symbolique de la racine vers L (ou /home/.... pour ceux qui me comprennent)
Développeur d'applications pour intranets industriels (IHM), DBA Oracle, auto entrepreneur. Je fuis les frameworks car je pense comme Rasmus Lerdorf : "all PHP frameworks suck"...
Je me suis lancé dans la reprise du projet PhpMyNewsletter (GNU GPL), que je vous invite à essayer.

echo ($user=='enregistré?"je t'aide":"je t'aide pas !");

Eléphanteau du PHP | 11 Messages

17 sept. 2014, 17:37

non, les fichiers sont sur un disque dur externe, relié au serveur et partagé...