Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[Grand Debutant] Creer des liens ve rs des fiches a partir d'une liste

3 réponses
Avatar
GizMecano
Bonjour à tous,

Au risque de me faire taper sur les doigts, je me permets de poser une
question que je prends la *précaution* de présenter comme étant celle
d'un grand débutant parmi les méandres du PHP utilisé pour afficherdes
données MySQL.

Cependant, après plusieurs longues heures de recherches avec mon ami
Google, et malgré plusieurs essais à partir de différents tutoriels
trouvés ici et là, sans parler de la lecture en diagonale des deux
différents manuels, je ne comprends tout simplement pas ce qui me semble
bien être une *fonction de base* de la génération de pages dynamiques.
Alors, j'ose faire appel à vous, et tant pis pour mes doigts. :(

Mon but est simple. J'ai une base de données contenant des informations
à propos de différentes personnes. Je créée tout d'abord une liste
contenant les données essentielles relatives à ces personnes :

> <?php
> // Ouverture de la connexion
> $lien=mysql_connect ($serv, $user, $pass) or die ("Pas de connexion avec le serveur");
> // Ouverture de la base
> mysql_select_db($base) or die ("Pas de base existante");
> // Création de la liste des personnes par ordre alphabétique
> $liste=mysql_query ("SELECT nom, prenoms FROM personnes ORDER BY nom ASC");
> // Calcul du nombre de personnes dans la liste
> $nombre= mysql_numrows($liste);
> // Affichage du nombre de personnes dans la liste
> echo "<h2>Personnes : " ,$nombre, "</h2>";
> // Boucle de récupération des données
> while($donnee=mysql_fetch_array($liste))
> // Affichage des données sous forme de liste
> {echo ,"<li>", $donnee["nom"], " (", $donnee["prenoms"], ") </li>" ;}
> // Fermeture de la connexion
> mysql_close($lien);
> ?>

Maintenant, j'aimerais pouvoir ajouter à chaque ligne de cette liste un
lien vers une fiche contenant cette fois-ci les informations détaillées
relatives à chacune de ces personnes.

Je crois avoir compris comment créer un script pour cette requête en
précisant la recherche sur des critères particuliers :

> $fiche=mysql_query ("SELECT * FROM personnes WHERE 1 AND nom='Duchemol' and prenoms='Toto'");

Ce qui, j'imagine, devrait donc pouvoir s'écrire sous cette forme si je
veux mettre cette requête en liaison avec la liste que je viens de créer :

> $fiche=mysql_query ("SELECT * FROM personnes WHERE 1 AND nom=$donnee["nom"] and prenoms=$donnee["prenoms"]");

Après, je n'arrive pas à comprendre si je dois créer deux fichiers
différents (l'un pour la liste et l'autre pour les fiches) et si tel est
le cas, comment créer un lien de manière dynamique entre les deux. J'ai
essayé plusieurs méthodes, mais je n'obtiens que des erreurs, même en
reprenant une partie de mon bon code de la liste, et comme je ne connais
pas le moyen qui permet de voir le code php d'une page que je visite sur
internet et que je considère comme exemplaire par rapport à ce que je
veux faire, je me sens impuissant ... :(

Je sais, c'est sans doute simple. Mais je dois avoir mal compris la
syntaxe de ce genre de requête car mes recherches d'informations sont
restées pratiquement infructueuses, en dehors de script d'annuaires de
liens, ce qui n'est pas ce que je cherche à faire... Quand aux tutoriaux
que j'ai trouvé, ils semblent étrangement s'arrêter après les fonctions
de base d'affichage ou de calcul... Si vous avez des bonnes adresses, si
possible en français, je suis preneur...

Avec mes sincères excuses pour cette question basique,

--Giz.

3 réponses

Avatar
Le Fou
GizMecano a écrit
(...)
Mon but est simple. J'ai une base de données contenant des informations
à propos de différentes personnes. Je créée tout d'abord une liste
contenant les données essentielles relatives à ces personnes :
(...)
Maintenant, j'aimerais pouvoir ajouter à chaque ligne de cette liste un
lien vers une fiche contenant cette fois-ci les informations détaillées
relatives à chacune de ces personnes.
(...)
Après, je n'arrive pas à comprendre si je dois créer deux fichiers
différents (l'un pour la liste et l'autre pour les fiches) et si tel est
le cas, comment créer un lien de manière dynamique entre les deux.


Personnellement (club de plongée) je n'utilise qu'une seule table dans ma
BdD, qui contient TOUS les renseignements pour chaque personne.
Ensuite je fais 2 fichiers .php, "membres.php" et "membres1.php".
Avec le premier je ne récupère que les données principales dans ma table et
j'en fais un tableau, qui permet donc d'avoir tous les membres d'un seul
coup d'oeil. A la fin de chaque ligne je fais un lien :
<a href="membres1.php?Nom=$Nom&Prenom=$Prenom"><img src="oeil.gif"></a>
et dans le fichier "membres1.php" je récupère toutes les données du membre
que je présente sous forme de fiche personnelle :
$resultat = mysql_db_query("$base","select * from $tb_membres WHERE
Nom='$Nom' AND Prenom='$Prenom'",$connexion);
Voilou ;-)

--
A'tchao

Le Fou
http://perso.club-internet.fr/ehiller/
http://club.exocet.free.fr/
http://www.ffessm-cd84.com/

Avatar
nicol
Salut

Au risque de me faire taper sur les doigts, je me permets de poser une
question que je prends la *précaution* de présenter comme étant celle
d'un grand débutant parmi les méandres du PHP utilisé pour afficherdes
données MySQL.


pas de pb :-)

Cependant, après plusieurs longues heures de recherches avec mon ami
Google, et malgré plusieurs essais à partir de différents tutoriels
trouvés ici et là, sans parler de la lecture en diagonale des deux
différents manuels, je ne comprends tout simplement pas ce qui me semble
bien être une *fonction de base* de la génération de pages dynamiques.
Alors, j'ose faire appel à vous, et tant pis pour mes doigts. :(


vas-y, tu fais bien, on n'a rien sans rien :-)

Mon but est simple. J'ai une base de données contenant des informations
à propos de différentes personnes. Je créée tout d'abord une liste
contenant les données essentielles relatives à ces personnes :

<?php
// Ouverture de la connexion
$lien=mysql_connect ($serv, $user, $pass) or die ("Pas de connexion avec
le serveur");


// Ouverture de la base
mysql_select_db($base) or die ("Pas de base existante");
// Création de la liste des personnes par ordre alphabétique
$liste=mysql_query ("SELECT nom, prenoms FROM personnes ORDER BY nom
ASC");


// Calcul du nombre de personnes dans la liste
$nombre= mysql_numrows($liste);
// Affichage du nombre de personnes dans la liste
echo "<h2>Personnes : " ,$nombre, "</h2>";
// Boucle de récupération des données
while($donnee=mysql_fetch_array($liste))
// Affichage des données sous forme de liste
{echo ,"<li>", $donnee["nom"], " (", $donnee["prenoms"], ") </li>" ;}
// Fermeture de la connexion
mysql_close($lien);
?>



oki

Maintenant, j'aimerais pouvoir ajouter à chaque ligne de cette liste un
lien vers une fiche contenant cette fois-ci les informations détaillées
relatives à chacune de ces personnes.


tu rajoutes un href dans ton echo:

remplace la ligne suivante :
echo ,"<li>", $donnee["nom"], " (", $donnee["prenoms"], ") </li>" ;

par le bloc suivant :

$nom_personne=$donnee["nom"];
$prenom=$donnee["prenoms"];
$lien="fiche.php?nom=".$nom_personne."&prenom=".$prenom;
echo("<LI><a href="$lien">$nom_personne ($prenoms)</a></LI>");

il faut que tu crées un fichier fiche.php et tu recuperes les parametres nom
et le prenom dans $HTTP_GET_VARS["nom"] et $HTTP_GET_VARS["prenom"]

Dans cette nouvelle page, tu fais la requete php que tu envisageais :

$fiche=mysql_query ("SELECT * FROM personnes WHERE nom="$nom" AND
prenoms="$prenom"");

Après, je n'arrive pas à comprendre si je dois créer deux fichiers
différents (l'un pour la liste et l'autre pour les fiches) et si tel est
le cas, comment créer un lien de manière dynamique entre les deux. J'ai
essayé plusieurs méthodes, mais je n'obtiens que des erreurs, même en
reprenant une partie de mon bon code de la liste, et comme je ne connais
pas le moyen qui permet de voir le code php d'une page que je visite sur
internet et que je considère comme exemplaire par rapport à ce que je
veux faire, je me sens impuissant ... :(


essaie ce que je te disais ci dessus :-)
comme ca, sur chaque nom de personne, tu as un lien qui renvoie vers tjs le
meme fichier fiche.php
mais qui ne contient pas les memes parametres à chaque fois, comme ca, sur
cette derniere page, tu peux refaire une recherche sql pour avoir une fiche
comprenant toutes les infos sur une personne en particulier :-)

Je sais, c'est sans doute simple.


pas forcément ...

Avec mes sincères excuses pour cette question basique,


pas de quoi

Si je n'ai pas répondu à ta question, précise-la;
Dans ts les cas, dis-nous si ca fonctionne, stp.

bye
Nico


Avatar
Guillaume Bouchard
GizMecano wrote:
Cependant, après plusieurs longues heures de recherches avec mon ami
Google, et malgré plusieurs essais à partir de différents tutoriels
trouvés ici et là, sans parler de la lecture en diagonale des deux
différents manuels,


Si tout le monde faisait pareil ;o)

mysql_select_db($base) or die ("Pas de base existante");



Ou probleme de connection

// Création de la liste des personnes par ordre alphabétique
$liste=mysql_query ("SELECT nom, prenoms FROM personnes ORDER BY nom
ASC"); // Calcul du nombre de personnes dans la liste



$sql = SELECT nom, prenoms FROM personnes ORDER BY nom ASC";
$mist = mysqluqery($sql) or die(mysql_error().$sql);

Maintenant, j'aimerais pouvoir ajouter à chaque ligne de cette liste un
lien vers une fiche contenant cette fois-ci les informations détaillées
relatives à chacune de ces personnes.

Je crois avoir compris comment créer un script pour cette requête en
précisant la recherche sur des critères particuliers :

$fiche=mysql_query ("SELECT * FROM personnes WHERE 1 AND
nom='Duchemol' and prenoms='Toto'");



Oui, sauf le where 1, ca sert a rien :)

$fiche=mysql_query ("SELECT * FROM personnes WHERE 1 AND
nom=$donnee["nom"] and prenoms=$donnee["prenoms"]");



Oublie pas les guillemets plus les eventuels addslashes
$sql = "SELECT * FROM personnes WHERE
nom='".addslashes($donnee["nom"])."' and prenoms=
'".addslashes($donnee["prenoms"])."'";

Tu decouvriras aussi grace au or die qui suit que l'erreur dans ta
requete ( des guillemets) bloquait tout.

Après, je n'arrive pas à comprendre si je dois créer deux fichiers
différents (l'un pour la liste et l'autre pour les fiches) et si tel est
le cas, comment créer un lien de manière dynamique entre les deux.


C'est à toi de voir. Perso j'ai l'habitude: 1 action = 1 fichier mais tu
peut facilement faire 1 seul fichier. Si il recoit en entrée un nom, il
affiche les infos de ce nom, sinon la liste.

J'ai
essayé plusieurs méthodes, mais je n'obtiens que des erreurs,


Lequelles ?

même en
reprenant une partie de mon bon code de la liste, et comme je ne connais
pas le moyen qui permet de voir le code php d'une page que je visite sur
internet et que je considère comme exemplaire par rapport à ce que je
veux faire, je me sens impuissant ... :(


Tu ne pas peux le voir. Celui ci est executer par php qui renvoie au
serveur une belle page tout propre qu'il te renvoie. C'est totalement
transparent pour toi.

Donc reprenons.
Il te suffit de faire des liens dans ta liste du genre

page.php?nom=truc

Et après, dans page.php

if(!empty($_REQUEST['nom'])){
// info d'un nom
} else {
// liste avec des liens
}

J'espere que ce fut clair.

--
Guillaume.