Recherche csv

flopad Messages postés 528 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 6 mars 2009 - 7 nov. 2005 à 16:11
flopad Messages postés 528 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 6 mars 2009 - 8 nov. 2005 à 13:38
Bonjour, je veux faire une recherche sur un fichier csv mais cela ne marche pas......
En fait, je veux rechercher la variable tapée par l'utilisateur et si elle existe l'afficher dans une page html...
Voici mon code est ce que qq'un peut m'aider please....????? Merci d'avance

<form action="Recherche.php" method="post">




</form>



<?
if (isset($_POST['nom'])) // Si un nom est rentré


{
$lines = file('annuaire.csv');
foreach($lines as $v) {
$datas = explode(';', $v);
if(in_array('nom', $datas)) {
print_r($datas); }
}


}
?>

22 réponses

J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 10
7 nov. 2005 à 16:51
Salut,



On dirait que tu ne connais pas cette magnifique fonction :

fgetcsv();



Je pense que c'ira mieux avec...



A+
0
flopad Messages postés 528 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 6 mars 2009
7 nov. 2005 à 17:01
Effectivement....
Mais je voulais deja savoir ce qu'il fallait changer ou ajouter dans mon code pour que ca fonctionne...???
0
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 10
7 nov. 2005 à 17:16
Tu as oublié de récupérer la valeur de $_POST['nom'];



Je te propose un truc comme ça :







// on récupère le nom si existe, sinon FAUX

$nom = isset($_POST['nom'] ? $_POST['nom'] : false;



if ( $nom ) { // si un nom (!!! autre que '' ou '0' ou 'null' !!!)

$fp = fopen(/*...*/) or die('erreur ouverture fichier');

while( $csv = fgetcsv($fp) or !feof($fp) ) { // on récupère un tableau pour chaque ligne

if( in_array($nom, $csv) ) print_r($csv);

}

fclose($fp);

}





note :

il existe aussi array_search qui renvoi la position de l'objet cherché...

ex :



// on récupère le nom si existe, sinon FAUX


$nom = isset($_POST['nom'] ? $_POST['nom'] : false;





if ( $nom ) { // si un nom (!!! autre que '' ou '0' ou 'null' !!!)


$fp = fopen(/*...*/) or die('erreur ouverture fichier');


while( $csv = fgetcsv($fp) or !feof($fp) ) { // on récupère un tableau pour chaque ligne


if( ($pos = array_search($nom, $csv))===false ) print_r($csv[$pos]);


}


fclose($fp);


}





Note :
Avant PHP 4.2.0, array_search() retournait
<tt>NULL</tt> en cas d'échec, au lieu de <tt>FALSE</tt>.





En fait, tu avais fait plein de confusion entre tes variables...



A+
0
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 10
7 nov. 2005 à 17:18
Quelques petites erreur de syntaxes et autre correctifs...





$nom = isset($_POST['nom'] ) ? $_POST['nom'] : false;



while( ($csv =fgetcsv($fp)) or !feof($fp) ) {
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
flopad Messages postés 528 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 6 mars 2009
7 nov. 2005 à 17:44
Je comprends pas, ca ne marche pas, voici mon code :

<form action="Recherche.php" method="post">




</form>



<?
// on récupère le nom si existe, sinon FAUX
$nom = isset($_POST['nom']) ? $_POST['nom'] : false;
$file = "Annuaire.csv";


if ( $nom ) { // si un nom (!!! autre que '' ou '0' ou 'null' !!!)
$fp = fopen($file, 'r') or die('erreur ouverture fichier');
while( ($csv = fgetcsv($fp)) or !feof($fp) ) { // on récupère un tableau pour chaque ligne
if( in_array($nom, $csv) ) print_r($csv);
}
fclose($fp);
}


?>
0
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 10
7 nov. 2005 à 18:04
Oui...



Qu'est ce qui ce passe au juste ?

=> Rien, ni que dalle

=> Une erreur





Au lieu de print_r(), utilises var_export().

var_export() affiche toujours quelque chose...





Autre chose, places cette ligne au sommet de ton script :

error_reporting(E_ALL);

Grâce à ça, TOUTES les erreurs seront affichées...





A toute !
0
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 10
7 nov. 2005 à 18:09
Puis même, tant qu'on y est, et si ton fichier Annuaire.csv n'est pas trop gros, force l'affichage quoi qu'il arrive :









// on récupère le nom si existe, sinon FAUX

$nom = isset($_POST['nom']) ? $_POST['nom'] : false;

$file = "Annuaire.csv";
if ( $nom ) { // si un nom (!!! autre que '' ou '0' ou 'null' !!!)
$fp = fopen($file, 'rt') or die('erreur ouverture fichier');


$i = 0;

while( ($csv = fgetcsv($fp)) or !feof($fp) ) { // on récupère un tableau pour chaque ligne
if( ($pos = array_search($nom, $csv))===false ) print_r($csv[$pos]);

else echo "Pas trouvé '$nom' ligne '$i'
";

$i++;

}
fclose($fp);
}
0
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 10
7 nov. 2005 à 19:12
Alors ?
0
flopad Messages postés 528 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 6 mars 2009
8 nov. 2005 à 08:18
Salut et merci beaucoup de ton aide mais ca ne fonctionne pas avec le code suivant, en fait quand je tape le nom que je recherche, ca ne m'affiche rien , pas d'erreur, que dalle....

Que faire?????

<form action="Recherche.php" method="post">




</form>



<?
error_reporting(E_ALL);


// on récupère le nom si existe, sinon FAUX
$nom = isset($_POST['nom']) ? $_POST['nom'] : false;
$file = "Annuaire.csv";


if ( $nom ) { // si un nom (!!! autre que '' ou '0' ou 'null' !!!)
$fp = fopen($file, 'rt') or die('erreur ouverture fichier');
$i = 0;
while( ($csv = fgetcsv($fp)) or !feof($fp) ) { // on récupère un tableau pour chaque ligne
if( in_array($nom, $csv) ) var_export($csv);
$i++;
}
fclose($fp);
}
?>
0
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 10
8 nov. 2005 à 09:32
Est-ce qu'il affiche cette ligne au moins ?

else echo "Pas trouvé '$nom' ligne '$i'
";
0
flopad Messages postés 528 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 6 mars 2009
8 nov. 2005 à 09:37
Oui, quand je tape un nom, ca me dit pas touvé 'nom' ligne 0.........jusqu'a ligne 612....
0
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 10
8 nov. 2005 à 10:05
Ca te dit pas trouvé 'nom'

ou pas trouvé [Le nom que tu cherches] ???
0
flopad Messages postés 528 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 6 mars 2009
8 nov. 2005 à 10:06
Ca me dit pas trouvé le nom que je cherche
0
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 10
8 nov. 2005 à 10:27
Donc, ton code fonctionne à merveille...



Deux solutions :

* ce que tu cherche n'existe pas dans Annuaire.csv

=> vérifie à la mimine qu'il existe bien ( ATTENTION A LA CASSE, AU ESPACES, AU ACCENTS, ...)


* Annuaire.csv est "mal-formé" ce qui fait que par manque de chance, justement ce que tu cherche n'est pas lu comme csv.

=>Va te renseigner sur fgetcsv car on peut lui donner
plus de paramètres au cas où le fichier ne soit pas dans un format CSV
"standard".






J'ai peur de ne plus pouvoir grand chose à partir d'ici !!!



Bonne chance
0
flopad Messages postés 528 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 6 mars 2009
8 nov. 2005 à 10:39
Je sais pas trop, comment est ce que je peux vérifier que mon fichier csv est correct???
A la base, c'etait un fichier excel que j'ai transformé en csv...
0
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 10
8 nov. 2005 à 11:07
Est-ce que ton fichier Excel comprennait ligne ?

Si oui, l'exportation semble bonne





Pour chercher $nom à la main, ouvre ton fichier Annuire.csv dans un éditeur de texte et Edition>Rechercher>$nom>Enter
0
flopad Messages postés 528 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 6 mars 2009
8 nov. 2005 à 11:12
Quand je recherche à la main en ouvrant mon csv dans le bloc note, ca trouve.

Que faire je suis largué....?????
0
flopad Messages postés 528 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 6 mars 2009
8 nov. 2005 à 11:36
Quand il me dit qu'il ne me trouve pas le nom recherché ,il me met 'nom pas trouvé' entre ' ' , est ce que c'est pas ca qui cloche on dirait qu'au lieu de chercher nom, ca cherche 'nom'...?
0
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 10
8 nov. 2005 à 11:42
NON !!!



echo "Pas trouvé '$nom' ...







Je confirme, le code est BON... Alors, peut-être un peitt tour sur un
tutorial PHP te ferait du bien et t'ouvrir les portes de la
perception...





Bonne chance!
0
flopad Messages postés 528 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 6 mars 2009
8 nov. 2005 à 12:10
Oui désolé j'avais pas fait attention...
Par contre ca fonctionne bien en effet, mon fichier csv n'etait pas bon, j'ai remplacé les ; par des , pour les séparateurs et c'est ok!
Encore une derniere question, comment je peux faire pour mettre en page ces infos récupéres dans le style
Nom :
Prénom :
Téléphone :
....etc
0
Rejoignez-nous