extraire champ sql plusieur valeur separer par ,

gdc
Eléphant du PHP | 101 Messages

17 avr. 2013, 09:42

salut, je cherche a extraire le contenu d'un champ SQL qui contien des chiffres separer par une virgule, j'aimerai pouvoir verifier par la suite si 1 de ces chiffre corespond a un autre champs ??

exemple:
CHAMP_1 = 1,2,3,8
CHAMP_2 = 3

J'aimerai verifier si une des valeur du champ_1 = a la valeur du champ_2

J'ai esseyer avec explode mais ca marche pas, car pour rechercher dans une sql avec = ben faux separer chiffre par chiffre et ensuite effectuer la recherche dans le champ_2 mais comprend pas commen faire

Désolé mais des fois on trouve pas de solution a nos probleme, c'est pourquoi je fais appel a vous...


MERCI ....

Eléphant du PHP | 51 Messages

17 avr. 2013, 11:37

Salut,
As-tu réussi à récupérer les valeurs de ces champs ?
Je pars du principe que oui, c'est à dire que tu as deux valeurs : $champ1 = 1,2,3,8 et $champ2 = 3

Comme tu l'as dis, le mieux serait donc d'utiliser la fonction explode()
$champ1 = explode(',', $champ1);
$resultat = "Non il n\'\est pas présent";
$rang = "absent";
for($i=0;$i<4;$i++)
  { if($champ[$i])==$champ2)
       { $resultat="Oui il est present";
         $rang = $id}
  }
echo $resultat; echo " au rang "; echo $rang;

gdc
Eléphant du PHP | 101 Messages

17 avr. 2013, 12:57

merci de ta reponse; mais moi ce que j'aimerai c,est de pouvoir faire un SELECT WHERE cat_accepter = "UNE DES CATEGORIE QUI ES DANS LE CHAMP1" pour cela faudrai que je reussis a faire un select avec le where qui as comme parametre une des valeurs qui es dans le champ1

Eléphant du PHP | 51 Messages

17 avr. 2013, 13:08

D'accord alors dans ces cas là rien ne t'empêche de faire le traitement que j'ai écrit, c'est à dire d'isoler chacun des paramètres présents dans le champ1 et ensuite tu fais un SELECT WHERE cat_accepter = $champ[celui qui t'intéresse].

Je ne suis pas certain de ce que tu veux faire, peut-être peux-tu expliquer à quoi va servir le programme exactement.

gdc
Eléphant du PHP | 101 Messages

17 avr. 2013, 13:52

D'accord alors dans ces cas là rien ne t'empêche de faire le traitement que j'ai écrit, c'est à dire d'isoler chacun des paramètres présents dans le champ1 et ensuite tu fais un SELECT WHERE cat_accepter = $champ[celui qui t'intéresse].

Je ne suis pas certain de ce que tu veux faire, peut-être peux-tu expliquer à quoi va servir le programme exactement.

Gorbi, le programme est un system publicitaire ciblé.

Table_1 champ_1 c,est la table des domain avec le champ cat_cible ( 1,2,5,7 ) < Ce champs peu avoir plusieurs chifre separer par une "," .
Table_2 champ_2 C'est la table ou son stocker les publicité et le champ categorie ( 7 ) < Ce champs a seulement 1 chiffre )

Allors dans mon SELECT je selectionne les pub qui on comme catégorie = champ_1 mais vu que le champ 1 a plusieur chiffre faut que jextracte chaque chiffre pour ensuite verifier si le champ_2 = 1 des chiffres du champ_1 ...


Je ne sais pas si tu as compris ce que je veux faire ....


Merci ,...

Eléphant du PHP | 51 Messages

17 avr. 2013, 14:36

Et bien il me semble que ça correspond au petit programme que je t'ai mis en premier message.

Tu vas donc chercher les valeurs dans Table1_champ1 en faisant $sql = SELECT champ1 FROM Table1
En suite tu appliques la requête, je pense de ce côté tu sais comment faire.

Une fois que tu as mis dans une variable ce qu'il y a dans ton champ tu obtiens quelque chose comme ça : $champ1 = 41,69,12,8
Seulement tu aimerais traiter chaque chiffre individuellement et pour ça tu as bien raison il faut utiliser la commande explode() :
$champ1 = explode(',', $champ1); Ainsi tu auras $champ1[0]=41 $champ1[1]=69 $champ1[2]=12 et $champ1[3]=8

Ensuite je t'ai proposé une boucle for afin de comparer chaque valeur avec celle de ton champ2.

Si jamais tu veux comparer avec l'intégralité de ta table il te faut une commande de ce style while($varible2 = mysql_fetch_array($variable1)).

Je ne sais pas si cela t'a aidé mais sache que ça ne semble pas bien compliqué et peut-être devrais-tu faire un dessin ou quelque chose comme ça pour que ça soit bien clair pour toi et ça te paraîtra surement plus simple.

gdc
Eléphant du PHP | 101 Messages

17 avr. 2013, 14:46

Et bien il me semble que ça correspond au petit programme que je t'ai mis en premier message.

Tu vas donc chercher les valeurs dans Table1_champ1 en faisant $sql = SELECT champ1 FROM Table1
En suite tu appliques la requête, je pense de ce côté tu sais comment faire.

Une fois que tu as mis dans une variable ce qu'il y a dans ton champ tu obtiens quelque chose comme ça : $champ1 = 41,69,12,8
Seulement tu aimerais traiter chaque chiffre individuellement et pour ça tu as bien raison il faut utiliser la commande explode() :
$champ1 = explode(',', $champ1); Ainsi tu auras $champ1[0]=41 $champ1[1]=69 $champ1[2]=12 et $champ1[3]=8

Ensuite je t'ai proposé une boucle for afin de comparer chaque valeur avec celle de ton champ2.

Si jamais tu veux comparer avec l'intégralité de ta table il te faut une commande de ce style while($varible2 = mysql_fetch_array($variable1)).

Je ne sais pas si cela t'a aidé mais sache que ça ne semble pas bien compliqué et peut-être devrais-tu faire un dessin ou quelque chose comme ça pour que ça soit bien clair pour toi et ça te paraîtra surement plus simple.


MERCI mais ca ne fonctionne pas, seulement si j,ai dans ma table_2 la premiere valeur de table_1 ...

$query = mysql_query("SELECT * FROM editeur_domain WHERE site_url = '$dom' ");
$rsql = mysql_fetch_array($query);

$champ = explode(',', $rsql['categorie_cible']);

for($i=0;$i<1;$i++){

$sel22 = mysql_query("SELECT * FROM ann_cpm WHERE categorie = '$champ[$i]' ORDER BY RAND() LIMIT 1 ");
if (mysql_num_rows($sel22) >= 1){
	while ($ch22 = mysql_fetch_array($sel22)){
	echo '<img src="'.$ch22['image_url'].'">';
	}
} else { echo "RIEN TROUVER"; }
   
}