Page 1 sur 2

formulaire

Posté : 12 mai 2006, 09:08
par béka
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

Posté : 12 mai 2006, 09:18
par Cyrano
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 ?

Posté : 12 mai 2006, 09:21
par PsykoCors
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

Posté : 12 mai 2006, 09:23
par béka
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.

Posté : 12 mai 2006, 09:29
par béka
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

Posté : 12 mai 2006, 09:41
par Cyrano
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
}
?>

Posté : 12 mai 2006, 10:42
par béka
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>
<? } ?>

Posté : 12 mai 2006, 11:02
par charabia
Mets ça à la place :
<?php echo $affichage['poste']; ?>

Posté : 12 mai 2006, 11:09
par béka
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...

Posté : 12 mai 2006, 11:11
par Cyrano
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.

Posté : 12 mai 2006, 11:15
par béka
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?

Posté : 12 mai 2006, 11:32
par béka
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...

Posté : 12 mai 2006, 11:51
par Cyrano
J'espere que c'est assez clair...
:shock: ... pas vraiment non :-k

Posté : 12 mai 2006, 12:00
par guilt92
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>

Posté : 12 mai 2006, 12:02
par béka
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?