Lentreprenaute Posté 20 Mars 2006 Partager 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
captain_torche Posté 20 Mars 2006 Partager 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Spidetra Posté 20 Mars 2006 Partager 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
captain_torche Posté 20 Mars 2006 Partager Posté 20 Mars 2006 Effectivement, je dois pas être bien réveillé Merci de m'avoir corrigé. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Spidetra Posté 20 Mars 2006 Partager 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Lentreprenaute Posté 20 Mars 2006 Auteur Partager 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
petit-ourson Posté 20 Mars 2006 Partager 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
captain_torche Posté 20 Mars 2006 Partager 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'].")"); Lien vers le commentaire Partager sur d’autres sites More sharing options...
Lentreprenaute Posté 21 Mars 2006 Auteur Partager 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sonia Gazil Posté 21 Mars 2006 Partager 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant