Lentreprenaute Posté 20 Mars 2006 Posté 20 Mars 2006 (modifié) bonjour, je voudrai lire un fichier qui contient des données, de ce type: ( 99,7,8,1999,.....) Chiffre,chiffre,chiffre etc..... et interroger ma base pour chaque chiffre, comme il peut y avoir entre 0 à l'infini, sans aucune cohérence dans la numérotation, Je me demande comment interroger ma base, merci de votre aide. Florent Modifié 20 Mars 2006 par Lentreprenaute
captain_torche Posté 20 Mars 2006 Posté 20 Mars 2006 (modifié) Déjà, pour lire le fichier, il faut utiliser un langage spécifique (par exemple le PHP). Tu dois avec ce langage, ouvrir le fichier, lire son contenu, et séparer les chiffres des virgules (J'espère pour toi que tu utilises le point pour les décimaux, s'il y en a). En php, ça pourrait donner ça : <?php// Le code de connexion à ta bdd// Ouverture du fichier, récupération de son contenu$filename = "chemin_vers_ton_fichier.txt";$handle = fopen ($filename, "r");$contents = fread ($handle, filesize ($filename));fclose ($handle);// Séparation des chiffres, et organisation dans un tableau$tab = explode(',', $contents);// boucle effectuant la requête pour chaque élément du tableauforeach($tab as $chiffre) {$req = mysql_query("SELECT * FROM tatable WHERE tonchamp = $chiffre");// Suite du traitement}?> Modifié 20 Mars 2006 par captain_torche
Spidetra Posté 20 Mars 2006 Posté 20 Mars 2006 (modifié) Une première réponse possible : SELECT *FROM table WHERE champ IN ( XX, XX, XX, XX, XX ) Inspire toi de la solution de captain torche et génère la liste de ta clause IN en php. Là ou je ne suis pas d'accord avec captain torche : Ne jamais mettre une requête dans une boucle. Tu vas faire n requêtes, là ou une seule est suffisante. Maintenant : qu'est-ce que tu entend par infini ? Des millions de lignes dans le fichier, des milliers ou des centaines ? Modifié 20 Mars 2006 par anorci
captain_torche Posté 20 Mars 2006 Posté 20 Mars 2006 Effectivement, je dois pas être bien réveillé Merci de m'avoir corrigé.
Spidetra Posté 20 Mars 2006 Posté 20 Mars 2006 (modifié) Effectivement, je dois pas être bien réveillé Merci de m'avoir corrigé. <{POST_SNAPBACK}> Je t'offre un café Rassures-toi, j'avais même pas vu qu'il lisait dans un fichier. C'est ta solution qui me l'a montré. Pas réveillé non plus. Comme quoi, 2 cerveaux valent mieux qu'un Modifié 20 Mars 2006 par anorci
Lentreprenaute Posté 20 Mars 2006 Auteur Posté 20 Mars 2006 merci a tous les deux, ca m'a l'air parfait, pour une production matinale en fait je vais lire un fichier cookie donc, il y aura disons plutot des dizaines de chiffres et pas des millions ). Florent
petit-ourson Posté 20 Mars 2006 Posté 20 Mars 2006 (modifié) [...]$tabchiffre = array();foreach($tab as $chiffre) {$tabchiffre[] = $chiffre;}if( count($tabchiffre) != 0 ) {$req = mysql_query("SELECT * FROM tatable WHERE tonchamp IN implode(",",$tabchiffre);} C'est faisable assez rapidement. Modifié 20 Mars 2006 par petit-ourson
captain_torche Posté 20 Mars 2006 Posté 20 Mars 2006 Ben, si j'ai bien compris, il n'est pas nécessaire de passer le contenu en tableau, puis de le reserializer, puisqu'ils sont déjà séparés par des virgules dans le cookie. On aurait donc : if($_COOKIE['nom'])$req = mysql_query("SELECT * FROM tatable WHERE tonchamp IN (".$_COOKIE['nom'].")");
Lentreprenaute Posté 21 Mars 2006 Auteur Posté 21 Mars 2006 eh eh capitain torche, ca me parait ideal plus c'est court et simple mieux c'est ) je teste ca des que j'ai le temps* enfin de ce que j'ai suivi sur le fil ca doit le faire. merci Florent
Sonia Gazil Posté 21 Mars 2006 Posté 21 Mars 2006 Ben, si j'ai bien compris, il n'est pas nécessaire de passer le contenu en tableau, puis de le reserializer, puisqu'ils sont déjà séparés par des virgules dans le cookie.On aurait donc : if($_COOKIE['nom'])$req = mysql_query("SELECT * FROM tatable WHERE tonchamp IN (".$_COOKIE['nom'].")"); <{POST_SNAPBACK}> Cette solution est idéale je pense. Mais il faut tout de même pensé à vérifier la valeur contenu dans le cookie, histoire d'éviter les injections sql
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant