Exécuter des requêtes mysql depuis un fichier excel ou csv

cs_mbik Messages postés 31 Date d'inscription mardi 1 avril 2008 Statut Membre Dernière intervention 10 mars 2011 - 10 nov. 2009 à 17:39
cs_mbik Messages postés 31 Date d'inscription mardi 1 avril 2008 Statut Membre Dernière intervention 10 mars 2011 - 12 nov. 2009 à 21:54
Bonjours chers amis,
Je suis dans la détresse faute de ne pouvoir résalier un projet qu'on a confié.Je suis un jeune stagiaire et novice en php.
Voici mon probléme :
Chaque matin je dois réaliser plusieurs requêtes SQL depuis un fichier csv qui contient les informations de base telles que les champs TEL ADRESSE NOM PRENOM du client. A chaque fois je copie le n° de TEL pour tester et exécuter une requête SQL avec le n° TEL. Si toutefois, j'ai pas de résultat, je reprend le même travail avec le champ PRENOM et/ou NOM.
Pour me faciliter la vie vu que les requêtes me prennent 2 ou 3h chaque matin alors je veux l'automatiser.
Le but étant de créer un script qui a le bouton parcourir pour télécharger le fichier contenant les informations de la recherche et de les exécuter quand je clique sur ENVOYER par exemple.

Les résultat de la recherche doit ensuite sortir sous un autre fichier csv ou excel selon votre choix.

AIDEZ moi s'il vous plait. C'est très urgent


Rien de plus sympa que l'entraide en info

14 réponses

cs_mbik Messages postés 31 Date d'inscription mardi 1 avril 2008 Statut Membre Dernière intervention 10 mars 2011
11 nov. 2009 à 02:24
Il y a personne pour m'aider pliz?


Rien de plus sympa que l'entraide en info
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
11 nov. 2009 à 10:07
Salut,

Il y a personne pour m'aider pliz?

Et si tu commençais par fournir le début de code que tu as écrit, ça serait un bon départ pour t'aider, non ?


Cordialement,

Kohntark -
0
cs_mbik Messages postés 31 Date d'inscription mardi 1 avril 2008 Statut Membre Dernière intervention 10 mars 2011
11 nov. 2009 à 10:18
Bonjour, Merci d'avance pour ta réponse.
Comme je l'ai dis dan le post suis novice et je sais pas comment dois je structurer le code or sans cela je peux pas commencer.
J'ai de vagues idées mais sans plus


Rien de plus sympa que l'entraide en info
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
11 nov. 2009 à 10:41
C'est bien l'impression que ça m'avait laissée ...

Pourtant tu as déjà décomposé :
Le but étant de créer un script qui a le bouton parcourir pour télécharger le fichier contenant les informations de la recherche et de les exécuter quand je clique sur ENVOYER par exemple.

Cela me parait judicieux et il en ressort tout naturellement :

- un formulaire d'upload
- un script permettant d'aller chercher dans le fichier reçu les informations nécessaires, puis de les mettre en forme pour interroger la DB, avec retour des résultats au client

Le premier point ne devrait pas poser de problème (51 700 000 résultats dans google) Commence donc par là.
Par contre, sauf si on te l'impose, oubli l'utilisation de fichier excel (.xls) : ce n'est nullement justifié et ça va te compliquer la tâche. Le format .csv répondant parfaitement à ce que tu veux faire.


Au plaisir d'avoir des nouvelles,


Kohntark -
0

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

Posez votre question
cs_mbik Messages postés 31 Date d'inscription mardi 1 avril 2008 Statut Membre Dernière intervention 10 mars 2011
11 nov. 2009 à 12:00
Une fois que j'ai le formulaire et le fichier upload je fais comment pour le traiter suivant les champs qui m'intéresse pour l'exécution des requêtes SQL

Rien de plus sympa que l'entraide en info
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
11 nov. 2009 à 12:32
Une fois que le fichier csv est sur le serveur tu le lis via des fonctions comme str_getcsv(), fgetcsv() et tu récupères les champs qui t'intéressent.
Tu construis ensuite tes requêtes à partir de ces données.
Tu les exécutes, tu formates si nécessaire au format csv.
Tu renvoies le résultat au client, soit en brut à l'affichage, soit en forçant le téléchargement du fichier résultant.

Ce sont les grandes lignes, pour le détail il faut connaitre la structure du csv, les requêtes, etc ...


Cordialement,



Kohntark -
0
cs_mbik Messages postés 31 Date d'inscription mardi 1 avril 2008 Statut Membre Dernière intervention 10 mars 2011
11 nov. 2009 à 12:48
s'il te plait vu que c'est la 1ère fois que je le fais tu peux me donner un code avec des commentaire pour l'exécution de cette tâche.

Je sens que sans ton aide je vais jamais y arriver. je cherche depuis des heures et c'est seulement quand t'es intervenu que j'ai commencé à comprendre les manips.
un code et les commentaires me permettrons de comprendre pour les prochaines fois
Merci d'avance


Rien de plus sympa que l'entraide en info
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
11 nov. 2009 à 13:25
s'il te plait vu que c'est la 1ère fois que je le fais tu peux me donner un code avec des commentaire pour l'exécution de cette tâche.

Je ne sais pas pourquoi mais je la sentais venir depuis le début celle là.
Non, je ne ferai pas ton code.

Dixit le règlement :
9- On ne demande pas un programme tout fait, on ne demande que de l'aide sur un problème concret.
Dirigez-vous directement dans la recherche de sources pour les programmes complets. Inutile de demander du "code tout cuit", vous n'obtiendrez aucune réponse.


Comme nombre d'entre nous je suis ici pour aider, pas pour travailler gratuitement à la place des autres.
Tu veux que je te dise, je suis autodidacte de A à Z, je n'ai jamais eu la chance de suivre le moindre cours d'informatique, j'ai eu mon premier PC à 24 ans, je n'ai jamais eu aucun soutient; mes modestes connaissances je les ai acquises en travaillant, en me prenant fortement la tête (et ça continue)
Alors quand je vois la chance que tu as d'être stagiaire dans ce domaine et que tu n'en profites pas pour acquérir les connaissances ça me laisse froid

Me doutant de ta réponse dès le début j'ai précisé : "(51 700 000 résultats dans google)"
faudrait vraiment être fainéant pour ne pas mettre en oeuvre cet impressionnant chiffre.

Bref :
- tu veux progresser :
tu fais l'effort de lire les tutos, les sources etc ...
tu fournis du code, tu poses des questions précises sur les points bloquants
=> tu auras de l'aide ici
- tu veux que l'on te mâche le travail
=> ce n'est même pas la peine d'espérer une réponse de ma part



Kohntark -
0
cs_mbik Messages postés 31 Date d'inscription mardi 1 avril 2008 Statut Membre Dernière intervention 10 mars 2011
11 nov. 2009 à 14:26
Il y a une incompréhension, je suis un jeune étudiant qui connait très peu le langage php.
Demander de l'aide pour un novice n'a rien à voir avec la paresse. Déjà tu m'as mis sur une voie, je t'en remercie.


Rien de plus sympa que l'entraide en info
0
cs_mbik Messages postés 31 Date d'inscription mardi 1 avril 2008 Statut Membre Dernière intervention 10 mars 2011
12 nov. 2009 à 14:08
Bonjour,
j'ai suivi tes conseils et voilà ce que j'ai fait pour le moment
J'ai créé un Array avec toutes les infos mais je sais pas comment recupérer les valeurs TEL qui me serviront pour mes requêtes SQL.
voici le code :
<?php
$row = 1;
$handle = fopen("test.csv", "r");
while ($data = fgetcsv($handle, 1000, ";")) {
$num = count($data);

$chaine_infos = $data; // On a une chaîne
$array_infos = explode('/', $chaine_infos); // On transforme cette chaîne en array

// Puis on peut afficher le contenu de l'array
// Ici je fais un print_r, c'est plus rapide ;o)
echo '';
print_r($chaine_infos);
echo '

';

}
fclose($handle);
?>

peux tu m'aider pour la récupération des valeurs TEL
Rien de plus sympa que l'entraide en info
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
12 nov. 2009 à 19:20
Re,

peux tu m'aider pour la récupération des valeurs TEL

Malheureusement pas des masses puisque je ne connais pas la structure du csv.

Quelques commentaires / questions sur le code :

<?php
$row = 1; // à quoi sert cette variable ?
$handle = fopen("test.csv", "r");
while ($data = fgetcsv($handle, 1000, ";")) {
   $num = count($data); // à quoi sert cette variable ?

   $chaine_infos = $data; // ça ne sert à rien, autant travailler sur $data
   $array_infos = explode('/', $chaine_infos); // à quoi sert cette variable ?

   // Puis on peut afficher le contenu de l'array
   // Ici je fais un print_r, c'est plus rapide ;o)
   /*
   Ton but n'est pas d'afficher le tableau mais de retirer les champs qui t'intéressent.
   Pourquoi l'afficher alors ?
   Je ne peux m'empêcher de poser la question :
   comprends tu ce que tu as écrit ou recopié ?
   */
   echo '';
   print_r($chaine_infos);
   echo '

';

}
fclose($handle);
?>



Comme tu as pris soin de lire la doc, je ne t'apprendrai rien en te disant que $data est un tableau contenant tous les champs csv trouvés.
A partir de là il faut récupérer les index des champs tel, et sans doute nom et prénom, et ça toi seul les connais.
Si par exemple le champ tel est le troisième champ il sera contenu dans $data[2];

Je me répète :
Ce sont les grandes lignes, pour le détail il faut connaitre la structure du csv, les requêtes, etc ...

Sans cela il n'est pas possible d'être précis dans l'aide.


Kohntark -
0
cs_mbik Messages postés 31 Date d'inscription mardi 1 avril 2008 Statut Membre Dernière intervention 10 mars 2011
12 nov. 2009 à 19:50
En fait mon fichier est composé des champs suivants :
Array
(
[0] => Civilité
[1] => Nom
[2] => Prénom
[3] => Adresse
[4] => Cp
[5] => Tél
)

La ligne ci-dessous me permet d'afficher que les valeurs de la clé 5 comme suit:

print_r($chaine_infos[5]);

123456789

123456790

123456791

123456792

123456793

123456794

123456795

123456796

123456797

Jusque là ça avance. Maintenant ce que je veux faire c'est affecter une variable unique à chaque valeur (la liste des n° ci-dessus). Ce qui me permettra d'exploiter les valeurs pour mes requêtes SQL



Rien de plus sympa que l'entraide en info
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
12 nov. 2009 à 20:35
Désolé de me répéter encore une fois :
Ce sont les grandes lignes, pour le détail il faut connaitre la structure du csv, les requêtes, etc ...

Si je pose la question ce n'est pas pour m'amuser et encore moins pour t'ennuyer hein

Il faut que tu donnes plus d'infos afin de ne pas partir sur des aberrations.
"affecter une variable unique à chaque valeur" risque d'en être une.
Sans doute est il plus judicieux de traiter les requêtes dans la boucle, ou peut être de mettre les résultats dans un tableau, ou peut être autre chose.
Dans ton cas on se fout un peu de l'optimisation, mais simplifier est toujours une bonne chose.

Pour cela il est nécessaire d'en savoir plus
quel est le but exact final ? (le contenu du fichier résultant, ...)
quelles requêtes ?
quelle nombre d'enregistrements a la base (plutôt 500 ? plutôt 300000 ?)
etc ...

Kohntark -
0
cs_mbik Messages postés 31 Date d'inscription mardi 1 avril 2008 Statut Membre Dernière intervention 10 mars 2011
12 nov. 2009 à 21:54
Le but est de rechercher (avec cette requête Select * from CLIENT where tel like '%0123456789%')toutes les infos sur les clients en fonction de leur n° de téléphone qui est unique par client.
Si le résultat de la recherche avec le n° de aucun résultat alors le systéme dois pouvoir refaire la recherche avec le nom puis si tjrs pas de résultat avec le prénom.

Rien de plus sympa que l'entraide en info
0
Rejoignez-nous