Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/06/2011, 14h45   #1
Invité régulier
 
Homme
Étudiant
Inscription : juin 2011
Messages : 20
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Creuse (Limousin)

Informations professionnelles :
Activité : Étudiant
Secteur : Enseignement

Informations forums :
Inscription : juin 2011
Messages : 20
Points : 5
Points : 5
Par défaut Récuperer le contenu d'un fichier texte pour le traiter

Bonjour, voilà j'ai un fichier texte contenant plusieurs informations ( fichier joint) et je voudrais pouvoir implanter un filtre sur le temps de connexion. J'ai déjà utilisé la fonction explode() affin d'isoler chaque informations mais sans succès.
Le résultat actuel me donne
Array
(
[0] =>
)
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 
<html>
	<head>
	</head>
	<body>
		<form name="recherche" method="post" action="chemdate.php">
		Entrez le chemin du fichier sarg-general souhaité : <input type="text" name="chemin"/>
		<input type="submit" name="Valider" value="OK"/>
		</form>
		<?php
		//D:\Lycee\Stage\Pgm filtre\2011Jun01-2011Jun01\sarg-general est mon fichier test
		if(isset($_POST['Valider'])){
			$chemin=$_POST['chemin'];
			str_replace( '\\', '\\' , $chemin);  // Modifie le chemin d'accès affin d'être lisible par php 
			$fp = fopen($chemin,"r");
			while (!feof($fp)) {
				$Ligne = fgets($fp,255); //récupère une ligne puis la met dans mon tableau
				$tab= explode(" ",$Ligne);
				}
			fclose($fp);
			echo '<pre>';
			print_r($tab);
			echo '</pre>';
			}
		?>
	</body>
</html>
Merci d'avance.
Amicalement Akinato.
Images attachées
Type de fichier : jpg Exemple.jpg (247,8 Ko, 6 affichages)
Akinato est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/06/2011, 14h57   #2
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 456
Points : 8 456
c'est du CSV utilise fgetcsv


ps :
Code :
str_replace( '\\', '\\' , $chemin);
t'es sur de toi ?
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 14/06/2011, 14h57   #3
Futur Membre du Club
 
Femme
Développeur Web
Inscription : janvier 2011
Messages : 16
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : janvier 2011
Messages : 16
Points : 18
Points : 18
Déjà pour traiter ton fichier ligne par ligne tu peux regarder du côté de file c'est bien plus facile ! http://fr.php.net/manual/en/function.file.php

Code :
1
2
3
4
5
$fichier = file($_POST['chemin']);
foreach($fichier as $ligne)
{
    $tab = explode(' ',$ligne);
}
ninog est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 14/06/2011, 14h59   #4
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 456
Points : 8 456
Citation:
Envoyé par ninog Voir le message
Déjà pour traiter ton fichier ligne par ligne tu peux regarder du côté de file c'est bien plus facile ! http://fr.php.net/manual/en/function.file.php

Code :
1
2
3
4
5
$fichier = file($_POST['chemin']);
foreach($fichier as $ligne)
{
    $tab = explode(' ',$ligne);
}
non pas file + explode, c'est du csv donc fgetcsv, explode n'est pas fait pour du CSV, et avec file tu prends de la ressource inutilement
(en plus t'as fait la même erreur que lui)
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/06/2011, 15h06   #5
Invité régulier
 
Homme
Étudiant
Inscription : juin 2011
Messages : 20
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Creuse (Limousin)

Informations professionnelles :
Activité : Étudiant
Secteur : Enseignement

Informations forums :
Inscription : juin 2011
Messages : 20
Points : 5
Points : 5
Tout d'abord merci de votre rapidité,
@stealth35 oui je suis sur sur pour ça,
Code :
str_replace( '\\', '\\' , $chemin);
Quand au csv je vais me renseigner et je vous tiendrait informé.
Akinato est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/06/2011, 15h24   #6
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 456
Points : 8 456
Citation:
Envoyé par Akinato Voir le message
@stealth35 oui je suis sur sur pour ça,
Code :
str_replace( '\\', '\\' , $chemin);
ah ...
parce que la tu remplaces les \ par des \
donc inutile
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/06/2011, 15h34   #7
Invité régulier
 
Homme
Étudiant
Inscription : juin 2011
Messages : 20
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Creuse (Limousin)

Informations professionnelles :
Activité : Étudiant
Secteur : Enseignement

Informations forums :
Inscription : juin 2011
Messages : 20
Points : 5
Points : 5
oui c'est vrai mais au début du programme j'ai eu un souci à cause des \ et cette solution aussi étrange qu'elle soit me rendait heureux et m'ouvrait mon fichier sans problème. ^^

Amicalement Akinato
Akinato est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/06/2011, 15h40   #8
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 456
Points : 8 456
Citation:
Envoyé par Akinato Voir le message
oui c'est vrai mais au début du programme j'ai eu un souci à cause des \ et cette solution aussi étrange qu'elle soit me rendait heureux et m'ouvrait mon fichier sans problème. ^^

Amicalement Akinato
c'est plus :
Code :
str_replace('/', DIRECTORY_SEPARATOR , $chemin);
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/06/2011, 15h48   #9
Invité régulier
 
Homme
Étudiant
Inscription : juin 2011
Messages : 20
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Creuse (Limousin)

Informations professionnelles :
Activité : Étudiant
Secteur : Enseignement

Informations forums :
Inscription : juin 2011
Messages : 20
Points : 5
Points : 5
Citation:
Envoyé par stealth35 Voir le message
c'est plus :
Code :
str_replace('/', DIRECTORY_SEPARATOR , $chemin);
Hum, pourtant mon chemin est D:\\Lycee\...\sarg-general. Donc str_replace ne trouvera pas d'occurrences avec un /.
A quoi correspond le directory_separator?
Merci de ton attention.

Amicalement Akinato
Akinato est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/06/2011, 15h53   #10
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 456
Points : 8 456
Citation:
Envoyé par Akinato Voir le message
Hum, pourtant mon chemin est D:\\Lycee\...\sarg-general. Donc str_replace ne trouvera pas d'occurrences avec un /.
A quoi correspond le directory_separator?
Merci de ton attention.

Amicalement Akinato
c'est pour la compatibilité avec les path unix,
DIRECTORY_SEPARATOR c'est \ sous windows et / sous unix
mais windows accepte les path unix, l'inverse non, mais ducoup pas de soucis pour ton code, surpim juste ta ligne fait comme j'ai mis un

Code :
str_replace('\\', DIRECTORY_SEPARATOR , $chemin);
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 14/06/2011, 16h00   #11
Invité régulier
 
Homme
Étudiant
Inscription : juin 2011
Messages : 20
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Creuse (Limousin)

Informations professionnelles :
Activité : Étudiant
Secteur : Enseignement

Informations forums :
Inscription : juin 2011
Messages : 20
Points : 5
Points : 5
Ok pour le chemin ça fonctionne toujours merci.
J'ai commencé à bidouiller le fgetcsv, l'affichage est impeccable, je n'ai plus qu'a "prendre" les valeurs du tableau affin de les manipuler.

Amicalement Akinato.
Akinato est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/06/2011, 16h11   #12
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 456
Points : 8 456
Citation:
Envoyé par Akinato Voir le message
Ok pour le chemin ça fonctionne toujours merci.
J'ai commencé à bidouiller le fgetcsv, l'affichage est impeccable, je n'ai plus qu'a "prendre" les valeurs du tableau affin de les manipuler.

Amicalement Akinato.

__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/06/2011, 10h14   #13
Invité régulier
 
Homme
Étudiant
Inscription : juin 2011
Messages : 20
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Creuse (Limousin)

Informations professionnelles :
Activité : Étudiant
Secteur : Enseignement

Informations forums :
Inscription : juin 2011
Messages : 20
Points : 5
Points : 5
Bonjour, alors voilà j'ai fait des recherches pour la manipulation des infos une fois dans le tableau de ma page, mais je n'ai rien trouvé de convainquant sauf peut être le SQlite qui si j'ai bien compris permet de créer une BDD a court terme.
Cela vaut 'il vraiment le coup?

Amicalement Akinato
Akinato est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/06/2011, 10h16   #14
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 456
Points : 8 456
Citation:
Envoyé par Akinato Voir le message
Bonjour, alors voilà j'ai fait des recherches pour la manipulation des infos une fois dans le tableau de ma page, mais je n'ai rien trouvé de convainquant sauf peut être le SQlite qui si j'ai bien compris permet de créer une BDD a court terme.
Cela vaut 'il vraiment le coup?

Amicalement Akinato
oui tu peux manipuler les infos avec sqlite j'ai fait un petit tuto la dessus
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/06/2011, 10h19   #15
Invité régulier
 
Homme
Étudiant
Inscription : juin 2011
Messages : 20
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Creuse (Limousin)

Informations professionnelles :
Activité : Étudiant
Secteur : Enseignement

Informations forums :
Inscription : juin 2011
Messages : 20
Points : 5
Points : 5
Citation:
Envoyé par stealth35 Voir le message
oui tu peux manipuler les infos avec sqlite j'ai fait un petit tuto la dessus
Merci =) c'est celui que j'ai trouvé sur le net et qui m'a motivé a tenter avec ça, je vient de voir ton pseudo sous le titre ^^

Amicalement Akinato
Akinato est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/06/2011, 09h57   #16
Invité régulier
 
Homme
Étudiant
Inscription : juin 2011
Messages : 20
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Creuse (Limousin)

Informations professionnelles :
Activité : Étudiant
Secteur : Enseignement

Informations forums :
Inscription : juin 2011
Messages : 20
Points : 5
Points : 5
Bonjour, alors tout fonctionne très bien pour le SQLite, mon filtre est en place, il ne me reste qu'un soucie au niveau des submit je pense, quand je valide le chemin , le champ du filtre apparait en dessous, mais lorsque je valide ce form, et bien je revient sur ma page avec le formulaire du chemin seulement, je revient au début clairement.


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<html>
	<head>
	</head>
	<body>
	<link rel="stylesheet" type="text/css" href="Css tri.css">
		<form name="recherche" method="post" action="chemdate.php">
			Entrez le chemin du fichier sarg-general souhaité : <input type="text" name="chemin"/>
			<input type="submit" name="Valider" value="OK"/>
		</form>
		<?php
			if(isset($_POST['Valider']))
			{
		?>
		<form name="filtre" method "post" action="chemdate.php">
			Filtre (en ms): <input type="text" name="filtre" value="10000" /><input type="submit" name="filtrer" value="Filtrer"/>
		</form>
		<?php
			$filtre= 10000;
			$ligne = 1;
			$chemin=$_POST['chemin'];
			if(isset($_POST['filtrer']))
			{
				$filtre=$_POST['filtrer'];
					//récupération chemin
				str_replace( '\\', DIRECTORY_SEPARATOR , $chemin);
				try
				{			
					$bd = new PDO ('sqlite::memory:');		//interception du message d'erreur
					$bd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
				}
				catch(PDOExeption $e)		//recupération d'erreur
				{
					exit($e->getMessage());
				}
				$fichier = new SplFileObject($chemin);
				$fichier->setFlags(SplFileObject::READ_CSV | SplFileObject::SKIP_EMPTY);
				$fichier->setCsvControl(' ');
				$bd-> exec("CREATE TABLE test (nom, Nombrevisite integer (5), octet integer (5), sitevisite, ip, heure, date, temps integer (10), tada, tyde)");
				$stmt = $bd->prepare("INSERT INTO test VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
				foreach ($fichier as $ligne)
				{
					$stmt->execute($ligne);
				}
				$requete = $bd->query("SELECT nom, Nombrevisite, octet, sitevisite, ip, heure, date, temps FROM test WHERE nom <> 'TOTAL' AND temps > '".$filtre."' ORDER BY nom");
				echo'<table><th>Nom</th><th>Nombres de visites sur le site</th><th>Octet</th><th>site visité</th><th>IP</th><th>Heure</th><th>Date</th><th>Temps(en millisecondes)</th>';
				while($ligne = $requete->fetch(PDO::FETCH_ASSOC))
				{
					echo'<tr><td>' . implode('</td><td>', $ligne) . '</td></tr>';
				}
				echo'</table>';
			}
			}
		?>
	</body>
</html>

Quelqu'un aurait il une idée?


Amicalement Akinato
Akinato est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/06/2011, 11h41   #17
Invité régulier
 
Homme
Étudiant
Inscription : juin 2011
Messages : 20
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Creuse (Limousin)

Informations professionnelles :
Activité : Étudiant
Secteur : Enseignement

Informations forums :
Inscription : juin 2011
Messages : 20
Points : 5
Points : 5
UP, il ne me manque qu'un moyen pour que mon input texte qui contient le chemin le conserve, car dès que je valide le form la valeur disparait. Donc comment un input peut il conserver sa valeur? Suis-je obligé de passer par du JS?
Merci.


Amicalement Akinato
Akinato est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/06/2011, 13h52   #18
En attente de confirmation mail
 
Étudiant
Inscription : avril 2011
Messages : 19
Détails du profil
Informations personnelles :
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2011
Messages : 19
Points : 34
Points : 34
En PHP, quelque chose comme :

Code :
<input type="text" name="chemin" value="<?php if( isset($_POST['chemin'])) echo $_POST['chemin']; ?>"/>
dev_cisii est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 16/06/2011, 14h29   #19
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
Oui, si la méthode employée pour le formulaire est bien "POST", ce qui est le cas ici.
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/06/2011, 14h42   #20
Invité régulier
 
Homme
Étudiant
Inscription : juin 2011
Messages : 20
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Creuse (Limousin)

Informations professionnelles :
Activité : Étudiant
Secteur : Enseignement

Informations forums :
Inscription : juin 2011
Messages : 20
Points : 5
Points : 5
dev_cisii je te remercie grandement j'en avait marre d'éplucher les forums.
Merci a toi aussi stealth35.



Amicalement Akinato
Akinato est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h15.


 
 
 
 
Partenaires

Hébergement Web