Gestion des mots clés

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 : Gestion des mots clés

Re: Gestion des mots clés

par macgawel » 25 nov. 2011, 11:33

Bonjour.

Première chose à faire : vérifier tes variables.
- Au début du script, affiche le contenu de $_POST => print_r($_POST);
- Une fois que tu as récupéré les mots-clés présents dans la BDD, affiche-les => print_r($cache_tags);
- Une fois que tu as traité les mots-clés récupérés, affiche-les => print_r($post_tags);
- Pour chaque cas (mot-clé vide, déjà existant, inexistant) affiche un message incluant la valeur du mot-clé.


- N'oublie pas de passer les requêtes d'insertion après les avoir affichées :mrgreen:

Gestion des mots clés

par Invité » 24 nov. 2011, 21:58

Bonjour,

J'essaye de créer un code permettant de comparer les mots clés en bases et ceux rentrer par l'utilisateur dans un textarea avec une virgule entre chaque mot.

L'objectif est soit d'ajouter le ou les nouveaux mots clés en base ou soit les lier à l'article .

J'ai donc trois tables :

-article : id_article....
-article_avoir_mot_cle id_article,id_mot_cle
-mot_cle : id_mot_cle, mot_cle_intitule


Et voici le code :
include('connect_pdo_new.php');
 
if(!empty($_POST['submit']))
{	
	$mot_cle = $_POST['mot_cle'];
	$id_article = $_POST['id_article'];
 
	echo'<form action="mot_cle.php" method="post" name="formulaire">'; 
	echo'<label for="mot_cle">Mots Clés : </label><br /><br /><center><textarea name="mot_cle" cols="70" rows="10">'.$mot_cle.'</textarea><br />';
	echo'<input type="hidden" name="id_article" value="'.$id_article.'" />';
	echo'<input type="submit" value="Envoyer" name="submit" />';
 
	//on va chercher les mots clés déjà présents
	include('connect_pdo_new.php');
	$sql_mot_cle = $bdd->prepare('SELECT id_mot_cle, mot_cle_intitule FROM pevtt_mot_cle');
	$sql_mot_cle->execute();
	while($tab_mot_cle = $sql_mot_cle->fetch())
	{
		$cache_tags[$tab_mot_cle['mot_cle_intitule']] = $tab_mot_cle;
	}
 
	# Intégration des mots clés
	$post_tags = array_map('trim', explode(',', $_POST['mot_cle']));
	$post_tags = array_map('strtolower', $post_tags); // Minuscules
 
	foreach($post_tags as $mot_cle)
	{
		if(empty($mot_cle)) // Si le mot_cle est vide on passe au suivant
			continue;
 
		# Recherche mot_cle
		foreach($cache_tags AS $cache_key => $cache_tag)
		{
			if($cache_tag['mot_cle_intitule'] == $mot_cle) # Le mot_cle existe
			{
				$id_mot_cle = $cache_key;
				continue;
			}
		}
 
		/* Le mot_cle existe pas */
		if(!isset($id_mot_cle))
		{
			echo'INSERT INTO pevtt_mot_cle(mot_cle_intitule) VALUES(\''.$mot_cle.'\')';
			echo '<br />';
			$id_mot_cle = mysql_insert_id();
		}
 
		echo'INSERT INTO pevtt_article_avoir_mot_cle(id_article, id_mot_cle) VALUES(\''.$id_article.'\', \''.$id_mot_cle.'\')';
		echo'<br />';
	}
}
else
{
	//prochain id autoincrement
	$sql_prochain_id_article = $bdd->prepare('SHOW TABLE STATUS LIKE "pevtt_article"');
	$sql_prochain_id_article->execute();
	$tab_prochain_id_article = $sql_prochain_id_article->fetch();
	$id_prochain_article = $tab_prochain_id_article['Auto_increment'];
 
	echo'<form action="mot_cle.php" method="post" name="formulaire">'; 
	echo'<label for="mot_cle">Mots Clés : </label><br /><br /><center><textarea name="mot_cle" cols="70" rows="10"></textarea><br />';
	echo'<input type="hidden" name="id_article" value="'.$id_prochain_article.'" />';
	echo'<input type="submit" value="Envoyer" name="submit" />';
 
	echo'</form>';
}
Cependant, cela ne fonctionne pas. Rien ne se passe comme il faut. Les requêtes ne se déclenches pas comme il faut.

Merci pour vos lumières.