Page 1 sur 2

extraction table avec tri

Posté : 14 mai 2006, 10:35
par popi
Bonjour à vous,
Je reviens vers vous ;-)

Code : Tout sélectionner

d tag keywords 1 HjkjlkjI machi,gogo 2 BouTic excel 3 LiRe bidule,test,excel 4 BalloT la,cest,bon 5 SuiTe vba,truc,excel,formulaire 6 CreTin bien,entendu,quoi 7 AazzaR et,faim 8 BesTkA pic,et,pic 9 BibIpaGe samson,dalila 10 CocAcola
je voudrais extraire les keywords un par un sans la virgule
en gardant les id et les tags correspondants

avez-vous une piste ? j'imagine qu'il s'agit d'array mais je suis loin de maitriser

D'avance merci

Posté : 14 mai 2006, 11:49
par popi
bon, j'en suis là :
	while($data = mysql_fetch_assoc($resultat)){
		$formulaire.= $data["keywords"].",";	
		$pagge[].= $data["tag"];
		$trace[].= $data["id"];
	}  
	$liste = str_replace(",", " ", $formulaire);
	$mauxclef= str_word_count($liste, 1);
	$mauxclef= array_unique ($mauxclef);

	foreach($mauxclef as $key => $motkle){
		echo "id=".$trace[$key]." page=".$pagge[$key]." mot-clé= ".$motkle."<br>";
	}
ce qui donne çà :

Code : Tout sélectionner

id=1 page=HjkjlkjI mot-clé= machi id=2 page=BouTic mot-clé= gogo id=3 page=LiRe mot-clé= excel id=4 page=BalloT mot-clé= bidule id=5 page=SuiTe mot-clé= test id=7 page=AazzaR mot-clé= la id=8 page=BesTkA mot-clé= cest id=9 page=BibIpaGe mot-clé= bon id= page= mot-clé= vba id= page= mot-clé= truc id= page= mot-clé= formulaire id= page= mot-clé= bien id= page= mot-clé= entendu id= page= mot-clé= quoi id= page= mot-clé= et id= page= mot-clé= faim id= page= mot-clé= pic id= page= mot-clé= samson id= page= mot-clé= dalila
c'est pas encore çà je continue donc à chercher :)

Posté : 14 mai 2006, 12:10
par Cyrano
Les "$mauxcles" (ça fait si mal que ça ?), j'adore :langue:

Explore donc la fonction explode(), pratique pour mettre une chaine de mots séparés par le même signe dans un tableau indexé. ;)

Posté : 14 mai 2006, 12:14
par popi
Les "$mauxcles" (ça fait si mal que ça ?), j'adore :langue:
je confirme :D
Explore donc la fonction explode(), pratique pour mettre une chaine de mots séparés par le même signe dans un tableau indexé. ;)

je pars explorer donc, Merci :wink:

Posté : 14 mai 2006, 12:24
par popi
	//$liste = str_replace(",", " ", $formulaire);
	$liste = explode(",", $formulaire);
	$mauxclef= array_unique ($liste);
ok pour la fonction mais çà change pas le résultat ? ou bien j'ai pas tout compris :(

Mon estomac me demande de regarder l'heure :wink: @+

Posté : 14 mai 2006, 17:23
par Truc
tu peut t'y prendre autrement avec plus de facilité:
$tab_mot_cle=array();
while($data = mysql_fetch_assoc($resultat))
{ 
    $tab_mot_cle[$data["id"]]=explode(",",$data["keywords"]); 
}
ensuite tu récupères un tableau ayant comme indice les id des mots clés et comportant un sous tableau avec les mots clés.
Pour appeler le 1er mot clé ayant pour id 1:
$tab_mot_cle[1][0]
Pour appeler le 2eme mot clé ayant pour id 1:
$tab_mot_cle[1][2]
Pour appeler le 1er mot clé ayant pour id 2:
$tab_mot_cle[2][0]
ainsi de suite (ou dans une boucle suivant l'utilisation)

fait un copier coller de ce bout de code à la suite pour te rednre compte de la structure du tableau.
<pre>
<?php 
var_dump($tab_mot_cle);
?>
</pre>

Posté : 14 mai 2006, 19:26
par popi
:shock: merci Truc j'essaie çà et je vous dis

Posté : 15 mai 2006, 13:42
par popi
Effectivement quand on a le bon code c'est déjà plus facile :D
Merci Truc !

Donc çà fonctionne sans souçis et me voilà donc avec la difficulté qui en découle à savoir chercher et extraire de ce(s) tableau, j'ai tout essayé les array_search, in array et Cie, j'arrive pas à trouver une valeur ou à boucler dessus car le tableau principal, tab_mot_cle, ne prends comme index que le nb de lignes et comme sur une même ligne il peut y avoir plusieurs mots-clés çà voudrait dire des boucles imbriquées ?
Je sèche :(

:D après m'être rendu compte qu'il existait des tutoriaux ici aussi :oops: j'ai trouvé pour les boucles :
	foreach($tab_mot_cle as $cle => $val){
		for($i=0;$i<=count($val);$i++){
			echo "$cle : $val[$i]<br />";
		}
	}
me reste plus qu'à trouver plus simple au lieu de tester le résultat à chaque fois pour savoir si une valeur existe

Posté : 15 mai 2006, 21:51
par Truc
que souhaites tu faire maintenant avec ce tableau ?

tu as voulu garder les id avec les mots clés en relation il y a donc une raison à ça mais tu n'en dis pas plus alors difficile de te guider d'avantage.

Posté : 15 mai 2006, 22:50
par popi
Désolé :? je veux donc chercher si un ou plusieurs mots-clés existent et si oui, imprimer le tag correspondant
là j'y suis, avec la boucle je peux mettre if($val[$i]="monmotclé")...et la suite, je cherchais cependant s'il était possible de faire + simple avec in array par ex mais j'y suis pas arrivé

encore merci

Posté : 15 mai 2006, 23:00
par Truc
tu auras forcément une boucle, tu peux faire comme ceci:
foreach($tab_mot_cle as $cle => $val)
    if(in_array('le_mot', $val))        
         echo $cle;

Posté : 15 mai 2006, 23:13
par popi
d'accord, je croyais que in_array permettait de se passer de la boucle,
bon ben là j'ai bien avancé et j'ai appris des trucs, nickel !

je te remercie Truc :wink:

Posté : 15 mai 2006, 23:27
par Truc
enfait tu as une boucle en moins, mais l'autre dois parcourir les tableaux de 1er niveau.

Tu as un tableau (t1) de tableaux (t2) il faut donc boucler sur t1 et in_array() évite une boucle sur les t2.

Posté : 16 mai 2006, 14:05
par popi
Vu pour la boucle en moins :wink: encore merci

[HS] un forum ici pour parler de retour d'expérience sur les formations php d'Anaska ?

Posté : 16 mai 2006, 22:32
par Truc
[HS] un forum ici pour parler de retour d'expérience sur les formations php d'Anaska ?
Eh, tu peux toujours en parler dans le forum "hors sujet" du moment que tu n'en dis que du bien :langue: