IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Mon code de récupartion de fichier php ne marche pas


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mai 2011
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 63
    Points : 36
    Points
    36
    Par défaut Mon code de récupartion de fichier php ne marche pas
    Bonjour,

    plutôt que de long discours voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    	while ($result = mysql_fetch_array($ask)){
    	$path = '/chemin/';
    	$pseudo_fiche = $ask['pseudo'];
    	$userListStr = "";
    	$d = dir($path);
    	$fichier = '';
    	while (false !== ($entry = $d->read())) 
    	{
    	   $rest = substr($entry, 0, 5);
    	   if ($rest == "fich_")
    	   {
    		if (file_exists($path.$entry))
    		{
     
    			$f_users = file($path.$entry);
     
    			for ($i = 0; $i < count($f_users); $i ++)
    			{
     
    				$f_line = trim($f_users[$i]);
    				if ($f_line == $pseudo_fiche) {$fichiers.=substr($entry,5,20)-".txt";  }
    		  }
     
     
    		}	   	
    	   }
    	}
    	$d->close();
    	echo 'dans la fiche'.$fichiers.'se trouvent les pseudos'.$ask['pseudo'];
    	}
    le problème c'est que ce code me ressort : dans la fiche 112 et 113 se trouve pseudoY, dans la fiche 113 se trouve pseudoZ.
    Alors que j'aimerais plutôt: dans la fiche 113 se trouve PseudoY et PseudoZ (que ça me trie par fiche avec nbre de pseudo dedans (un peu complexe j'avoue)

    Quelqu'un aurait une idée ?
    Merci d'avance !

  2. #2
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Je n'ai pas la moindre idée de ce que tu essaie de faire... Avec aussi peu d'informations, il m'est impossible de répondre correctement. Tu pourrais argumenter un peu ??

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mai 2011
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 63
    Points : 36
    Points
    36
    Par défaut
    salut,

    En fait, j'ai plusieurs fichiers.txt sur mon server.
    Dans chacun de ces fichiers se trouvent des pseudos dont certains sont des "pseudos favoris"

    sur ma page php j'ai déjà récupéré la liste des pseudos favoris qui sont pascal , maxence, et martine.

    Mais je souhaiterai afficher les noms des fichiers dans lesquels ces pseudos favoris se trouvent.

    Ex des fichiers :

    fich_1.txt :
    maxence
    robert
    edouard

    fich_2.txt :
    pascal
    maxence
    martine
    dominique

    fich_3.txt :
    maxence
    martine
    romain

    Je souhaiterais afficher sur ma page php

    Dans le 2 se trouvent 3 pseudos favoris
    Dans le 3 se trouvent 2 pseudos favoris
    Dans le 1 se trouvent 1 pseudos favoris

    Le mieux est d'oublier le code que j'ai mis plus haut car il ne marche pas, il faudrait que je reparte sur un code tout neuf mais vraiment je ne vois pas comment faire, mes connaissances en php sont trop limitées

  4. #4
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Un algo de ce genre peut facilement faire l'affaire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    define('USERNAMES_DIR', '/path/');
     
    $peudos = array('pascal', 'maxence', 'martine');
     
    if (is_dir($dir) && $handle = opendir(USERNAMES_DIR)) {
    	while (($file = readdir($handle)) !== false) {
    		if ($file == '.' || $file == '..' || !is_file($file))
    			continue;
     
    		$lines = file($path = realpath($dir) . '/' . $file);
    		foreach ($pseudos as $pseudo) {
    			if (in_array($pseudo, $lines)) 
    				echo "Le pseudo $pseudo est dans le fichier $path";
    		}
    	}
    	closedir($handle);
    }

  5. #5
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2009
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2009
    Messages : 126
    Points : 183
    Points
    183
    Par défaut
    Bonjour

    J'aurais une proposition :

    En parsant les .txt , tu renseignes un tableau avec pour clé le nom du fichier
    et pour valeur un tableau des users contenus dans le fichier

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $f_users = file($path.$entry);
    for ($i = 0; $i < count($f_users); $i ++){
    	$nom_fichier =  substr($entry,5,20);
     	$f_line = trim($f_users[$i]);
     
            $TableauUserParFichier[$nom_fichier] = $f_line; 
     
    }
    Ca devrait générer cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $TableauUserParFichier['fich1'] = array('pascal','maxence','henri','antoine'); 
    $TableauUserParFichier['fich2'] = array('pascal','monique');
    dès lors pour chaque fichier tu compares les valeurs de user avec le tableau de user favoris

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $fav = array('pascal','maxence','martine'); 
     
    foreach ($TableauUserParFichier as $k => $v){
     
    	$a = array_intersect($TableauUserParFichier[$k],$fav);
    	echo 'dans la fichier '.$k.'.txt se trouvent '.count($a).' pseudos favoris sur un total de '.count($TableauUserParFichier[$k]).'<br/>';
    }
    C'est certainement optimisable, qu'en penses-tu ?

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for ($i = 0; $i < count($f_users); $i ++){
    pas de for pour parcourir un tableau de cette façon foreach est la pour ça, de plus tu comptes le nombre de lignes à chaque tours de boucle

  7. #7
    Membre éclairé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2011
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 411
    Points : 735
    Points
    735
    Par défaut
    Quelque chose de ce genre ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    <?
    while ($result = mysql_fetch_array($ask)){ 
    	$path = '/chemin/'; 
    	$pseudo_fiche = $ask['pseudo']; // c'est pas plutôt $result ?
    	$fichiers = array();
    	foreach(new DirectoryIterator($path) as $dir){
    		if(!$dir->isDot() && substr($dir->getFileName(),0,5) == "fich_"){
    			$f_users = file($dir->getPathName());
    			foreach($f_users as $line => $f_user)
    			{ 
    				$f_line = trim($f_user); 
    				if ($f_line == $pseudo_fiche) {$fichiers[substr($entry,5,20)-".txt"][] = $pseudo_fiche;  } 
    			} 
    		}
    	}
    	foreach($fichiers as $fiche => $fichier)
    		echo 'dans la fiche '.$fiche.' se trouvent les pseudos '.implode(', ', $fichier); 
    }
    Je suis fervent utilisateur de PHP et de jQuery.
    Après des études de graphisme, j'ai décidé de mélanger développement web et web design. J'ai ainsi donc créé mon site web de développeur web dans le Val d'Oise mais aussi plusieurs projets personnels.
    Dans les plus aboutis, vous pourrez trouver dans mon labo et dans mon devblog, une extension de navigateur pour envoyer l'URL de la page actuelle vers votre email pour lire plus tard ou sauvegarder, mon générateur de template HTML5, etc…

  8. #8
    Nouveau membre du Club
    Inscrit en
    Mai 2011
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 63
    Points : 36
    Points
    36
    Par défaut
    merci à tous pour vos réponses
    j'essaye d'avance avec tout ça mais pas facile quand on y connait.... moins que vous en tout cas

    le code de Shikiryu semple pas mal mais il me dit
    dans la fiche 0 se trouve le pseudo pascal
    or la fiche est la fiche fich_111.txt

    Par contre, il faut complètement oublié mon 1er post et lire plutôt mon 2e, car mon code ne veut rien dire
    Je voulais que, étant donné qu'on a la liste des pseudos favoris, ça me ressorte DANS l'ordre descendant, les fiches contenant le plus de pseudos favoris...
    Assez compliqué je l'avoue... merci à celui qui me sortira de cette panade...

Discussions similaires

  1. [XL-2007] Erreur sur mon code envoi mail avec fichier joint
    Par capi81 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 25/08/2014, 18h08
  2. fichier php ne marche pas sur wamp
    Par underlo dans le forum Langage
    Réponses: 2
    Dernier message: 28/02/2013, 10h58
  3. Inserer code conversion Google dans fichier PHP
    Par Sarah sh dans le forum Langage
    Réponses: 3
    Dernier message: 12/01/2013, 15h19
  4. erreur dans mon code ecriture dans un fichier
    Par baderahmed dans le forum ASP.NET
    Réponses: 4
    Dernier message: 11/10/2010, 17h55
  5. Probleme dans mon code recherche dans un fichier Xml
    Par dederfred dans le forum Delphi
    Réponses: 11
    Dernier message: 21/10/2006, 16h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo