Commentaire(s) Création de la page catégorie








Note :Si votre commentaire contient du code, sélectionner votre code avec votre souris puis utiliser la liste "Styles" et sélectionner "Code".


abghn378
Nombre de commentaire : 21

Commentaire(s)

  • #224 Commentaire de Shopping posté le 14/02/11 à 19:55:16 :
  • Shopping
  • Bonjour,
    Un grand merci pour ce tuto très détaillé et que je cherchais depuis pas mal de temps :)
    J'ai suivi pas à pas les explications fournies tout marche très bien sauf la page categorie.php (lister les articles appartenant à une catégorie)
    Pouvez-vous, s'il vous plaît, me fournir le code entier de la page categorie.php ?
    Cordialement

  • #225 Commentaire de c00lman posté le 14/02/11 à 20:26:39 :
  • c00lman
  • Bonjour,

    Qu'est ce qui ne fonctionne exactement ? Y a t'il une erreur qui s'affiche?

  • #226 Commentaire de Shopping posté le 14/02/11 à 21:01:24 :
  • Shopping
  • Merci pour votre réactivité... ca fait chaud au coeur de savoir qu'il y a quelqu'un derrière un site web  :)
    j'ai crée une catégorie Test que j'ai affiché via menu.php  mais lorsque je clique sur cette catégorie pour afficher les articles qu'elle contient j'ai l'erreur suivante : HTTP 500 (Echec de chargement de la page)

  • #227 Commentaire de c00lman posté le 15/02/11 à 08:25:01 :
  • c00lman
  • Salut,

    2 possibilitées à cette erreur : soit une erreur dans le code PHP soit une erreur dans le fichier .htaccess.
    Utilisez vous un hebergeur "pro" et le système d'url rewriting ou êtes vous sur un hébergement gratuit ?

    Ci dessous le fichier categorie.php telle qu'il est sur ma démo hébergé sous free.fr :

    <?php
    $id_transmit=$_GET['id'];
    if (!isset($_GET["id"]) OR !is_numeric($_GET['id'])){
    //Si la variable n'existe pas ou qu'elle n'est pas de type numérique, on redirige
    header('location:http://'.$_SERVER['HTTP_HOST'].'');
    }
    else{
    // on se connecte à la base de données
    include('connexion_bd.php');
    mysql_connect("$nom_du_serveur","$nom_utilisateur","$passe");
    mysql_select_db("$nom_de_la_base") or die('Impossible de s&eacute;lectionner une base de donn&eacute;e. Assurez vous d\'avoir correctement remplit les donn&eacute;es du fichier connexion_bd.php.');

    //On va chercher le nom et la description de la catégorie
    $nom_categorie = mysql_query("SELECT nom_categorie,description_categorie FROM CATEGORIES WHERE id='".mysql_real_escape_string($id_transmit)."'");
    while($cat = mysql_fetch_array($nom_categorie))
     {
          $titre_categorie=$cat['nom_categorie'];
          $description_categorie=$cat['description_categorie'];
     }
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" lang="fr-fr">

    <head>

      <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
      <title><?php echo $titre_categorie;?></title>
      <meta name="Description" content="<?php echo $description_categorie;?>" />

      <link href="style.css" rel="stylesheet" type="text/css"/>

    </head>

    <body>

    <div id="moncadre">
    <?php include('menu.php');?>

    <div class="cadrecentrale">
    <p>Vous êtes ici : <a title="Accueil" href="index.php">Accueil</a> » <a title="<?php echo $titre_categorie;?>" href="categorie.php?id=<?php echo $id_transmit;?>"><?php echo $titre_categorie;?></a></p>
    <h1>Cat&eacute;gorie "<?php echo $titre_categorie;?>"</h1>

    <?php
    //On va chercher tout ce qui rentre dans cette catégorie
    $page = mysql_query("SELECT id,titre,description FROM CONTENU WHERE id_categorie='".mysql_real_escape_string($id_transmit)."' ORDER BY id ASC");
    //on voie si il y a quelque chose
    if(mysql_num_rows($page) == 0)
    {
    //Si il n'y a rien, on informe le visiteur
    echo '<div class="cadre">Aucun article pour le moment dans la catégorie '.$titre_categorie.'.</div>';
    }
    else
    {
    //On affiche les pages qui correspondent à la catégorie et en l'occurence le titre et la description
    while($affiche = mysql_fetch_array($page))
     {
    echo '<div class="cadre"><h2><a title="'.$affiche['titre'].'" href="page.php?id='.$id=$affiche['id'].'">'.$affiche['titre'].'</a></h2><p>'.$affiche['description'].'</p></div>';
     }
    //On ferme les else
    }
    }
     // Fermeture de la connexion à la base de données
    mysql_close();
    ?>
    </div>

    <?php include('footer.php');?>

    </div>

    </body>

    </html>

  • #228 Commentaire de Shopping posté le 15/02/11 à 11:48:18 :
  • Shopping
  • Bonjour C00lman,
    Ca marche très bien avec le fichier fichier categorie.php que vous m'avez donner ! J'ai sûrement dû faire une erreur lors de l'écriture du code (Eh oui je ne fais pas du copier/coller, je réecris le tout pour mieux comprendre le fonctionnement )
    Merci de votre aide et longue vie à ton site.

    P.S : Peux-tu nous prépaper un tuto  Sécuriser un site en PHP contre les hackers et injections sql ?

  • #231 Commentaire de c00lman posté le 16/02/11 à 09:26:46 :
  • c00lman
  • Bonjour Shopping,

    Content que ça fonctionne et qu'enfin une personne cherche à comprendre sans faire de bêtes copier/coller ;).
    L'idée du tutoriel sur « comment sécuriser un site » est une bonne idée que je vais "creuser". Ceci dit, cette démo de site sur la création d'un site dynamique est normalement sécurisé puisque qu'il y a un contrôle des variables transmises par url et l'utilisation de mysql_real_escape_string().

    mysql_real_escape_string
    Protège les caractères spéciaux d'une commande SQL

  • #232 Commentaire de Shopping posté le 16/02/11 à 12:36:08 :
  • Shopping
  • Bonjour c00lman,
    Peux-tu nous dire quel est l'avantage de créer son propre site en PHP plutôt que d'utiliser un cms qu'on peut dézpper d'un simple clic (type wordpress, joomla, drupal et qui sont générallement bien optimiser pour le réferencement ) ?
    Merci

  • #233 Commentaire de c00lman posté le 16/02/11 à 13:54:20 :
  • c00lman
  • Salut Shopping,

    Ce qui suit est juste une opinion personnelle, pas une généralitée!

    C'est simple, la connaissance et la satisfaction d'avoir créer soit même son propre site. L'avantage, c'est que tu fais exactement ce que tu veux de ton site. Si ça "merde" quelque part, tu sais rapidement ou cherché puisque c'est toi qui l'a fait. Si tu as besoin d'ajouter quelque chose, tu sais forcément ou et comment t'y prendre.
    Sans forcément tout savoir sur tout, tu acquères au fure et à mesure un peut plus de connaissances et de maîtrise du langage qui t'ammène à repenser/améliorer ton site sans cesse. Perso, j'avais des attentes spécifiques pour ce site qu'aucun CMS ne pouvait m'apporter en natif et plutôt que de me resigner à utiliser bêtement un CMS que "tout le monde" possède et qui ne me convenait pas, j'ai décidé de me le créer:) et il en va de même pour mes autres sites.

    Utiliser un CMS, c'est avant tout ne pas se prendre la tête à vouloir comprendre comment ça fonctionne. C'est s'auto proclamer "webmaster" alors que l'on est tout juste "dezzipeur" :P! C'est également être dépendant d'un autre site pour "avancer" (plugins et compagnies) et personnellement je n'aime pas être dépendant de qui ou quoi que ce soit. Il est clair que la plupart des CMS que tu cites sont optimisés pour le référencement (bien qu'il y en est un dans la liste qui est plutôt du genre usine à gaz) mais c'est quoi le référencement ... des balises méta bien renseignées, une structure du site pas trop bancale, l'utilisation des bonnes balises (h1 à h6, strong, em, etc..), utilisation du css, un bon contenu, le maillage des pages avec le bon anchor, etc..., ce que peut faire tout le monde si on est pas trop allergique à la lecture et à la compréhension.
    Il faut  savoir que même le meilleurs CMS du monde ne peut rien faire en terme de positionnement si le contenu du site est "pourrit" et que son référencement laisse à désirer.

    Personnellement, je souhaitais créer mon propre CMS pour la gestion de ce site et je trouve que ça ma plutôt bien réussit pour le moment :). Après, c'est une question de choix ...

  • #235 Commentaire de Shopping posté le 16/02/11 à 14:58:05 :
  • Shopping
  • Bonjour c00lman,
    Réponse très convaincante, merci de l'avoir partagé .
    Je viens de replonger dans le tuto pour mieux le cerner, si j'ai besoin d'explications je n'hésiterais pas à en demander.
    Bonne journée

  • #237 Commentaire de c00lman posté le 16/02/11 à 16:25:59 :
  • c00lman
  • Bha de rien :). En même temps pour les personnes qui ne souhaite pas apprendre ou qui sont super pressé d'avoir un site, les CMS sont pratiques. Ils ont l'avantages d'être mis à jours régulièrement, d'avoir un nombre conséquent de plugins et de chartes graphiques gratos. Comme les CMS comporte généralement une communautée, il y a forcément un forum et donc des personnes qui peuvent apporter des contributions et des explications. Le bon côté, c'est que tout le boulot est "maché", le mauvais côté quand on y connait rien de rien, on est dépendant des solutions et de la bonne volontée des autres à nous aider.

    Bonne continuation ;).

  • #391 Commentaire de Foudu1030 posté le 25/05/11 à 21:29:22 :
  • Foudu1030
  • Bonsoir,
    Merci énormement pour ce tutoriel qui m'aprend énormement :)
    Mais avant d'avancer vers la fin du chapitre, j'aimerais savoir si la page categorie.php est composé de ceci :
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/ DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" lang="fr-fr">

    <head>

    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
    <title><?php echo $titre_categorie;?></title>
    <meta name="Description" content="<?php echo $description_categorie;?>" />

    <link href="style.css" rel="stylesheet" type="text/css"/>

    </head>

    <body>

    <div id="moncadre">
    <?php include('menu.php');?>

    <div class="cadrecentrale">
    <h1>Cat&eacute;gorie "<?php echo $titre_categorie;?>"</h1>


    <?php
    //On va chercher tout ce qui rentre dans cette catégorie
    $page = mysql_query("SELECT id,titre,description FROM CONTENU WHERE id_categorie='".
    mysql_real_escape_string($id_transmit)."' ORDER BY id ASC");
    //on voie si il y a quelque chose
    if(mysql_num_rows($page) == 0)
    {
    //Si il n'y a rien, on informe le visiteur
    echo '<div class="cadre">Aucun article pour le moment dans la catégorie '.$titre_catego rie.'.</div>';
    }
    else
    {
    //On affiche les pages qui correspondent à la catégorie et en l'occurence le titre et la description
    while($affiche = mysql_fetch_array($page))
    {
    echo '<div class="cadre"> <h2><a title="'.$affiche['titre'].'" href="page.php?id='.$id=$affiche['id'].' ">'.$affiche['titre'].'</a></h2> <p>'.$affiche['description'].'</p> </div>';
    }
    //On ferme les else
    }
    }
    // Fermeture de la connexion à la base de données
    mysql_close();
    ?> </div>

    <?php include('footer.php');?>

    </div>

    </body>

    </html>


    Ou bien, je dois aussi rajouter ce code :

    <?php
    //On récupère l'id transmit par l'url
    $id_transmit=$_GET['id'];
    if (!isset($_GET["id"]) OR !is_numeric($_GET['id'])){
    //Si la variable n'existe pas ou qu'elle n'est pas de type numérique, on redirige
    header('location:http://'.$_SERVER['HTTP_HOST'].'');
    }
    else{
    // on se connecte à la base de données
    include('connexion_bd.php');
    mysql_connect("$nom_du_serveur","$nom_utilisateur","$passe");
    mysql_select_db("$nom_de_la_base") or die('Impossible de s&eacute;lectionner une base de donn&eacute;e. Assurez vous d\'avoir correctement remplit les donn&eacute;es du fichier connexion_bd.php.');

    //On va chercher le nom et la description de la catégorie
    $nom_categorie = mysql_query("SELECT nom_categorie,description_categorie FROM CATEGORIES WHERE id='".mysql_real_escape_string($id_transmit)."'");
    while($cat = mysql_fetch_array($nom_categorie))
    {
    $titre_categorie=$cat['nom_categorie'];
    $description_categorie=$cat['description_categorie'];
    }
    ?>


    Merci d'avance ;)

  • #392 Commentaire de c00lman posté le 26/05/11 à 08:23:46 :
  • c00lman
  • Bonjour Foudu1030,

    La réponse est simple, il suffit de copier/coller les 4 codes du tutoriel 1 par un et dans l'ordre ou ils sont ;).

    Le premier code PHP permet de "remplir" les métatags du second code ainsi que la balise H1.
    Le troisième code permet de sélectionner tout les articles appartenant à la catégorie (id, titre et description).
    Le quatrième code est la fin du document.

  • #393 Commentaire de Foudu1030 posté le 26/05/11 à 12:44:11 :
  • Foudu1030
  • Merci beaucoup de la réponse très rapide qui va me permettre d'avancée :)

    Donc les codes Xhtml ou Php ne sont pas obliger de commencer par un doctype :) Je ne le savais pas ^^ (Je débute) :)

  • #394 Commentaire de c00lman posté le 26/05/11 à 16:45:40 :
  • c00lman
  • Oui c'est exacte, on peut tout à fait mettre du code PHP avant le doctype tant que celui-ci ne renvoie pas du texte avant le doctype au risque de défigurer la mise en page;).

  • #395 Commentaire de Foudu1030 posté le 26/05/11 à 17:45:51 :
  • Foudu1030
  • Ok, Coll merci du travail que tu fourni en tout cas ! :)

  • #568 Commentaire de David posté le 10/01/12 à 05:52:58 :
  • David
  • Bonjour,
    Merci pour toutes les explications grace à ces tutoriels mon site avance bien et j'ai apris beaucoup!

    J'ai une question n'y arrivant pas seul et malgrès tout mes test qui reste infructueux.

    Je voudrai afficher que 5 articles sur la page categories et un suivant précédent pour afficher les 5 suivants car ayant beaucoup d'articles cela fait une page qui fait 10kilometre de long et ce n'est pas très pratique.


    merci d'avance pour vos réponses.



  • #569 Commentaire de c00lman posté le 10/01/12 à 10:05:14 :
  • c00lman
  • Bonjour David,

    Effectivement, je n'ais pas pensé à inclure un sytème de pagination lors de la rédaction de ce tutoriel car mon intention première était de faire voir les bases de création d'un site dynamique et non un système de gestion de contenu complet.

    Ceci dit, l'inclusion d'une pagination pour les catégories demandes pas mal de modifications et prendrait beaucoup trop de place dans les commentaires...je vais donc rédiger un article dans le courant de la journée (si je trouve le temps) expliquant sa mise en place;).

  • #571 Commentaire de David posté le 10/01/12 à 15:03:55 :
  • David
  • Merci  et en tout cas bravo pour ta réactivité ! :)

  • #572 Commentaire de c00lman posté le 10/01/12 à 15:41:01 :
  • c00lman
  • Bha de rien :).
    Je viens de finir mes testes d'intégrations visibles sur le site de démo  http://creer.ton.site.free.fr et fonctionnel. Le tuto est finit mais pas encore au propre...il sera en ligne dans le courant de l'après-midi ou au pire dans la soirée.
    Je posterais un commentaire pour vous en informer :).

  • #574 Commentaire de David posté le 10/01/12 à 16:09:00 :
  • David
  • Encore merci !

    Je ne manquerai pas d'ajouter un lien sur mon site pour apporter ma contribution ;)