[RESOLU] Gestion de tags via l'url (GET)

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 : [RESOLU] Gestion de tags via l'url (GET)

Re: Gestion de tags via l'url (GET)

par Zahnzao » 31 juil. 2012, 17:31

Merci pour ta réponse.

Pas bête mais j'ai finalement trouvé une autre solution. En fait mon idée de base était bonne (avec la duplication de mon array). Il suffisait juste de le réinitialiser à chaque boucle.
foreach($tags as $tag => $cat){
	$htmlCat='';
	if($tempCat != $cat){
		$htmlCat='<p class="categorie '; 
		if($tempCat != '') $htmlCat.='catop'; 
		$htmlCat.='">'.$cat.'</p>';
		$tempCat=$cat;
	}
	$secondClass='';
	$key=array_search($tag,$tagRequest);
	if($key!==false){
		$secondClass=' tagChecked';
		$tempArray=$tagRequest;
		unset($tempArray[$key]);
		if(empty($tempArray)){
			$string='';
		}else{
			$string='?tags=';
			$i=0;
			foreach($tempArray as $temp){
				$i++;
				if($i<count($tempArray)){
					$string.=$temp.'+';
				}else{
					$string.=$temp;
				}
			}
		}
	}else{
	        if(empty($queryString)){
			$string='?tags='.$tag;
		}else{
			$string='?tags='.$queryString.'+'.$tag;
		}
	}
	echo $htmlCat;
	echo'<a class="tag'.$secondClass.'" href="index.php'.$string.'">'.$tag.'</a>';
}

Re: Gestion de tags via l'url (GET)

par Spols » 31 juil. 2012, 15:24

Je n'ai pas lu ton script, mais moi j'ajouterais le nouveau tag à mon array, puis detecter les doublons éventuelle pour suppression (avec une fonction comme array_count) et préparation de requète avec l'array de tag. (éventuellement vérification d'autorisation des tags avant préparation de requète)

Gestion de tags via l'url (GET)

par Zahnzao » 31 juil. 2012, 14:10

Bonjour,

J'ai un petit problème qui me bloque, j'affiche une liste de tags, chaque fois je clique sur un tag il est ajouté aux autres via l'url en GET et je construit ma requête SQL en récupérant cette valeur.

Tout fonctionne bien.

La ou je coince c'est lorsque je clique sur un tag déjà présent dans la requête GET, je voudrais qu'il en soit supprimé.

J'ai ajouté les 3 premières variables pour l’exemple. Elles sont générées dynamiquement ailleurs dans le script.
// exemple si on arrive sur la page avec cette requête ?tags=tag+tag-3+tag-4
$tags=array('tag','tag-1','tag-2','tag-3','tag-4'); // liste complète des tags issus de la BDD
$tagRequest=array('tag','tag-3','tag-4'); // tags envoyés par methode GET mis en array
$queryString='tag+tag-3+tag-4'; // la requête en elle même $_GET['tags']
foreach($tags as $tag){
	$secondClass='';
	if(in_array($tag,$tagRequest)){ // si le tag est dans la requête
		$secondClass='  tagChecked'; // variable pour CSS
		$string=$queryString; // c'est ici que je ne sais pas quoi faire, il faudrait supprimer le tag de la requête
	}else{ // le tag n'est pas dans la requete
		if(empty($queryString)){
			$string=$tag;
		}else{
			$string=$queryString.'+'.$tag;
		}
	}
	echo'<a class="tag'.$secondClass.' "href="index.php?tags='.$string.'">'.$tag.'</a>';
}
J'ai essayé avec preg_replace pour supprimer le tag mais le soucis c'est que si un tag en contient un autre, toutes les occurrences seront supprimées.
J'ai pensé à dupliquer mon tableau tagRequest et supprimer le tag du tableau lorsqu'il est déjà présent mais problème lors de la boucle suivante... Le tag étant supprimé, tout est faussé

Bref, je n'arrive pas à résoudre ce problème.

Une piste ?

Merci.