Créer une grille horaire a partir d'un fichier texte ?

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 : Créer une grille horaire a partir d'un fichier texte ?

Re: Créer une grille horaire a partir d'un fichier texte ?

par kimduc » 17 juil. 2010, 22:30

Ca marche impec, vraiment un grand merci.

PS: J'aurai surement d'autres questions :D

Re: Créer une grille horaire a partir d'un fichier texte ?

par kimduc » 17 juil. 2010, 22:24

Je travail en local pour le moment avec easyphp

Re: Créer une grille horaire a partir d'un fichier texte ?

par loboblahz » 17 juil. 2010, 22:12

Au passage, quelle est la version de PHP que tu utilises ?

Re: Créer une grille horaire a partir d'un fichier texte ?

par loboblahz » 17 juil. 2010, 22:10

J'utilise toujours <? et ?>, c'est peut-être de là que vient le problème, j'ai remplacé par <?php, reprend le nouveau code.
Si jamais, je remarque aussi qu'il y a des problèmes d'accents. Ta page ne semble pas être en UTF-8.

Tu peux vérifier le résultat sur ma page de test à cette adresse : http://www.programmeur.ch/afficher_arret.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Document sans titre</title>
<style>
body{font-family:Verdana, Geneva, sans-serif; }
pre{margin:0px;}
h1{ font-size:18px; margin:3px;}
h2{ font-size:16px; margin:3px;}
h3{ font-size:14px; margin:3px;}
h4{ font-size:12px; margin:3px;}
td{ font-size:12px; margin:3px;}
.pair{ background-color:#EEE; }
.heure{ background-color:#AAA;padding-top:3px;padding-bottom:2px; }
.heure pre{ font-weight:bold; }
.legende{ font-style:italic; font-color:#3C6; }
</style>
</head>

<body>
<form action="afficher_arret.php" method="post">
        Arrêt : <select name="arret">
        <option value="">Tous</option>
<?php
$contenuFichier=file_get_contents("text.txt");
$donnee         =       explode("\n",$contenuFichier);

foreach ($donnee as $key => $valeur){
        if (preg_match("/<ARR>/i",$valeur)){
                $ARR= str_replace('<ARR>   ','',$valeur);  // Supprimer le <mag> et les 3 espaces
?>
        <option value="<?php echo $ARR; ?>" <?php if ($_POST['arret']==$ARR){ ?>selected="selected"<?php } ?>><?php echo $ARR; ?></option>      
<?php }
}
?>
    </select>
    <input type="submit" value="Rechercher" />
</form>

<table border="0" cellpadding="0" cellspacing="0">

<?php
$arForm =       $_POST;
$bFiltre = (isset($arForm['arret']) && $arForm['arret']!=''); // Est-ce qu'on a reçu un formulaire et est-ce que le SELECT dans notre formulaire n'est pas sur "Tous"
$ARR    =       '';

foreach ($donnee as $key => $valeur){
        if (preg_match("/<ARR>/i",$valeur)){
                $ARR= str_replace('<ARR>   ','',$valeur);  // Supprimer le <mag> et les 3 espaces
                if (($bFiltre && $ARR == $arForm['arret']) || !$bFiltre){
                        echo '<tr><td colspan="2"><h1>'.$ARR.'</h1></td></tr>';
                }
        }
         
        if (($bFiltre && $ARR == $arForm['arret']) || !$bFiltre){
                if (preg_match("/<DIR>/i", $valeur)){
                        $DIR= str_replace('<DIR>   ','',$valeur);
                        if ($DIR!=''){ echo '<tr><td colspan="2"><h2>'.$DIR.'</h2></td></tr>'; }
                }
        if (preg_match("/<LIG>/i", $valeur)){
                        $LIG= str_replace('<LIG>   ','',$valeur);
                        if ($LIG!=''){  echo '<tr><td colspan="2"><h3>'.$LIG.'</h3></td></tr>'; }
                }
        if (preg_match("/<PER>/i", $valeur)){
                        $PER= str_replace('<PER>   ','',$valeur);
                        if ($PER!=''){  echo '<tr><td colspan="2"><h4>'.$PER.'</h4</td></tr>'; }
                }      
        if (preg_match("/<HEU>/i", $valeur)){
                        $ligne=0;
                        $HEU = str_replace('<HEU>   ','',$valeur);
                        $HEU = str_replace('   ',"\t",$HEU);
                        if ($HEU!=''){  echo '<tr><td class="heure">&nbsp;</td><td class="heure"><pre>'.$HEU.'</pre></td></tr>'; }
                }
        if (preg_match("/<MIN>/i", $valeur)){
                        $ligne++;
                        if ($ligne%2 == 0){ $class='class="pair"'; }else{ $class=''; }
                        $MIN = str_replace('<MIN>   ','',$valeur);
                        $MIN = str_replace('   ',"\t",$MIN);
                        if ($MIN!='' && str_replace(' ','',str_replace("\t",'',$MIN))!=''){  echo "<tr><td $class>&nbsp;</td><td $class><pre>$MIN</pre></td></tr>"; }
                }
        if (preg_match("/<LEG>/i", $valeur)){
                        $LEG= str_replace('<LEG>   ','',$valeur);
                        if ($LEG!=''){  echo '<tr><td>&nbsp;</td><td class="legende"><br>'.$LEG.'</td></tr>'; }
                }
               
        }
}
?>

</table>
</body>
</html>

Re: Créer une grille horaire a partir d'un fichier texte ?

par kimduc » 17 juil. 2010, 21:53

Vraiment un grand merci.
La mise en forme CSS impecable, je suis en train de la travailler, par contre, il doit y avoir un probleme au niveau des options du select.
voila ce que j'ai quand je veux selectionner un arret (aucun arret n'apparait et forcement il ne m'affiche rien) :
Image

Par contre, quand je selectionne "tout", pas de problème .

Re: Créer une grille horaire a partir d'un fichier texte ?

par loboblahz » 17 juil. 2010, 21:35

Je penses que cette page devrait aller.
Elle chargera directement la liste dans un SELECT, et ensuite s'appelle elle même pour afficher soit tous les arrêts soit celui choisi.
Je te laisses essayer, si jamais contrôle que le nom de fichier est bien correct. J'ai mis quelques CSS à toi de les adapter selon tes goûts.

J'espère que cela t'iras. C'est pas forcément très joli comme code, je l'ai fait en vitesse. Normalement j'évite de mettre de créer de l'HTML avec des echos.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Document sans titre</title>
<style>
body{font-family:Verdana, Geneva, sans-serif; }
pre{margin:0px;}
h1{ font-size:18px; margin:3px;}
h2{ font-size:16px; margin:3px;}
h3{ font-size:14px; margin:3px;}
h4{ font-size:12px; margin:3px;}
td{ font-size:12px; margin:3px;}
.pair{ background-color:#EEE; }
.heure{ background-color:#AAA;padding-top:3px;padding-bottom:2px; }
.heure pre{ font-weight:bold; }
.legende{ font-style:italic; font-color:#3C6; }
</style>
</head>

<body>
<form action="afficher_arret.php" method="post">
	Arrêt : <select name="arret">
    	<option value="">Tous</option>
<?
$contenuFichier=file_get_contents("text.txt");
$donnee         =       explode("\n",$contenuFichier);

foreach ($donnee as $key => $valeur){
	if (preg_match("/<ARR>/i",$valeur)){ 
		$ARR= str_replace('<ARR>   ','',$valeur);  // Supprimer le <mag> et les 3 espaces
?>
        <option value="<? echo $ARR; ?>" <? if ($_POST['arret']==$ARR){ ?>selected="selected"<? } ?>><? echo $ARR; ?></option>      
<? }
}
?>
    </select>
    <input type="submit" value="Rechercher" />
</form>

<table border="0" cellpadding="0" cellspacing="0">

<?php
$arForm	=	$_POST;
$bFiltre = (isset($arForm['arret']) && $arForm['arret']!=''); // Est-ce qu'on a reçu un formulaire et est-ce que le SELECT dans notre formulaire n'est pas sur "Tous"
$ARR	=	'';

foreach ($donnee as $key => $valeur){
	if (preg_match("/<ARR>/i",$valeur)){ 
		$ARR= str_replace('<ARR>   ','',$valeur);  // Supprimer le <mag> et les 3 espaces
		if (($bFiltre && $ARR == $arForm['arret']) || !$bFiltre){ 
			echo '<tr><td colspan="2"><h1>'.$ARR.'</h1></td></tr>'; 
		}
	}
	  
	if (($bFiltre && $ARR == $arForm['arret']) || !$bFiltre){
		if (preg_match("/<DIR>/i", $valeur)){ 
			$DIR= str_replace('<DIR>   ','',$valeur); 
			if ($DIR!=''){ echo '<tr><td colspan="2"><h2>'.$DIR.'</h2></td></tr>'; }
		}
        if (preg_match("/<LIG>/i", $valeur)){ 
			$LIG= str_replace('<LIG>   ','',$valeur);
			if ($LIG!=''){  echo '<tr><td colspan="2"><h3>'.$LIG.'</h3></td></tr>'; }
		}
        if (preg_match("/<PER>/i", $valeur)){ 
			$PER= str_replace('<PER>   ','',$valeur); 
			if ($PER!=''){  echo '<tr><td colspan="2"><h4>'.$PER.'</h4</td></tr>'; } 
		}      
        if (preg_match("/<HEU>/i", $valeur)){ 
			$ligne=0;
			$HEU = str_replace('<HEU>   ','',$valeur);
			$HEU = str_replace('   ',"\t",$HEU); 
			if ($HEU!=''){  echo '<tr><td class="heure">&nbsp;</td><td class="heure"><pre>'.$HEU.'</pre></td></tr>'; } 
		}
        if (preg_match("/<MIN>/i", $valeur)){ 
			$ligne++;
			if ($ligne%2 == 0){ $class='class="pair"'; }else{ $class=''; }
			$MIN = str_replace('<MIN>   ','',$valeur); 
			$MIN = str_replace('   ',"\t",$MIN);
			if ($MIN!='' && str_replace(' ','',str_replace("\t",'',$MIN))!=''){  echo "<tr><td $class>&nbsp;</td><td $class><pre>$MIN</pre></td></tr>"; }
		}
        if (preg_match("/<LEG>/i", $valeur)){ 
			$LEG= str_replace('<LEG>   ','',$valeur); 
			if ($LEG!=''){  echo '<tr><td>&nbsp;</td><td class="legende"><br>'.$LEG.'</td></tr>'; }
		}
		
	}
}
?>

</table>
</body>
</html>

Re: Créer une grille horaire a partir d'un fichier texte ?

par kimduc » 17 juil. 2010, 20:17

Grâce à ton script:
<html>
<table>
<?php
$contenuFichier=file_get_contents("liste.txt");

$donnee         =       explode("\n",$contenuFichier);

foreach ($donnee as $key => $valeur){
        if (preg_match("/<ARR>/i",$valeur)){ $ARR= str_replace('<ARR>','',$valeur); echo "<tr><td></td><td><pre>$ARR</pre></td></tr>"; }
        if (preg_match("/<DIR>/i", $valeur)){ $DIR= str_replace('<DIR>','',$valeur); echo "<tr><td></td><td><pre>$DIR</pre></td></tr>"; }
		  if (preg_match("/<LIG>/i", $valeur)){ $LIG= str_replace('<LIG>','',$valeur); echo "<tr><td></td><td><pre>$LIG</pre></td></tr>";}
          if (preg_match("/<PER>/i", $valeur)){ $PER= str_replace('<PER>','',$valeur); echo "<tr><td></td><td><pre>$PER</pre></td></tr>";}       
	   if (preg_match("/<HEU>/i", $valeur)){ $HEU = str_replace('<HEU>','',$valeur); echo "<tr><td></td><td><pre>$HEU</pre></td></tr>"; }
        if (preg_match("/<MIN>/i", $valeur)){ $MIN = str_replace('<MIN>','',$valeur); echo "<tr><td></td><td><pre>$MIN</pre></td></tr>"; }
       
		 if (preg_match("/<LEG>/i", $valeur)){ $LEG= str_replace('<LEG>','',$valeur); echo "<tr><td></td><td><pre>$LEG</pre></td></tr>";}
       
        
}
?>
 </table>
 </html>

Comment appliquer un filtre ? merci pour ta reponse

Re: Créer une grille horaire a partir d'un fichier texte ?

par loboblahz » 17 juil. 2010, 18:24

Pour rendre la grille plus jolie passe par les CSS.

Une chose que je n'ai pas compris c'est que tu cherchais dans ton code "arr" et "des" alors qu'ils ne sont pas présent dans ton fichier.
Alors qu'il y a le magasin "mag" et la caisse...

Pour ton formulaire :
Créer un formulaire avec le nom de tes magasins dans un select.
Lorsque tu fais ta moulinette en ayant reçu le nom d'un magasin dans $_POST, tu filtre que sur ce magasin et tu ignore tout ce qui concerne les autres.

Voilà un petit essai que j'ai fait, la page doit se nommer "afficher_magasin.php", elle contient le formulaire et le code, et s'appelle elle même.
<form action="afficher_magasin.php" method="post">
	Magasin : <select name="magasin">
    	<option value="">Tous</option>
        <option value="magasin de paris" <? if ($_POST['magasin']=='magasin de paris'){ ?>selected="selected"<? } ?>>Magasin de paris</option>
        <option value="magasin de lille" <? if ($_POST['magasin']=='magasin de lille'){ ?>selected="selected"<? } ?>>Magasin de lille</option>
    </select>
    <input type="submit" value="Rechercher" />
</form>

<table boder="1">

<?php
$arForm	=	$_POST;

$bFiltreMagasin = (isset($arForm['magasin']) && $arForm['magasin']!=''); // Est-ce qu'on a reçu un formulaire et est-ce que le SELECT dans notre formulaire n'est pas sur "Tous"

$contenuFichier=file_get_contents("text.txt");
$donnee         =       explode("\n",$contenuFichier);
foreach ($donnee as $key => $valeur){
	if (preg_match("/<mag>/i",$valeur)){ 
		$magasin= str_replace('<mag>   ','',$valeur);  // Supprimer le <mag> et les 3 espaces
		if (($bFiltreMagasin && $magasin == $arForm['magasin']) || !$bFiltreMagasin){ 
			echo '<tr><td colspan="2"><h3>'.$magasin.'</h3><td><tr>'; 
		}
	}
	
	if (($bFiltreMagasin && $magasin == $arForm['magasin']) || !$bFiltreMagasin){
		if (preg_match("/<des>/i",$valeur)){ $des= str_replace('<des>','',$valeur); }
		if (preg_match("/<arr>/i", $valeur)){ $arr= str_replace('<arr>','',$valeur); }
		if (preg_match("/<heu>/i", $valeur)){ $heu = str_replace('<heu>','',$valeur); echo "<tr><td></td><td><pre>$heu</pre></td></tr>"; }
		if (preg_match("/<min>/i", $valeur)){ $min = str_replace('<min>','',$valeur); echo "<tr><td></td><td><pre>$min</pre></td></tr>"; }
       
		if ($des != '' && $arr!=''){
			echo "<tr><td>$arr</td><td>$des</td></tr>";
			$des='';
			 $arr='';       
		}
	}
}
?>

</table>

Re: Créer une grille horaire a partir d'un fichier texte ?

par kimduc » 17 juil. 2010, 17:22

J'arrive à afficher la grille horaire de tout les magasins correctement avec la balise <pre> que je ne connaissais pas. Par contre j'essaye de faire un formulaire (post) ou je pourrais recuperer uniquement la grille d'un seul magasin. Aurais-tu une idée?
Je voudrais aussi rendre la grille horaire plus jolie.....pas moyen !
Merci :D

Re: Créer une grille horaire a partir d'un fichier texte ?

par Invité » 17 juil. 2010, 17:15

J'arrive à afficher la grille horaire de tout les magasins correctement avec la balise <pre> que je ne connaissais pas. Par contre j'essaye de faire un formulaire (post) ou je pourrais recuperer uniquement la grille d'un seul magasin. Aurais-tu une idée?
Je voudrais aussi rendre la grille horaire plus jolie.....pas moyen !
Merci

Re: Créer une grille horaire a partir d'un fichier texte ?

par loboblahz » 17 juil. 2010, 14:24

Merci beaucoup pour ton aide et surtout pour ta rapidité à répondre :D
De rien, mais est-ce que ça a marché pour toi ?

Re: Créer une grille horaire a partir d'un fichier texte ?

par kimduc » 17 juil. 2010, 14:22

Merci beaucoup pour ton aide et surtout pour ta rapidité à répondre :D

Re: Créer une grille horaire a partir d'un fichier texte ?

par loboblahz » 17 juil. 2010, 12:13

utilise la balise <pre> pour afficher l'heure et les minutes :
<tr><td><pre>$heu</pre></td></tr><tr><td><pre>$min</pre></td></tr>

J'ai testé ton code, et j'ai remarqué que seul les dernières minutes s'affichent.
J'ai fait cette version si jamais :
<?php
$contenuFichier=file_get_contents("text.txt");

$donnee		=	explode("\n",$contenuFichier);

foreach ($donnee as $key => $valeur){
	if (preg_match("/<des>/i",$valeur)){ $des= str_replace('<des>','',$valeur); }
	if (preg_match("/<arr>/i", $valeur)){ $arr= str_replace('<arr>','',$valeur); }
	if (preg_match("/<heu>/i", $valeur)){ $heu = str_replace('<heu>','',$valeur); echo "<tr><td></td><td><pre>$heu</pre></td></tr>"; }
	if (preg_match("/<min>/i", $valeur)){ $min = str_replace('<min>','',$valeur); echo "<tr><td></td><td><pre>$min</pre></td></tr>"; }
	
	if ($des != '' && $arr!=''){
		echo "<tr><td>$arr</td><td>$des</td></tr>";
		$des='';
		$arr='';	
	}
	
}
?>

Créer une grille horaire a partir d'un fichier texte ?

par kimduc » 16 juil. 2010, 18:15

Bonjour, j'essaye depuis quelques jours de récuperer des données contenu dans un fichier texte afin de les formater dans un tableau et les rendre beaucoup plus clair.
Mon fichier texte:

Code : Tout sélectionner

<mag> magasin de paris <cai> caisse 8 <heu> 12 13 14 15 16 17 18 19 20 <min> 15 12 21 <min> 22 32 34 <mag> magasin de lille <cai> caisse 22 <heu> 12 13 14 15 16 17 18 19 20 <min> 15 12 21 <min> 22 32 34
J'ai essayé ça :
<?php
$ouvre=fopen("text.txt","r"); 
while (!feof ($ouvre))         
	{

$lecture = fgets($ouvre, 4096);
$donnee=explode("\n",$lecture);  

$combien=count($donnee)-1; 


for ($i=0;$i<=$combien;$i++)
	{
if (preg_match("/<des>/i", $donnee[$i])) {
$des= $donnee[$i];

}
if (preg_match("/<arr>/i", $donnee[$i])) {
$arr= $donnee[$i];

}
if (preg_match("/<heu>/i", $donnee[$i])) {
$heu = $donnee[$i];
}
if (preg_match("/<min>/i", $donnee[$i])) {
$min = $donnee[$i];
}

	}

	}
	
	
	echo "<tr><td>$arr</td> <td>$des</td></tr>
	      <tr><td>$heu</td></tr>
		  <tr><td>$min</td></tr>
	";
fclose($ouvre);		// fermeture
?>
Mais le problème et que les minuute ne se mettent pas sous l'heure associé, pourriez vous m'aidr svp ?