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

je confirme
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

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

@+
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

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

après m'être rendu compte qu'il existait des tutoriaux ici aussi

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

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

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
