PHP - recherche chaine dans tableau

Fermé
vixell Messages postés 23 Date d'inscription dimanche 29 décembre 2002 Statut Membre Dernière intervention 18 février 2009 - 28 juil. 2008 à 12:10
vixell Messages postés 23 Date d'inscription dimanche 29 décembre 2002 Statut Membre Dernière intervention 18 février 2009 - 29 juil. 2008 à 11:10
Bonjour,

Comment peut on rechercher dans un tableau une partie d'une information stocké dans un second tableau.

Voilà ce que j'ai essayé :
$sql="SELECT * FROM $table WHERE $condition";
$query_result_handle = mysql_query ($sql) or die ('Requête '.$sql.' !!!<BR>');
$num_of_rows = mysql_num_rows ($query_result_handle) ;
for ($count = 1; $col = mysql_fetch_row ($query_result_handle) ; ++$count)
{
$tab1=array("1;adresse@mail.com;20080729","2;adresse2@mail.com;20080729;","3;adresse3@mail.com;20080729");
$rechercher=$col[2];
if(in_array("%".$rechercher."%",$tab1)){action1;}else{$action2;};
}

Mais cela ne fonctionne pas.

kk1 pourrait il m'aider ?

MErci.
A voir également:

4 réponses

el_linwin Messages postés 519 Date d'inscription vendredi 25 juillet 2008 Statut Membre Dernière intervention 16 août 2008 90
28 juil. 2008 à 12:20
Bonjour vixell,

Dans votre ligne de test, vous faites référence à $dataMailing, qui est censé servir de tableau dans lequel on va rechercher la séquence "%".$rechercher."%".

Or, lorsque je vois votre code, la liste des adresses est stockée dans $tab1, pas dans $dataMailing. De plus, la façon de stocker les informations dans le tableau correspond à la forme: [numéro entrée];[adresse email];[date]

Cela me semble incompatible avec la formulation "%".$rechercher."%" qui est normalement interprétée de façon littérale par in_array, donc avec le symbole '%' au début et à la fin de la chaîne, et en plus, sans le moindre point-virgule, pour doublement présents dans chaque chaîne de caractère de votre tableau...

Cordialement,
el_linwin
0
vixell Messages postés 23 Date d'inscription dimanche 29 décembre 2002 Statut Membre Dernière intervention 18 février 2009
28 juil. 2008 à 14:05
pour ce qui est du nom du tableau, j'ai rectifié mon POST et effectivement il s'agit bien de $tab1.

Ensuite, j'ai recherché le moyen d'utiliser des caractères "joker" afin de considérer le texte recherché tel un expression qui pourrait contenir des caractères afin et après l'expression (comme on le fait dans du sql).
A priori, qi je comprend bien ce que vous écrivez, le "%" n'est pas un caractère joker...

Mais alors comment pourrait on faire ?
0
el_linwin Messages postés 519 Date d'inscription vendredi 25 juillet 2008 Statut Membre Dernière intervention 16 août 2008 90
28 juil. 2008 à 14:37
Bonjour vixell,

Pour in_array, le % n'est pas un caractère joker, il est compris littéralement.

Si je comprends bien la procédure, c'est l'adresse email à rechercher qui est contenue dans $rechercher.
Si c'est le cas, une possibilité est de créer 2 tableaux au lieu d'un:

// $tab1 contient les adresses email
$tab1=array("adresse@mail.com","adresse2@mail.com","adresse3@mail.com");

// $tab2 contient les dates
$tab2=array("20080729","20080729","­20080729");

Les indices n'ont plus besoin d'être dans le tableau, vu qu'il faut connaître l'indice pour accéder à un élément. Ensuite, le test s'effectuerait ainsi:

$rechercher=$col[2];
if (in_array($rechercher,$tab1)) {action1;} else {action2;}


Cordialement,
el_linwin
0
vixell Messages postés 23 Date d'inscription dimanche 29 décembre 2002 Statut Membre Dernière intervention 18 février 2009
29 juil. 2008 à 11:10
ok. Sauf que ensuite il y a un traitement à faire et celui-ci dépend de l'ID de l'adresse email.
Donc deux possibilité soit refaire un requetage SQL soit deuxième comparaison avec un autre tableau : le même que celui que tu as créé (qui contient que les mails) mais avec les ID...

Je cherchais une solution directe pour économiser le serveur....
Je me disais peut être que PHP avait une fonction déjà toute faite ou avait prévu l'utilisation de caractères jocker...

Merci el_linWin
0