IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Module de news en php


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 39
    Points : 5
    Points
    5
    Par défaut Module de news en php
    Bonjour,
    J'essaye de mettre un module de news sur mon site, mais je rencontre plusieurs problèmes: En effet, j'ai crée un formulaire pour poster les news, et sur la page d'accueil, j'essaye d'afficher le titre, la catégorie, la date, et l'introduction. Mais ca ne marche pas! Il m'affiche uniquement le titre et la date (qui est faux). Et lorsque j'essaye de modifier pour ecrire a nouveau un intro ou categorie, ca ne se passe rien. Je clique sur envoyer, et si je reviens de nouveau sur cette meme news, alors mes modifications ne sont pas prise en compte.
    Je ne sais plus comment faire, est-ce qu'il y a quelqu'un qui peut m'aider?
    Mon code index.html:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    <?php
    $retour = mysql_query("SELECT * FROM news ORDER BY id DESC LIMIT 0, 10"); 
     
    while ($donnees = mysql_fetch_array($retour)) 
     
    { 
     
    ?> 
     
    <div class="news"> 
     
        <h3> 
     
            <?php echo $donnees['titre'].', '.$donnees['categorie']; ?> 
     
            <em>le <?php echo date('d/m/Y à H\hi', $donnees['timestamp']); ?></em> 
     
        </h3> 
     
     
     
         <p> 
     
         <?php 
     
         $introduction = nl2br(stripslashes($donnees['introduction'])); 
     
         echo $introduction; 
     
         ?> 
     
         </p> 
     
    </div> 
     
    <?php 
     
    } // Fin de la boucle des news. 
     
    ?>
    Fichier Liste_news:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    <?php
    if (isset($_POST['titre']) AND isset($_POST['contenu'])) 
    { 
        $titre = addslashes($_POST['titre']); 
        $introduction = addslashes($_POST['introduction']); 
        $contenu = addslashes($_POST['contenu']); 
        $categorie = addslashes($_post['categorie']); 
        // On vérifie si c'est une modification de news ou non. 
        if ($_POST['id_news'] == 0) 
        { 
            // Ce n'est pas une modification, on crée une nouvelle entrée dans la table. 
            mysql_query("INSERT INTO news VALUES('', '" . $titre . "', '" .$introduction . "', '" . $contenu . "',  '" .$categorie . "', '" . time() . "')"); 
        } 
        else 
        { 
            // On protège la variable "id_news" pour éviter une faille SQL. 
            $_POST['id_news'] = addslashes($_POST['id_news']); 
            // C'est une modification, on met juste à jour le titre et le contenu. 
            mysql_query("UPDATE news SET titre='" . $titre . "', introduction='" .$introduction . "', contenu='" . $contenu . "', categorie='" . $categorie . "' WHERE id='" . $_POST['id_news'] . "'"); 
        } 
    } 
     
    //-------------------------------------------------------- 
    // Vérification 2 : est-ce qu'on veut supprimer une news ? 
    //-------------------------------------------------------- 
    if (isset($_GET['supprimer_news'])) // Si l'on demande de supprimer une news. 
    { 
        // Alors on supprime la news correspondante. 
        // On protège la variable « id_news » pour éviter une faille SQL. 
        $_GET['supprimer_news'] = addslashes($_GET['supprimer_news']); 
        mysql_query('DELETE FROM news WHERE id=\'' . $_GET['supprimer_news'] . '\''); 
    } 
    ?> 
    <table><tr> 
    <th>Modifier</th> 
    <th>Supprimer</th> 
    <th>Titre</th> 
    <th>Date</th> 
    <th>Categorie</th> 
    </tr> 
    <?php 
    $retour = mysql_query('SELECT * FROM news ORDER BY id DESC'); 
    while ($donnees = mysql_fetch_array($retour)) // On fait une boucle pour lister les news. 
    { 
    ?> 
    <tr> 
    <td><?php echo '<a href="rediger_news.html?modifier_news=' . $donnees['id'] . '">'; ?>Modifier</a></td> 
    <td><?php echo '<a href="liste_news.html?supprimer_news=' . $donnees['id'] . '">'; ?>Supprimer</a></td> 
    <td><?php echo stripslashes($donnees['titre']); ?></td> 
    <td><?php echo date('d/m/Y', $donnees['timestamp']); ?></td> 
    <td><?php echo stripslashes($donnees['categorie']); ?></td> 
    </tr> 
    <?php 
    } // Fin de la boucle qui liste les news. 
    ?> 
    </table>
    Fichier rediger_news:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    <?php
    if (isset($_GET['modifier_news'])) // Si on demande de modifier une news. 
    { 
        // On protège la variable « modifier_news » pour éviter une faille SQL. 
        $_GET['modifier_news'] = mysql_real_escape_string(htmlspecialchars($_GET['modifier_news'])); 
        // On récupère les informations de la news correspondante. 
        $retour = mysql_query('SELECT * FROM news WHERE id=\'' . $_GET['modifier_news'] . '\''); 
        $donnees = mysql_fetch_array($retour); 
     
        // On place le titre, l'introduction et le contenu dans des variables simples. 
        $titre = stripslashes($donnees['titre']); 
        $introduction = stripslashes ($donnees['introduction']); 
        $contenu = stripslashes($donnees['contenu']); 
        $categorie = stripslashes($donnees['categorie']); 
        $id_news = $donnees['id']; // Cette variable va servir pour se souvenir que c'est une modification. 
    } 
    else // C'est qu'on rédige une nouvelle news. 
    { 
        // Les variables $titre et $contenu sont vides, puisque c'est une nouvelle news. 
        $titre = ''; 
        $introduction = ''; 
        $contenu = ''; 
        $categorie = ''; 
        $id_news = 0; // La variable vaut 0, donc on se souviendra que ce n'est pas une modification. 
    } 
    ?> 
    <form action="liste_news.html" method="post"> 
    <p>Titre : <input type="text" size="30" name="titre" value="<?php echo $titre; ?>" /></p> 
     
    <p> 
     Introduction :<br /> 
        <textarea name="introduction" cols="50" rows="10"> 
        <?php echo $introduction; ?> 
        </textarea><br /> 
        Contenu :<br /> 
        <textarea name="contenu" cols="50" rows="10"> 
        <?php echo $contenu; ?> 
        </textarea><br /> 
        Categorie : <input type="text" size="30" name="categorie" value="<?php echo $categorie; ?>" /> 
     
     
        <input type="hidden" name="id_news" value="<?php echo $id_news; ?>" /> 
        <input type="submit" value="Envoyer" /> 
    </p> 
    </form>
    Est-ce que vous pourriez m'aider? Merci,

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par david-18 Voir le message
    j'essaye d'afficher le titre, la catégorie, la date, et l'introduction. Mais ca ne marche pas! Il m'affiche uniquement le titre et la date (qui est faux).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo date('d/m/Y à H\hi', $donnees['timestamp']); ?>
    Il y a déjà une erreur il me semble à "H\hi", vérifie également le nom des champs en db pour la catégorie et l'introduction .

    Tu peux aussi tenter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    die($donnees['champs']);
    pour voir le contenu à l'écran

    Citation Envoyé par david-18 Voir le message
    Et lorsque j'essaye de modifier pour ecrire a nouveau un intro ou categorie, ca ne se passe rien. Je clique sur envoyer, et si je reviens de nouveau sur cette meme news, alors mes modifications ne sont pas prise en compte.
    Où est ta requête d'update des articles ?

  3. #3
    Futur Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 39
    Points : 5
    Points
    5
    Par défaut problème module de news en php
    Merci pour ta réponse...

    Pour le nom des champs, j'ai fais ceci:

    Introduction (Varchar/255)
    categorie (Varchar/30)

    "Où est ta requête d'update des articles ?"

    ? - J'ai mis un formulaire a la fin du fichier rediger_news.php

    Merci par avance, pour votre aide...

  4. #4
    Invité
    Invité(e)
    Par défaut
    dans ton code "introduction" est tout en minuscule or ici il y a une majuscule "Introduction" donc je te conseillerai de vérifier tous les noms de champs !

    Concernant la modification, comment veux tu passer de la validation du formulaire à la base de données sans faire d'update de cette dernière ?

  5. #5
    Futur Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 39
    Points : 5
    Points
    5
    Par défaut problème module de news en php
    Edit: C'est bon, je viens de corriger les problèmes.

    Par contre, il y a toujours le problème avec le timestamp.

    vous pourriez m'aider?

    merci,

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par dmcissokho Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo date('d/m/Y à H\hi', $donnees['timestamp']); ?>
    Il y a déjà une erreur il me semble à "H\hi"
    As-tu vérifié cela ?

  7. #7
    Futur Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 39
    Points : 5
    Points
    5
    Par défaut Problème timestamp
    En faite, j'ai enlevé le hi pour voir, mais c'est pas, si je fais ca, il n'écris pas du tout le minute mais il marque i...

    merci par avance pour votre aide

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bonjour, essaye de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    date("ton format", strtotime($donnees['timestamp']))
    Dernière modification par Invité ; 06/03/2013 à 12h02. Motif: réponse modifiée

  9. #9
    Futur Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 39
    Points : 5
    Points
    5
    Par défaut Problème timestamp
    J'ai déjà essayé comme ca, mais ca ne marche pas...

  10. #10
    Invité
    Invité(e)
    Par défaut
    qu'as tu en résultat ou message d'erreur ?

  11. #11
    Futur Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 39
    Points : 5
    Points
    5
    Par défaut Problème timestamp
    j'ai aucun message d'erreur. La date affiché reste la même: 31/12/1969 à 19h00

  12. #12
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2004
    Messages : 108
    Points : 175
    Points
    175
    Par défaut
    Bonjour,

    Quel est le contenu de $donnees['timestamp'] ?
    Parce que en gros ta date est la date classique que renvoie date() avec un timestamp à 0 ou très bas et en prenant en compte le décalage horaire je pense .

  13. #13
    Futur Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 39
    Points : 5
    Points
    5
    Par défaut Problème timestamp
    Dans la base de donnée tu veux dire?

  14. #14
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2004
    Messages : 108
    Points : 175
    Points
    175
    Par défaut
    Oui mais pas besoin de regarder directement dans la bdd, fait un petit print_r($donnees['timestamp']) et regarde le résultat .

    Edit :
    En fait je vais expliquer ce que je pense, tu insère dans ta base un timestamp avec time(). Sauf que si je ne me trompe pas mysql attend une valeur formaté comme suit : Y-m-d H:i:s.
    Donc dans ton insertion il faudrait faire un date('Y-m-d H:i:s'); au lieu d'un time()

  15. #15
    Futur Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 39
    Points : 5
    Points
    5
    Par défaut Problème timestamp
    En faite, j'ai changé quelque peu pour voir ce que ca donne, et j'ai mis ca:
    Nom: date_creation
    type: timestamp
    Default: current_timestamp
    Attributs: on update current_timestamp

    En faisant cela, il supprime la date et met 0000-00-00 00:00:00

  16. #16
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2004
    Messages : 108
    Points : 175
    Points
    175
    Par défaut
    Ok donc dans ce cas tu n'as plus besoin de setter quoi que ce soit dans ton code . Mysql va s'occuper de remplir ce champ tout seul

  17. #17
    Invité
    Invité(e)
    Par défaut
    Jusque là rien de plus normal si tu n'as pas changer tes valeurs après la modification

  18. #18
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par TERRA126 Voir le message
    Ok donc dans ce cas tu n'as plus besoin de setter quoi que ce soit dans ton code . Mysql va s'occuper de remplir ce champ tout seul
    Le problème reste entier vu qu'il s'agit de l affichage

  19. #19
    Futur Membre du Club
    Inscrit en
    Septembre 2009
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 39
    Points : 5
    Points
    5
    Par défaut Problème timestamp
    Citation Envoyé par dmcissokho Voir le message
    Jusque là rien de plus normal si tu n'as pas changer tes valeurs après la modification
    C'est mon dernière modification. Mais je ne comprends toujours pas pourquoi il ne marche pas

    C'est bizarre, parce que j'ai toujours utilisé la même code pour la date, et j'ai jamais eu de problème. Je ne sais pas d'ou peut venir le problème maintenant

  20. #20
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2004
    Messages : 108
    Points : 175
    Points
    175
    Par défaut
    Supprime cette partie là de ton insert , '" . time() . "' et met un , NULL ou un , NOW() à la place.

Discussions similaires

  1. module GD sur apache/php sur dreambox
    Par zwitterion dans le forum Administration système
    Réponses: 4
    Dernier message: 02/12/2007, 02h22
  2. [Conception] module de news dynamique
    Par caroen dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 13/04/2007, 15h00
  3. News sous PHP
    Par fourniey dans le forum Flash
    Réponses: 2
    Dernier message: 22/12/2006, 19h27
  4. [MySQL] module de recherche en php
    Par kro35 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 31/05/2006, 14h17
  5. [HTML/PHP]Créer un module de news
    Par Link14 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 10/02/2006, 21h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo