Jump to content
Sign in to follow this  
Lentreprenaute

select.. where XXX AND YYY AND.....

Rate this topic

Recommended Posts

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

Edited by Lentreprenaute

Share this post


Link to post
Share on other sites

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 tableau
foreach($tab as $chiffre) {
$req = mysql_query("SELECT * FROM tatable WHERE tonchamp = $chiffre");
// Suite du traitement
}
?>

Edited by captain_torche

Share this post


Link to post
Share on other sites

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 ?

Edited by anorci

Share this post


Link to post
Share on other sites
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 :D

Edited by anorci

Share this post


Link to post
Share on other sites

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 :o).

Florent

Share this post


Link to post
Share on other sites

[...]

$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.

Edited by petit-ourson

Share this post


Link to post
Share on other sites

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'].")");

Share this post


Link to post
Share on other sites

eh eh capitain torche,

ca me parait ideal plus c'est court et simple mieux c'est :o) 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

Share this post


Link to post
Share on other sites
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 ;)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...