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.
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 .
[u][b]J'ai donc trois tables :[/b][/u]
-article : id_article....
-article_avoir_mot_cle id_article,id_mot_cle
-mot_cle : id_mot_cle, mot_cle_intitule
[u][b]Et voici le code :[/b][/u]
[php]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>';
}[/php]
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.