flopad
Messages postés528Date d'inscriptionmercredi 28 septembre 2005StatutMembreDernière intervention 6 mars 2009
-
2 nov. 2005 à 17:17
monoceros01
Messages postés420Date d'inscriptionvendredi 28 novembre 2003StatutMembreDernière intervention20 mars 2006
-
7 nov. 2005 à 16:11
Bonjour tout le monde!
Voilà ce que je souhaiterais mettre en place (annuaire entreprise sur un intranet):
Je fais un formulaire en php, l'utilisateur tape le nom de la personne qu'il recherche, cette recherche s'effectue sur un fichier excel. Je voudrais si le nom est bien trouvé extraire la ligne correspondante et la mettre en page dans une page html.
Pourriez vous svp me donner quelques idées pour démarrer...?
octets dans le fichier référencé par
<tt>handle</tt>
.
La lecture s'arrête lorsque
<tt>length</tt>
octets
ont été lus, ou que l'on a atteint la fin du fichier, ou
qu'une erreur survient (le premier des trois).
Vous pouvez utiliser l'option
<tt>use_include_path</tt>
:
en la mettant à "1", vous rechercherez aussi dans le dossier
<tt>include_path</tt>
.
<hr size ="2" width="100%">Voilà ce que j'ai dans la doc. fread() et file_get_contents()
renvoi tout deux une chaîne de caractères contenant tout le fichier (si
tu n'as mis que le premier paramètre). Donc soit tu utilises l'un, soit
tu utilise l'autre. Mais il faut faire attention, fread à une ressource comme premier paramètre (la ressource retourné par fopen(), $handle dans ton exemple) alors que file_get_contents a une url.
Ensuite il te faut traiter la chaîne résultante. un fichier CVS est
constitué d'enregistrements séparés par des retours chariot, et chaque
enregistrement est constitué d'une série de données séparées par une
virgule ou un point virgule le plus souvent.
Robert,Webdeveloppeur,26ans
Jack,Patissier,32ans
etc...
Donc la première étape sera de récupérer chaque ligne :
$ligne = explode("\n",$content) ;
// \n voulant dire retour chariot dans s'il est dans des
doubles quotes
Ensuite, pour chaque ligne, tu dois récupérer les données de chaque champ séparées par une virgule :
while(list($key,$val) = each($ligne) )
{
$data[$key] = explode(';',$val);
}
Et là tu obtiendra un tableau à deux dimensions dans lequel tu
pourra chercher les informations que tu désires. En effet la variable
$data contiendra :
monoceros01
Messages postés420Date d'inscriptionvendredi 28 novembre 2003StatutMembreDernière intervention20 mars 2006 3 nov. 2005 à 04:32
Peut-être devrais-tu exporter tes données excel en CSV et te servir du
fichier ainsi obtenu pour remplir une base de données MySQL et coder un
système de recherche en php.
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 3 nov. 2005 à 09:30
Hello,
je passerais aussi par du CSV. Par contre, tu peux éventuellement parser directement ton CSV, sans passer par une bdd. Mais ce sera plus rapide en utilisant mysql en effet (et plus simple). Le truc c'est que ça va t'obliger à faire des imports -réguliers je suppose- de ton fichier excel.
Faut voir...dépend de tes contraintes.
flopad
Messages postés528Date d'inscriptionmercredi 28 septembre 2005StatutMembreDernière intervention 6 mars 2009 3 nov. 2005 à 09:38
Merci pour vos indications.
En fait il est vrai que je préfère ne pas utiliser de bdd car c'est une secrétaire qui doit mettre à jour ce fichier excel contenant l'annuaire de société...
Sinon comment dois je m'y prendre pour rechercher en direct sur mon fichier csv?
Vous n’avez pas trouvé la réponse que vous recherchez ?
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 3 nov. 2005 à 09:57
Un fichier csv est composé de :
données, d'un séparateur (généralement le point-virgule, parfois la virgule) toujours le même, et de retours chariots.
Une ligne (donc avant un retour chariot) correspond à un enregistrement (en gros).
Mais parfois, ils sont plus chaotiques que ça... ;-)
Bref...je ne sais pas quoi te conseiller sans avoir plus de détails :
quelles informations y trouve t on ? Lors de cette "recherche", est-il
possible de trouver l'information recherchée à plusieurs endroits ?
Quel est le format exact de ton fichier ? As-tu des points de repère
sur ce fichier ?
flopad
Messages postés528Date d'inscriptionmercredi 28 septembre 2005StatutMembreDernière intervention 6 mars 2009 3 nov. 2005 à 10:03
Voici les infos que l'on y trouve :
Nom/Prénom, Société, Service, Téléphone fixe, Fax, Portable, Abrégé, Adresse mail.
Le format exact de mon fichier à l'heure actuelle est xls.
Ormis le numéro de fax qquesoi et les numéros de téléphone fixe, aucune info ne se recoupe.
En fait j'aimerais dans un premier temps pouvoir faire une recherche par Nom et puis on verra pour améliorer par la suite lorsque j'aurai compris comment tout ca fonctionne...
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 3 nov. 2005 à 10:13
Alors, c'est plus simple...il faut convertir le fichier en csv, sinon tu vas galérer.
Mais ensuite, tu peux créer une etite fonction/classe qui va parser le
fichier, permettant par exemple un accès direct ligne/colonne.; sachant
que chaque ligne est séparée par un retour chariot, et chaque colonne
de chaque ligne, par un point-virgule.
A priori, les noms seront toujours à la même colonne, pour chaque ligne...donc, ça devient facile :-)
Tu auras besoin d'ouvrir ton fichier évidemment...puis de le parser.
Par exemple, tu peux le stocker dans un tableau php, fait de la même
manière que ton fichier, et y accéder ainsi directement.
Ca va te permettre de lire le contenu de ton fichier et de le stocker
dans une variable de type chaine. Mais tu peux aussi utiliser fread, et
extirper ligne à ligne (peut-être plus simple), et boucler sur chaque
ligne.
Ensuite, tu vas exploser tout ça pour mettre chaque valeur dans un
enregistrement d'un tableau. Et tu pourras ainsi faire une recherche
sur ton tableau.
Bon on peut compliquer un peu, pour que ce soit plus pratique et
utile...un tableau associatif par exemple, ce serait pas mal
($tab['nom'] => array ('Robert', 'Depardieu' etc...), $tab['prenom']
=> array ('Jean', 'Bernard', etc...), etc...)
monoceros01
Messages postés420Date d'inscriptionvendredi 28 novembre 2003StatutMembreDernière intervention20 mars 2006 3 nov. 2005 à 14:20
Le input hidden est inutile, tu as oublier de mettre des " " autour
de certaines valeurs d'attributs et les doivent se
terminer par un / de même que les
tant qu'on y est :p (le
premier juste après <form method="GET"> étant inutile car un
élément FORM est de type block donc impliquera un retour à la ligne)
monoceros01
Messages postés420Date d'inscriptionvendredi 28 novembre 2003StatutMembreDernière intervention20 mars 2006 3 nov. 2005 à 14:24
@malalam > le method="get" ne pose pas vraiment de problème pour un
champ de recherche. En plus il peut permettre éventuellement de
sauvegarder/envoyer le lien correpondant à la recherche. Un champ de
recherche comme celui-ci ne posera pas de problème de taille dans l'url
je pense.
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 3 nov. 2005 à 14:42
Heu en fait, j'ai mis post par habitude...je ne ralais pas après le
get, mais après l'absence de guillemets pour délimiter la valeur des
attributs html. Lol. C'est tout.
monoceros01
Messages postés420Date d'inscriptionvendredi 28 novembre 2003StatutMembreDernière intervention20 mars 2006 3 nov. 2005 à 14:59
flopad > apprendre à coder par soi-même est comme un travail de
détective :) . Tu dois te poser les bonnes questions et trouver dans la
documentation les moyens d'y répondre.
Indice : demandes-toi ce qu'il y a dans $contents et quoi en faire ;)
flopad
Messages postés528Date d'inscriptionmercredi 28 septembre 2005StatutMembreDernière intervention 6 mars 2009 3 nov. 2005 à 15:03
C'est ce que j'essaie de faie mais si tu veux, j'essaie de mettre des choses en place et le développement n'est pas mon domaine et je pose toutes ces questions pour essayer de gagner un peu de temps tout en "essayant " de comprendre tout ça..... ;-)
flopad
Messages postés528Date d'inscriptionmercredi 28 septembre 2005StatutMembreDernière intervention 6 mars 2009 7 nov. 2005 à 10:25
Merci beaucoup pour cette réponse!
Maintenant, comment je dois faire pour venir chercher dans la variable $data si le nom recherché s'y trouve et afficher les infos le concernant...?