boucle while et tableau

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : boucle while et tableau

par nab » 19 févr. 2005, 14:11

ok merci

Nab

par Jerem' » 19 févr. 2005, 12:50

Tu peux cliquer sur résolu :wink:

par nab » 18 févr. 2005, 23:01

en fait je ne voulais pas mettre tous le champs en gras (comme le fait Jerem's) mais juste les valeurs de tableau susceptibles de se trouver dans le contenu du champ.

Nab

par nab » 18 févr. 2005, 22:58

en effet pour le and je me suis planté dans le message. j'ai bien mis or.
Sinon j'ai trouvé la réponse à mon probleme.
Pour ce que ça intéreese voilà ce que j'ai fait.
$keyword="val1 val2 ect....";
$keyword=explode(" ", $keyword);

$q="SELECT * FROM ma_table WHERE mon_champ like '%val1%' OR mon_champ like '%val1%' OR mon_champ like '%val3%' etc..." ;
$res=mysql_query($q);


function met_le_bold(&$item)
{
	$item="<b>".$item."</b>";
} 

// fait une copie de $array
$replace=$keyword; 

// ajoute le bold a tous les éléments de la copie
array_walk($replace,'met_le_bold'); 


while ($row=mysql_fetch_array($res))
{
	
	$mon_champ=str_replace($keyword,$replace,$row['mon_champ']); 

	echo $mon_champ;
}

Re: boucle while et tableau

par Jerem' » 18 févr. 2005, 10:36

En dehors de ta requete qui est fausse (expliqué par Cyrano) :

Pour mettre en gras :

Code : Tout sélectionner

$res=mysql_query($q); while($row=mysql_fetch_array($res)) { echo '<br /><strong>'.$row['mon_champ'].'</strong>'; }

par Cyrano » 18 févr. 2005, 09:57

Salut,
à première vue, ta requête a toute les chances de ne te donner aucune réponse : pour avoir les information en fonction d'au moins UN des éléments de ton tableau, il faudrait remplacer le AND de ta requête SQL par OR;
Ensuite, tu ajoutes en fin de requête $array[$nombre_element], index qui n'existe pa si le premier indice est 0: en effet, si tu as 4 éléments par exemple, tu auras $array[0], $array[1], $array[2], $array[3]; le nombre d'éléments est bien 4, mais $array[4] n'existe pas.
Pour terminer, je ne saisis pas trop où est la difficulté pour mettre une chaîne de caractères en gras... qu'est-ce qui te semble compliqué au juste ?

boucle while et tableau

par nab » 18 févr. 2005, 05:01

Bonjour,

1) j'ai stocké plusieurs valeurs dans un tableau en utilisant la fonction explode()
$str="val1 val2 val3....";
                $array=explode(" ", $str);
                $nombre_element=count($array);
2) j'affiche tous les enregistrements d'une table contenant au moins une de ces valeurs
$q="SELECT * FROM ma_table WHERE mon_champ like '%".$array['0']."%'";
                for ($i=1; $i<$nombre_element; $i++)
                {
                                $q.=" AND mon_champ like '%".$i."%' ";
                }
                $q.="mon_champ like '%".$array[$nombre_element]."%'";
	
                $res=mysql_query($q);
                while ($row=mysql_fetch_array($res))
                {
                                echo $row['mon_champ'];
                }
3) c'est maintenant que ça se complique pour moi car je souhaite remplacer $array[$i] contenu dans les enregistrements par $array[$i] en gras. (
str_replace($array[$i], <b>$array[$i]</b>, $row[mon_champ])
)

Toute aide sera la bienvenue.

Merci d'avance,

Nab

message édité par ermelir: prefere l'utilisation des bbcodes php pour mettre du code plutot que de la couleur, c'est plus lisible