Après avoir réussi à insérer les articles dans la base de données dont voici le code :
$villages=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST["villages"])));
$categorie=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['categorie'])));
$titre_article=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['titre_article'])));
$texte_article=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['texte_article'])));
$auteur_article=mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['auteur_article'])));
// Insertion de l'article dans la base de données
$req_insertion_articles = "INSERT INTO articles (nom_village,nom_categorie, date_depot, titre_article, texte_article, auteur_article) VALUES ('$villages','$categorie', now(), '$titre_article', '$texte_article', '$auteur_article')";
$query_insertion_articles = mysql_query($req_insertion_articles) or die ('Erreur sur la requête SQL concernant l\'insertion des articles'.mysql_error()); // Envoie une requête à un serveur MySQL
J'aimerais les afficher (selon deux conditions), ça ça marche. Seul problème, les accents, j'aimerais que lorsqu'il y a des accents, qu'ils s'affichent correctement. Je vous mets le code (j'ai mis comme titre : Mon premier article titre et comme contenu de l'article : Contenu Article) :
$messagesParPage=5; // Nombre de messages affichés par pages
$retour_total=mysql_query('SELECT COUNT(*) AS id_article FROM articles WHERE nom_categorie = "categorie" AND nom_village = "village"') or die ('Erreur sur la requête SQL concernant le calcul du nombre d\'articles concernant'.mysql_error()); // Envoie une requête à un serveur MySQL - Récupération du contenu de la requête dans $retour_total
$donnees_total=mysql_fetch_assoc($retour_total); // Rangement de $retour_total sous la forme d'un tableau
$total=$donnees_total['total']; // Récupération du total pour le placer dans la variable $total
// Comptage du nombre de pages
$nombreDePages=ceil($total/$messagesParPage);
if(isset($_GET['page'])) // Si la variable $_GET['page'] existe...
{
$pageActuelle=intval($_GET['page']);
if($pageActuelle>$nombreDePages) // Si la valeur de $pageActuelle (le numéro de la page) est plus grande que $nombreDePages...
{
$pageActuelle=$nombreDePages;
}
}
else
{
$pageActuelle=1; // La page actuelle est la n°1
}
$premiereEntree=($pageActuelle-1)*$messagesParPage; // Calculer la première entrée à lire
// La requête SQL pour récupérer les messages de la page actuelle
$retour_messages=mysql_query('SELECT * FROM articles WHERE nom_categorie = "categorie" AND nom_village = "village" ORDER BY id_article DESC LIMIT '.$premiereEntree.', '.$messagesParPage.'') or die ('Erreur sur la requête SQL concernant le nombre d\'articles concernant le village et la catégorie'.mysql_error()); // Envoie une requête à un serveur MySQL
while($donnees_messages=mysql_fetch_assoc($retour_messages)) { // Lecture des entrées une à une grâce à une boucle
// Affichage des messages avec le design
// nl2br : Insère un retour à la ligne HTML à chaque nouvelle ligne - pour prendre en compte les sauts de ligne dans le message.
echo ''.nl2br(mysql_real_escape_string(htmlspecialchars(stripslashes($donnees_messages['titre_article'])))).',
----
'.nl2br(mysql_real_escape_string(htmlspecialchars(stripslashes($donnees_messages['texte_article']))).',
----
Posté par : '.(stripslashes(mysql_real_escape_string(htmlspecialchars($donnees_messages['auteur_article']))))).' le '.mysql_real_escape_string(htmlspecialchars(stripslashes($donnees_messages['date_depot']))).'
';
// Ajout des sauts de ligne pour espacer les messages (
)
}
echo 'Page : '; // Centrer la liste des pages pour l'affichage
for($i=1; $i<=$nombreDePages; $i++) // Boucle
{
// Condition
if($i==$pageActuelle) // S'il s'agit de la page actuelle
{
echo ' [ '.$i.' ] ';
}
else
{
echo ' [page.php?page='.$i.' '.$i.'] ';
}
}
echo '
';
}
Voici le résultat affiché sur la page :
Mon premier article titre
Contenu Article
Posté par : auteur le 2013-02-16 11:36:30
A noter que j'utilise un éditeur TINYMCE pour poster le contenu de l'article. Donc, quand j'en écrit un, ça met automatiquement des balises HTML telles que
ou /
.
Lorsque je vais sur PHPMyAdmin, je vois le contenu de l'article avec les balises HTML (qui permettent la mise en page).
Est-ce qu'il faut que je fasse quelque chose dans la requête SQL pour ne pas qu'il enregistre la mise en page (je ne crois pas mais je pose quand même la question) ? Ou lors de l'affichage du message ?
En gros, j'aimerais que les articles s'affichent sans balises HTML de sorte à qu'ils soient lisibles tout simplement...
En attendant vos réponses, je continue mes recherches...
Cordialement
-création d'un fichier .htaccess à la racine en mettant :
AddDefaultCharset UTF-8
Je l'ai fait désormais quand j'essaie d'insérer un article (où j'ai mis comme titre : Mon premier article - titre et comme contenu d'article : Contenu Article), ça me met l'erreur suivante :
Erreur sur la requête SQL concernant l'insertion des articlesYou have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''village','categorie', now(), 'Mon premier article - titre', '<p&g' at line 1
On dirait que ça bloque à partir du contenu de l'article ('<p&g').
Qu'en pensez-vous ?
A noter que ce sont les balises HTML de mise en page qui font planter sinon la requête SQL fonctionne...
En attendant vos réponses, je continue mes recherches...
Cordialement
. Il y a du mieux mais il y a toujours des bugs. Je vous mets le code PHP complet pour que vous y voyez un peu plus clair :
$villages=mysql_real_escape_string(strip_tags($_POST["villages"]));
$categorie=mysql_real_escape_string(htmlspecialchars(strip_tags($_POST['categorie'])));
$titre_article=mysql_real_escape_string(htmlspecialchars(strip_tags($_POST['titre_article'])));
$texte_article=mysql_real_escape_string(htmlspecialchars(strip_tags($_POST['texte_article'])));
$auteur_article=mysql_real_escape_string(htmlspecialchars(strip_tags($_POST['auteur_article'])));
// Insertion de l'article dans la base de données
$req_insertion_articles = "INSERT INTO articles (nom_village,nom_categorie, date_depot, titre_article, texte_article, auteur_article) VALUES ('$villages','$categorie', now(), '$titre_article', '$texte_article', '$auteur_article')";
$query_insertion_articles = mysql_query($req_insertion_articles) or die ('Erreur sur la requête SQL concernant l\'insertion des articles'.mysql_error()); // Envoie une requête à un serveur MySQL
Je vous mets le résultat obtenu :
Mon premier article - contenu - monuments à visiter du village d\'nbbbv
Comme vous le voyez, il ne reste plus à transformer les codes des caractères spéciaux HTML en lettres (ici :
à
en à) et à enlever le caractère d'échappement devant la quote.