récupérer les données d'une page pour une autre

Petit nouveau ! | 7 Messages

03 mars 2010, 14:41

Bonjour à tous, voici mon souci (comme je suis nouveau en php, je ne m'y connais pas encore trop bien).
J'ai une page catégorie1 sur laquelle j'ai deux articles (SELECT * FROM articles where categorie=1) et une page categorie2 sur laquelle j'ai trois articles (SELECT * FROM articles where categorie=2). Je pense que c'est clair.
j'aimerais que lorsque je clique sur un de ces articles (qui sont déjà cliquable) ils s'affichent sur une page par exemple solo.php et uniquement sur cette page (je ne voudrais pas avoir plusieurs page car si j'ai 50 articles, je me vois mal créer 50 pages differentes, une pour chaque articles). Donc comment faire pour que cette page solo.php récupère les infos de cet article (que j'ai cliquer) qui se trouve sur la page categorie1 ou categorie2. j'espère avoir été clair là !!. merci de votre aide
Ma table se nomme articles et elle possède un champ id, titre, body, date

Mammouth du PHP | 985 Messages

03 mars 2010, 15:57

Avec la méthode $_GET de transmission de variables.
http://www.w3schools.com/php/php_get.asp

Cf: l'exemple de formulaire dans le lien ci-dessus.

Ensuite, l'url va être du type:
http//:www.ton_site.com/solo.php?categorie=1&article=2

Dans la page solo.php, exemple simplifié:
// si l'url contient bien les 2 variables $_GET categorie et article
if (isset($_GET['categorie'], $_GET['article'])) {

     // Si categorie=1
     if ($_GET['categorie'] == 1) {
                  
          // Si article=2
          if ($_GET['article'] == 2) {
             echo 'article 2 de la catégorie 1 sélectionné';
          }
     }
}
else {
echo 'Aucun article sélectionné';
}
http://php.net/manual/fr/function.isset.php

Ensuite pour aller plus loin, tu as l'instruction switch:
http://php.net/manual/fr/control-structures.switch.php

Très pratique je pense pour ce que tu veux faire...
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.

Petit nouveau ! | 7 Messages

03 mars 2010, 16:50

Tout d'abord, merci d'avoir répondu si vite, génial la communauté.
Mais je ne comprend pas trop quel est le rapport entre le $_get et ma table existante. c'est assez dur à expliquer.
Donc je suis sur ma page categorie1.php et là j'ai deux articles qui apparaissent avec un titre cliquable et son contenu. Pour l'ouvrir dans une autre page, moi je fais en général:
voici un extrait de ma page categorie1.php

$art = mysql_query("SELECT * FROM articles where categorie=1"); // Requête SQL


// On fait une boucle pour lister tout ce que contient la table :

while ($article = mysql_fetch_array($art) )
{
?>
<p>
<a href="solo.php" title="titre"><?php echo $article['titre']; ?><br /></a>
<?php echo $article['article']; ?><br />
</p>
<?php
}


donc j'en arrive à un lien de mon titre qui est cliquable et donc comment récupérer avec un $_get les infos qui sont dans ma table articles, ça je ne le comprend pas ! car je n'ai pas besoin de formulaire, mes données sont déjà dans une table. =P~

ViPHP
ViPHP | 2291 Messages

03 mars 2010, 18:40

Salut,

Une autre solution avec un seule fichier article et détail
L'idée par du principe que chaque article possede un id unique.
<?php
//Page solo.php.//
$detail = (isset($_GET['detail']) ? $_GET['detail'] : null);
switch ($detail)
 {
  case 'visuarticle':
        $id = (isset($_GET['id']) ? $_GET['id'] : null);

        $art = "SELECT * FROM articles where id= '".mysql_real_escape_string($id)."'"; // Requête SQL
        $req = mysql_query($art) or die('Erreur SQL !'.$art.'<br>'.mysql_error());
        $dt =  mysql_fetch_array($req);

         	//ici le détail de l'article. $dt['article'] etc...

    break;

  default;
        $art = "SELECT * FROM articles where categorie=1"; // Requête SQL
        $req = mysql_query($art) or die('Erreur SQL !'.$art.'<br>'.mysql_error());

        while ($article = mysql_fetch_array($req) )
         {
         	echo '<a href="solo.php?detail=visuarticle&id='.$article['id'].'" title="titre">' . $article['titre'] . '</a>';
         	echo $article['article'];
         }

    break;
 }
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.