8797 sujets

Développement web côté serveur, CMS

Bonsoir à tous,

Je suis entrain de faire un site utilisant les base de donnée. J'ai une rubrique "Article" dans ma table j'ai ces différents champs : id, vignette, titre, auteur, date, intro, contenu.

En arrivant dans la rubrique Article on voit les derniers articles avec ces champs affichés : le titre, la vignette, l'auteur, la date et l'intro (texte d'intro) et enfaite je voudrais faire un lien (lire la suite par exemple) qui affiche tout l'article, mais sans avoir à recrée une autre page manuellement.

Désolé pour le titre du topic peu explicit mais je ne savais pas trop comment le nommé sachant que je début en Php.

Merci pour vos réponses.
a vrai dire je trouve pourtant mieux d'avoir 2 pages séparées une avec la description d'une seul bidule et l'autre avec une liste de news/articles/annonces. c'est plus simple pour travailler sur la mise en page de chacune.

mais bon je suis nul en mise en page alors de quoi je me mele Smiley eek

mais sinon rien ne t'empeche de coller le contenu du.... contenu quoi Smiley cligne . dans une div qui sera invisible au depart et va apparaitre quand tu cliqueras sur le lien en savoir plus. tous ça avec les css display:hidden/display:block ( ou inline parfois)
Alors enfaite je me suis mal fait comprendre, mais c'est normal j'ai pas très bien expliqué la chose lol.

Je vais essayer d'être plus clair :

Dans ma pages ARTICLES :

J'ai donc ma liste d'articles avec une photo, un texte d'intro, l'auteur de l'article et la date d'envois.
Tout ceci est stocké dans ma base de donnée (ainsi que le contenu complet texte de l'article).

Et enfaite je voudrais en cliquant sur le lien appeler l'articles complet qui se chargerais sur cette même pages (bien sur on ne verait plus le reste des articles).
a écrit :
qui se chargerais sur cette même pages


grosse exigence non?

acceptes -tu qu'il y est un rechargement de page ou non?

si non

tu peux étendre en js voir en ajax ce que je t'ai expliqué juste pour eviter un rechargement de page. et soit alors effacer tous les items sauf un a qui tu ajoute un truc. soit réécrire le contenu de la page en utilisant DOM et ajax.

voir avec pro du javascript


si oui


alors c'est faisable il te faut recuperer l'id de l'article. et si un id existe tu fais une requete et affiche un seul article avec le contenu. et s'il n'y a pas d'id tu affiche la liste de tous les articles.



mais pourquoi ne pas faire une autre page?

on est en php cette nouvelle page n'est a ecrire qu'une seule fois et ce comportera dynamiquement en affichant a chaque fois l'item voulu. il te suffit de passe un id dans le lien pour connaitre l'item .


mais moi je te conseille d'ecrire une nouvelle page dynamique. ça ira trés vite et ce sera facile vu ce que tu as du déjà réaliser. et le code sera plus simple que de tous fourrer dans un seul fichier.
Modifié par CPascal (26 Jan 2008 - 23:18)
Oui voila au pire faire une nouvelle page avec le contenu, non enfaite ce que je ne voulais pas c'est une page pour chaques articles enfaite!

Est-ce que tu peux me mettre sur la voie (liens vers tutos ou autres) pour pouvoir faire ma deuxième page dynamiquement pour charger mes données stp? merci!
pour faire ta deuxieme page il te suffit de faire un copier-coller de celle de la liste.

( dans la liste les liens en savoir plus on un href du genre
 href="detailarticle.php?id=<?php echo $row['id']; ?>" 
en supposant que $row est la variable contenant l'enregistrement)

de supprimer la partie affichant tous les articles

de recuperer l'id passer sur le lien en rajoutant vers le debut.
 if (isset($_GET['id'])) $id=$_GET['id'];


tu fais la requete qui te donne juste les resultat de cet id. ( et qui remplace celle prenant tous les artciles )


if (isset($id) ) {
$query = "select * from ta_table where id =".$id;
$res = mysql_query($query) or die ($query);
$row = mysql_fetch_assoc($res);
}


tu exploites les données de $row, par exemple $row['contenu']. et tu fais quelques ajustement visuel et voila tout.

la page detailarticle.php marchera pour tous tes articles.

pour des tutaux expliquant ça j'ai pas trop sous la main.

http://www.lephpfacile.com/howto/2-un-script-de-news
peut-être une lecture utile mais c'est pas exactement ça . dsl
Modifié par CPascal (26 Jan 2008 - 23:47)
Bonjour !

Pour complèter le message de CPascal, il faut absolument modifier deux choses :

Tout d'abord, ne jamais utiliser aveuglément une donnée qui provient de l'utilisateur (le paramètre $_GET['id']). C'est la voie ouverte aux injections SQL.

Il faudrait donc remplacer cette ligne
if (isset($_GET['id'])) $id=$_GET['id'];


Par ceci :

if(isset($_GET['id'])===TRUE && strlen(trim($_GET['id'])))>0 && ctype_digit(trim($_GET['id'])))===TRUE)
{
  $id=trim($_GET['id']);
  $query = "select * from ta_table where id =".$id;
  $res = mysql_query($query) or die ($query);
  
  // On regarde si on a bien eu un résultat
  if(mysql_num_rows($res)==1)
  {
    // On récupère le tuple
    $row = mysql_fetch_assoc($res);
    
    // Et on fait l'affichage
    // (cf. les explications de CPascal)
  }
  else
  {
    // On n'a trouvé aucun article correspond à cet identifiant
    // ==> On fait un message d'erreur   
    echo('Désolé, aucun article ne correspond à cet identifiant');
  }
}


Par ailleurs au lieu d'utiliser SELECT * dans ta requête SQL, ce serait mieux de nommer tous les champs dont tu as besoin. Ca d'évite d'une part de faire transférer des données que tu n'utilisera pas, et ca te permet de voir du premier coup d'oeil les données que tu utilises sur cette page quand tu ré-ouvrira ce script dans un an ou deux.

En espérant que ca aide Smiley smile
Merci à vous deux!

Même si je n'y vois pas bien clair lol. J'ai regarder ton lien CPascal mais sa ne ma pas trop aidé à ce sujet, si vous avez des autres tutos ce rapprochant de ma requètes Smiley biggrin

merci!