lien pointant vers ID d'une table mysql

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : lien pointant vers ID d'une table mysql

par Cyrano » 16 nov. 2006, 09:21

Je te suggère de laisser de coté le PHP pour commencer par mettre au point ta requête SQL : quand celle-ci sera fonctionnelle et te retournera ce que tu attends, alors il sera temps de l'intégrer, mais vouloir faire SQL et PHP en même temps, c'est tout faire pour attraper un sévère mal de tête quand on est pas trop familier avec l'ensemble.

Pour mettre au point ta requête, utilise phpMyAdmin en utilisant un paramètre "en dur". Après, on verra comment mettre un paramètre dynamiquement dans la requête avec PHP.

par supermotarde » 15 nov. 2006, 23:55

ok, je commence à m'embrouiller donc voilà ce que j'ai dans le fichier qui liste les astuces:
<?php 
$requete ="select *from astuces where picast='system';";
$resultat = mysql_query ($requete);

for ( $i = 0 ; $i < mysql_num_rows ($resultat) ; $i++){
mysql_data_seek ($resultat, $i);
$ligne = mysql_fetch_object ($resultat);
while(false != ($ligne = mysql_fetch_assoc($resultat))) 
{ 
    echo("<a href=\"astucesystem.php?id=". $ligne['idast'] ."\">". $ligne['nomast'] ."</a>"); 
} 
echo "<hr>";
}
?>
et dans le fichier qui est censé détailler l'astuce selectionnée uniquement:
  <?php
$requete ="select *from astuces where picast='system';";
$resultat = mysql_query ($requete);

for ( $i = 0 ; $i < mysql_num_rows ($resultat) ; $i++){
mysql_data_seek ($resultat, $i);
$ligne = mysql_fetch_object ($resultat);
$idast = $_GET['id']; 
echo " ".$ligne->idast."</p>";
echo " ".$ligne->memast."</p>";
echo "<hr>";
}
?>
:roll:

par Cyrano » 15 nov. 2006, 23:26

Quand je parle de clause WHERE, il faut comprendre que je fais référence à une requête SQL.

La structure de base d'une requête sera la suivante :

Code : Tout sélectionner

SELECT champ_1[, champ_2[, champ_n[],...]] FROM table_1[, table_n[, ...]] WHERE champ_x = 'valeur';
Fais des essais et si tu n'y arrives pas, montre-nous ce que tu auras fait et on corrigera.

par supermotarde » 15 nov. 2006, 23:22

merci ça vient bon, :wink:
mais la clause where je la place où?

par Cyrano » 15 nov. 2006, 22:35

Lorsque tu construis ta page, tu dois avoir une boucle où, à chaque tour, tu récupères des informations sur chaque astuce. Tu affiches donc déjà un titre dans le lien, on est bien d'accord ? Tout ce qu'il te reste à faire, c'est d'ajouter un élément au passage : le paramètre dans l'url du lien, donc quelque chose comme :
while(false != ($ligne = mysql_fetch_assoc($ressource)))
{
    echo("<a href=\"page_astuce.php?id=". $ligne['idast'] ."\">". $ligne['nomast'] ."</a>");
}
Ensuite, dans la page de l'astuce détaillée, tu récupères ce paramètre :
$idast = $_GET['id'];
Là, tu peux faire une requête en mettant dans une clause WHERE :

Code : Tout sélectionner

... WHERE `idast` = ". $idast ."
Et ne récupérer donc que les information de cette astuce seulement.

C'est plus simple comme ça ?

par supermotarde » 15 nov. 2006, 22:08

oui la théorie est très claire, mais c la pratique qui me pose encore problème,
pourrait on me donner un exemple, ou l'ajuster sur mon code? :oops:

par Cyrano » 15 nov. 2006, 20:52

Il faut que chaque lien correspondant à une astuce comporte un paramètre identifiant ladite astuce, de telle sorte que la page qui va s'ouvrir récupère via un code PHP l'identifiant : une requête avec une clause WHERE sur la colonne idast va te retourner uniquement une ligne si elle existe. Ensuite tu n'auras plus qu'à afficher les éléments de cette astuce, et de celle-ci seulement.

Est-ce que tu visualises mieux le schéma comme ceci ?

par charabia » 15 nov. 2006, 20:51

Pour celà il faut que dans ton URL tu passes par exemple l'ID en paramètre.

Tu afficheras ensuite l'astuce en question grâce à ta requête avec la clause WHERE. Par exemple WHERE id=$_GET['id'].

lien pointant vers ID d'une table mysql

par supermot » 15 nov. 2006, 20:48

bonjour

voilà j'execute une requête pour afficher une liste d'astuces, mais j'aimerais que le lien html renvoie vers l'astuce cliquée uniquement.
pour l'instant le lien renvoie vers le contenu de toutes les astuces de la liste.
je ne sais évidemment pas à l'avance quelle astuce l'internaute va choisir de consulter.

les champs de ma base sont :
idast (incrementé)
nomast (titre de l'astuce)
memast (contenu de l'astuce)
picast (categorie de l'astuce)

et voici le php:
$requete ="select nomast from astuces where picast='system';";
$resultat = mysql_query ($requete);

<?php 
for ( $i = 0 ; $i < mysql_num_rows ($resultat) ; $i++) 
{ 
mysql_data_seek ($resultat, $i); 
$ligne = mysql_fetch_object ($resultat); 
echo "<font color=#0000FF> <b><a href=\"astucesys.php\">".$ligne->nomast."</font></b></p>"; 
echo "<hr>"; 
} 
?>


je ne sais pas comment faire,
merci!