formulaire

béka
Invité n'ayant pas de compte PHPfrance

12 mai 2006, 09:08

Bonjour tout le monde,

je suis novice en php, et j'aurais voulu savoir comment faire pour afficher dans une page php uniquement un ou deux champs d'une table de la BDD. Et lorsqu'on clique sur un de ces champs, on a la totalité du contenu de la table qui s'affiche a l'écran. Par exemple, j'ai des articles (imaginons une centaine) et je ne veux pas afficher tous les articles sur la meme page, je veux juste afficher les titres des articles. Et lorsque l'utilisateur va cliquer sur le titre de l'article, il pourra voir le titre, l'auteur, l'article, la date de création de l'article...

Merci pour votre aide

Mammouth du PHP | 19672 Messages

12 mai 2006, 09:18

Salut,
Très schématiquement, il te faudra faire une requête ne listant que les identifiants et les titres de tes articles : dans ta page, tu les affiches sous la forme de liens comportant en paramètre l'identifiant de chaque article, par exemple :
<ul>
  <li><a href="./mapage.php?idart=1">Article 1</a></li>
  <li><a href="./mapage.php?idart=2">Article 2</a></li>
  <li><a href="./mapage.php?idart=3">Article 3</a></li>
  ...
</ul>
Dans la page, au chargement, tu récupères le paramètre :
$idart = isset($_GET['idart']) ? $_GET['idart'] : null;
Ensuite, si il n'y a pas d'identifant envoyé, tu envoie les titres seulement, mais s'il y a un identifiant, tu effectues alors une autre requête SQL avec une clause WHERE contenant ce paramètre pour extraire toutes les informations nécessaires sur cet article particulier.

Est-ce que tu visualises ce schéma ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 59 Messages

12 mai 2006, 09:21

Dans une seule page ca va etre chiant ... Je te conseille plutot d'en créer deux.
<?
/////////////////////
//Premiere Page//
////////////////////
//requete SQL
$sql = "SELECT id, titre FROM `livre`" ;
$req = mysql_query($sql);
//Boucle d'affichage des liens qui affiche le titre est envoie l'id
while ($affichage = mysql_fetch_row($req)){ ?>
<a href="page2.php?id=<?echo $affichage[0];?>"><?echo $affichage[1];?> </a>
<? } ?>
<?
////////////////////////
//Deusieme Page//
///////////////////////
//Recupération de l'id envoyer par page1
$id = $_GET['id'] ;
//requete sql
$sql = "SELECT id, titre, auteur, date FROM `livre` WHERE id='$id'" ;
$req = mysql_query($sql); 
// affichage des informations
$affichage = mysql_fetch_row($req);
echo "titre :".$affichage[1]."auteur : ".$affichage[2]."date : ".$affichage[3] ;
?>
EDIT : correction d'erreurs
Modifié en dernier par PsykoCors le 12 mai 2006, 09:42, modifié 4 fois.

béka
Invité n'ayant pas de compte PHPfrance

12 mai 2006, 09:23

non je comprends pas très bien. En fait, le truc ce serait de faire des liens avec uniquement les id des champs de ma tables.
Mais je comprends vers quoi (précisément) ces liens pointent, et de quelle manière cela s'organise.
Je suis dsl, mais ça ne fait que quelques semaine que je me suis mis à php et j'ai quelques difficultés.

béka
Invité n'ayant pas de compte PHPfrance

12 mai 2006, 09:29

ok je pense avoir compris PsykoCors.

Avec deux pages ça sera plus simple pour moi... on verra dans quelques moi (quand je serais expert... lol) si je décide de ne faire qu'une page.

Merci, je vais essayer et si j'ai des problèmes ou si ca marche, je reviendrais vous le dire

Mammouth du PHP | 19672 Messages

12 mai 2006, 09:41

Avec une seule page, c'est on ne peut plus simple : selon le principe que j'ai exposé plus tôt
<?php
// Je récupère mon paramètre s'il existe :
$idart = isset($_GET['idart']) ? $_GET['idart'] : null;
// S'il y a un paramètre, je vais afficher l'article
if(isset($idart))
{
    $sql = "SELECT nom, description, prix, ... FROM table_article WHERE id = ". $idart .";";
    //... reste du code, exécution de la requête, récupération des infos et affichage de la page article
}
// S'il n'y a pas de paramètre, j'affiche la liste
else
{
    $sql = "SELECT id, nom FROM table_article";
    //... reste du code, exécution de la requête, récupération des infos et affichage de la liste
}
?>
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

béka
Invité n'ayant pas de compte PHPfrance

12 mai 2006, 10:42

je l'ai fais avec deux pages, mais lorsque je veux faire des liens avec un autre champs que l'id comme le poste a pourvoir (champ=poste) par exemple (car mon site va etre une sorte d'anpe pour un lycée) ca ne marche pas.

Le champ poste se trouve à la 5ème place dans mon tableau.
Voila mon code :
$sql = "SELECT poste FROM `offre_stage`" ;
$req = mysql_query($sql);
//Boucle d'affichage des liens qui affiche le titre est envoie l'id
while ($affichage = mysql_fetch_row($req)){ ?>
<a href="offre_stage2.php?id=<? echo $affichage[4]; ?>"><? echo $affichage[4]; ?> </a>
<? } ?>

Avatar du membre
ViPHP
ViPHP | 3008 Messages

12 mai 2006, 11:02

Mets ça à la place :
<?php echo $affichage['poste']; ?>

béka
Invité n'ayant pas de compte PHPfrance

12 mai 2006, 11:09

non ca marche toujours pas, j'ai essayé avec ce code :
<?
/////////////////////
//Premiere Page//
////////////////////
//requete SQL
$sql = "SELECT id, poste FROM `offre_stage`" ;
$req = mysql_query($sql);
//Boucle d'affichage des liens qui affiche le titre est envoie l'id
while ($affichage = mysql_fetch_row($req)){ ?>
<a href="offre_stage2.php?id=<? echo $affichage['id']; ?>"><? echo $affichage['poste']; ?> </a>
<? } ?>
et ca me met le message d'erreur suivant :
Notice: Undefined index: poste in c:\program files\easyphp1-8\www\hippolyte\etudiant\offre_stage.php on line 57
la ligne 57 étant <a href...

Mammouth du PHP | 19672 Messages

12 mai 2006, 11:11

remplace mysql_fetch_row() par mysql_fetch_array() sans modifier le reste et refais le test.

Note : le formulaire de saisie de messages du forum comporte des boutons pour encadrer le code, fais donc un tour sur les règles du forum. J'ai modifié tes messages, mais ce serait bien que tu le fasse toi-même.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

béka
Invité n'ayant pas de compte PHPfrance

12 mai 2006, 11:15

ok meci, effectivement c'était juste ca. Une faute d'inattention toute bête. Merci beaucoup.

Désolé cyrano pour l'affichage de mes message, j'ai pas fais attention.
Je ferais gaffe à présent.

Par contre en tant qu'invité je ne peux mettre le sujet en résolu. Je te laisse le faire?

béka
Invité n'ayant pas de compte PHPfrance

12 mai 2006, 11:32

une derniere question rapidement, est-il possible de regrouper les liens,. C'est à dire ne mettre qu'un lien, lorque l'intitulé du champ "poste" est le meme, qui pointe vers deux ou plusieurs champs "intitulé".
En fait, je veux faire un lien pour afficher sur une autre page plusieurs linformations.

J'espere que c'est assez clair...

Mammouth du PHP | 19672 Messages

12 mai 2006, 11:51

J'espere que c'est assez clair...
:shock: ... pas vraiment non :-k
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 1353 Messages

12 mai 2006, 12:00

En fait, je veux faire un lien pour afficher sur une autre page plusieurs linformations.
Si c'est ta question, ce dont je ne suis pas sûr :| , tu peux passer plusieurs paramètre dans une url comme tu le fais en mettant un '&' entre les variables....
<a href="page.php?var1=...&var2=...">lien</a>
Modifié en dernier par guilt92 le 12 mai 2006, 12:02, modifié 1 fois.

béka
Invité n'ayant pas de compte PHPfrance

12 mai 2006, 12:02

En fait voila, le truc c'est que j'ai selectionner pour faire le lien, le champ "poste" qui corespond au poste recherché par les entreprises (mon site est une sorte d'ampe pour un lycée). Seulement voila, plusieur entreprises peuvent rechercher le meme poste (comme un commercial par exemple) et je ne voudrais pas que "commercial" apparaissent 15 fois par exemple s'il y a 15 entreprises qui cherchent des commerciaux. Au contraire je voudrais qu'il n'apparraisse qu'une fois en tant que lien qui redirige vers l'affichage complet des 15 intitulés des 15 offres d'emplois concernant les commerciaux sur ma deuxieme page.

Ce serait une sorte d'affichage thématique...

C'est plus clair cette fois?