Système de news
Hors ligneZingwai Le 19/08/2007 à 09:33 Profil de Zingwai Configuration de Zingwai

Bonjour.

J'ai créé mon système de news avec proposition de news par les membres inscrits et administration des news ( validation, dévalidation, suppression et modification).

Seulement, je bloque totalement pour la modification des news par les membres.
Si un membre veut modifier sa news et qu'il confirme la modification ça doit envoyer la modification de la news à la validation.
Cependant, sa news non modifiée doit toujours être en ligne sans les modifications.

Seulement, lorsque la news modifiée arrive dans la validation, elle a une id différente de celle non modifiée et il faudrait juste que ce soit le statut qui soit différent et non l'id (car moi ce sont les deux qui sont différents).

Si vous avez la solution à mon problème...

Merci !
Hors ligneAnthony Le 19/08/2007 à 11:41 Profil de Anthony Configuration de Anthony

Admin
Salut,

C'est juste un problème de conception à mon avis. Rajoute un champ pour chacune des news qui contient un texte "mis à jour" ainsi qu'un champ par exemple appelé "validation_edit", qui contiendra soit 0 soit 1 si tu dois afficher l'édition. Ensuite lorsque tu updates ta news, c'est le contenu du champ normal qui sera affiché tant que validation_edit sera égal à 0. Dès que tu valides l'édition, tu copies le contenu du champ edit dans le contenu du texte normal.
--

Hors ligneZingwai Le 20/08/2007 à 08:04 Profil de Zingwai Configuration de Zingwai

J'ai compris le principe seulement il y a deux choses que je ne comprend pas vraiment.

- Le champ validation_edit est sur 0 par défaut et sur 1 si on veut mettre en ligne. Mais la modifications ou est-elle enregistrée pendant ce temps là ? Car le texte non modifié doit rester intact avant la validation de la modification.
- Comment écrasé l'ancien texte après validation de la modification ?
Hors ligneAnthony Le 20/08/2007 à 17:21 Profil de Anthony Configuration de Anthony

Admin
Ton ancien texte est contenu dans un champ, et le nouveau texte dans un autre. Quand tu valides, tu écrases l'ancien texte par le nouveau avec une requête du type UPDATE table SET champ1=champ2 WHERE id_news=...
--

Hors ligneZingwai Le 21/08/2007 à 10:42 Profil de Zingwai Configuration de Zingwai

Bonjour.

Une question stupide mais la modification pour moi ne contient que la requête permettant d'afficher la news et le titre.

Je n'ais pas de requête UPDATE nul part...
Hors ligneErce78 Le 21/08/2007 à 12:18 Profil de Erce78 Configuration de Erce78

et bien il faut la créer !

Le SELECT sert à intérroger, le INSERT à insérer et le UPDATE à modifier.
Si j'ai bien suivi, il faut d'abord créer dans ta table, un nouveau champ pour prendre en compte les modifications. Lors de la procédure de validation, il faut par une requete "UPDATE" prendre le contenu du nouveau champ ayant reçu la modification (et vider ce champ par la même occasion) et le mettre dans le champ d'affichage de la news. La champ validation_edit doit être positionné à 1 pour dire qu'il y a une modif à valider et être remis à 0 quand la modif est validée.

Il n'y a pas besoin de deux enregistrements par cette methode.

J'ai l'impression de pas être clair donc si tu as un soucis post ton bout de code.
--
Que ta route soit parsemée de jasmin
Hors ligneAnthony Le 21/08/2007 à 12:39 Profil de Anthony Configuration de Anthony

Admin
Le problème est qu'il souhaite conserver une trace de l'ancien enregistrement, donc à moins de passer par un système de bbcode "cachant" l'ancien texte (qui serait contenu dans le même champ que le nouveau donc) je ne vois pas comment faire sans mettre deux champs texte, un pour l'ancien texte et l'autre pour le nouveau
--

Hors ligneErce78 Le 21/08/2007 à 14:18 Profil de Erce78 Configuration de Erce78

Ce que j'avais compris c'est qu'il utilisait deux enregistrements dans la table. Ce qui ne me semblait pas génial. la taille de la base risquerait d'être disproportionnée pour une gestion de news. Quand à l'administartion...

La solution avec des champs pour le même enregistrement me semble bien. Mais je vois pas l'intérêt de conserver le texte original après la validation. d'où l'idée d'updater le 1° champ et avec le second après la validation par le modérateur. En plus de cette manière, il ne se prend pas la tête à gérer un champ si modification et un autre si pas modification. Et enfin que se passe-t-il sur l'utilisateur fait quatre modifications ? Va-t-il devoir multiplier les champs. A ce moment là autant créer un champ pour l'historique des modifications où il va tout stock en bloc ou tableau sans avoir nécessairement besoin de bbcode.

Je suis désolé, je suis peut-être hors sujet. Je suis plusieurs chose en même temps, dsl.
--
Que ta route soit parsemée de jasmin
Hors ligneAnthony Le 21/08/2007 à 17:08 Profil de Anthony Configuration de Anthony

Admin
Si l'utilisateur fait 4 modifications, tant que la dernière modification n'est pas validée, elle écrase la précédente, donc tu peux en faire une infinité :) Enfin je voyais ça comme ça
--

Hors ligneZingwai Le 21/08/2007 à 17:26 Profil de Zingwai Configuration de Zingwai

J'ai compris le principe que vous m'avez expliqué.

Mais pour mon système de modification, je ne fais qu'appel à quelques champs des news et voici ce que ça donne grosso-modo :


<?php

if(!empty($_GET['modif']))
{
     $id mysql_real_escape_string($_GET['modif']);
     $reponse mysql_query("SELECT * FROM news WHERE id = '" $id "'");
     $donnees mysql_fetch_assoc($reponse);
     
     if
($donnees)
     {
          $titre htmlspecialchars($donnees['titre']);
          $texte htmlspecialchars($donnees['news']);
?>
     
     <p><form action="mes_news.html" method="post" name="poster">
</p>
<fieldset>
          <legend>Modifier ma news</legend>

          <label for="titre">Titre : </label><input type="text" name="titre" id="titre" tabindex="40" size="50" value="<?php echo $titre;?>"> 
          
                    <br />
<?php
formulaire
(''$texte);
?>

          <br /><br />
<p><input type="hidden" name="id" value="<?php echo $id;?>" /></p>
     <div style="text-align: center;"><input type="submit" name="send" value="Envoyer" tabindex="50" accesskey="s" /></div>
     </fieldset>
</form>

<?php
}
     else
     
{
          echo '<h2>News inexistante</h2>';
               echo '<p>Vous allez être redirigé dans 3 secondes.<br />Cliquez <a href="mes_news.html">ici</a> si vous ne souhaitez pas attendre.</p>';
               echo '<meta http-equiv="Refresh" content="3;URL=mes_news.html">';
     }
     
}
?>


Et dans tous ça, à quel endroit dois-je mettre la requête d'UPDATE ?

Merci ^^
Vous avez résolu votre problème avec VIC ? Faites-le savoir sur les réseaux sociaux !
Vulgarisation-informatique.com
Cours en informatique & tutoriels