extraction table avec tri

Eléphanteau du PHP | 39 Messages

14 mai 2006, 10:35

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

Eléphanteau du PHP | 39 Messages

14 mai 2006, 11:49

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

Mammouth du PHP | 19672 Messages

14 mai 2006, 12:10

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é. ;)
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 39 Messages

14 mai 2006, 12:14

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:

Eléphanteau du PHP | 39 Messages

14 mai 2006, 12:24

	//$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: @+

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

14 mai 2006, 17:23

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>

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphanteau du PHP | 39 Messages

14 mai 2006, 19:26

:shock: merci Truc j'essaie çà et je vous dis

Eléphanteau du PHP | 39 Messages

15 mai 2006, 13:42

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

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

15 mai 2006, 21:51

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.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphanteau du PHP | 39 Messages

15 mai 2006, 22:50

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

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

15 mai 2006, 23:00

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;

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphanteau du PHP | 39 Messages

15 mai 2006, 23:13

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:

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

15 mai 2006, 23:27

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.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphanteau du PHP | 39 Messages

16 mai 2006, 14:05

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 ?

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

16 mai 2006, 22:32

[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:

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute