Attribuer une valeur à une variable en cliquant sur un lien

Attribuer une valeur à une variable en cliquant sur un lien - PHP - Programmation

Marsh Posté le 05-02-2010 à 11:27:26    

Bonjour,
Voilà ça fait que 10 jours que je me suis mis au php alors soyez indulgents.
Mon but est de faire un site avec un base sql qui permet de créer un menu avec seulement les choses qui concernent les utilisateurs.
Jusque là j'ai réussi :)  Maintenant mon soucis c'est que je veux créer des liens (si possible) ou des boutons (mais c'est moins bien) qui donnent une valeur à une variable pour faire changer le corps du site en fonction du lien sur lequel ils ont cliqué dans le menu (en l'occurrence des barrages)

 

mon script :

 

<?php
mysql_connect("localhost", "root", "" );
mysql_select_db("coursphp" );
$mail = $_SESSION['bonmail'];
$reponsebarrages = mysql_query("SELECT barrages, lecture, ecriture FROM autorisations WHERE mail='$mail'" )or die(mysql_error());
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
   <head>
   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
   <link rel="stylesheet" media="screen" type="text/css" title="Design" href="miseenpage.css" /><!--Lien avec miseenpage pour les styles-->
   </head>
   <body class=menu>
   <h1 class=titremenu>Menu utilisateur</h1>
 <p class=corpsmenu>
 <form>
 <a href="compte.php">Compte utilisateur</a><br>
 </form>
 <?php while ($donneesbarrages = mysql_fetch_array($reponsebarrages))
 {
 ?>
 <form action="index.php" method="post">
 <input type="hidden" name="optionmenu" value=$donneesbarrages['barrages'] />
 <input type="submit" name="optionmenu" value=<?php echo $donneesbarrages['barrages'];?> /><br>
 <?php } ?>
 </form>
 </p>
   </body>
</html>

 


-Bon je sais pas comment mettre la coloration syntaxique désolé (si vous savez comment faire merci de m'éclairer)
-En gros, ici le menu affiche tous les barrages sur lesquels les utilisateurs peuvent agir(dans un formulaire). Le soucis c'est que je veux envoyer une variable session avec le nom du barrage sur lequel ils ont cliqué pour que le corps du site affiche ce qu'ils peuvent faire. ($donneesbarrages['barrages'] affiche le nom des barrages. ce qu'il faut faire c'est refaire toute la partie deuxième formulaire (en le remplaçant par des lien ou autre) pour que quand on clique sur le nom d'un barrage la variable $_SESSION['optionmenu'] prenne comme valeur le nom du barrage.
-Dernier truc : Pourquoi quand dans ma première requête si je met $_SESSION['bonmail'] à la place de $mail ça marche plus? il faut quoi comme syntaxe?
Merci d'avance pour votre aide

 

EDIT : Bon en fait comme un con j'avais pas essayé mon script qui envoie bien la bonne valeur en post donc ça marche. Par contre je trouve pas ça très propre donc si vous avez mieux, je suis intéressé.


Message édité par k'stor le 05-02-2010 à 12:05:41
Reply

Marsh Posté le 05-02-2010 à 11:27:26   

Reply

Marsh Posté le 05-02-2010 à 12:03:59    

Mouais, ca va etre tres tres long car il te manque pas mal de notions on dirait (rien de honteux a debuter bien au contraire, mais dur dans un forum de tout dire en qq lignes).  
Le premier truc a comprendre est quelle partie de code s'execute cote client et cote serveur et comment une page web est construite.  
Deux cours sur developpez.com ici et la te permettront de degrossir un peu...
Bonne chance !

Reply

Marsh Posté le 05-02-2010 à 12:21:07    

merci pour ta réponse. C'est quoi qui ne convient pas dans ma page? Je vais lire tes liens mais je suis très très pressé! donc faut que je puisse rendre un site fonctionnel le plus vite possible et je l'améliorerai par la suite. Peu de gens iront le voir et il y aura des sauvegardes quotidiennes alors il a pas besoin d'être hyper sécurisé . Maintenant toutes remarques m'intéressent
Tu n'as pas répondu à ma principale question : est-ce qu'en cliquant sur un lien je peux attribuer une valeur à une variable autrement qu'en faisant un GET (quand même pas assez sécurisé) ou un formulaire.
Tu pourras peut-être me dire si tu connais un site où on peut trouver des modules. Je cherche particulièrement pour l'identification/création de compte et l'affichage de graphiques.
Pour l'identification /création j'ai presque fait un truc qui semble potable avec des vérifs mails... mais s'il en existe un qui n'a pas de faille je suis preneur.


Message édité par k'stor le 05-02-2010 à 12:24:58
Reply

Marsh Posté le 05-02-2010 à 14:29:03    

Code :
  1. <?php
  2. mysql_connect("localhost", "root", "" );
  3. mysql_select_db("coursphp" );
  4. $mail = $_SESSION['bonmail'];
  5. $reponsebarrages = mysql_query("SELECT barrages, lecture, ecriture FROM autorisations WHERE mail='$mail'" )or die(mysql_error());
  6. ?>
  7.  
  8. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  9. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
  10.   <head>
  11.   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  12.   <link rel="stylesheet" media="screen" type="text/css" title="Design" href="miseenpage.css" /><!--Lien avec miseenpage pour les styles-->
  13.   </head>
  14.  
  15. <body class=menu>
  16.   <h1 class=titremenu>Menu utilisateur</h1>
  17. <p class=corpsmenu>
  18. <form>
  19. <a href="compte.php">Compte utilisateur</a><br>
  20. </form>
  21. <?php while ($donneesbarrages = mysql_fetch_array($reponsebarrages))
  22. {
  23. ?>
  24. <form action="index.php" method="post">
  25. <input type="hidden" name="optionmenu" value=$donneesbarrages['barrages'] />
  26. <input type="submit" name="optionmenu" value=<?php echo $donneesbarrages['barrages'];?> /><br>
  27. <?php } ?>
  28. </form>
  29. </p>
  30.   </body>
  31. </html>


 
Voilà ton code "coloré", il suffit de le mettre entre les balises [c o d e=p h p] [ / code] (sans les espaces).
 
Bon si je comprend bien, tu as générer ton menu automatiquement selon l'utilisateur et tu veux qu'en cliquant sur le lien du menu, une variable soit modifiée.
 
Le plus simple est d'utiliser un lien comme ça :

Code :
  1. <a href="url.php?mavariable=mavaleur>lien</a>


 
Ensuite dans ta page cible tu récupère la valeur par un:

Code :
  1. $mavaleur=$_GET['mavariable']


 
Tu n'a pas besoin de sécurité si c'est juste pour transmettre une variable pour afficher une page.
 

Reply

Marsh Posté le 05-02-2010 à 14:38:27    

Merci pour ta réponse et la coloration syntaxique.
Ce que tu m'explique c'est la méthode GET le soucis c'est que je veux pas l'utiliser pour avoir un minimum de sécurité : ça m'oblige à vérifier que l'id de la personne est bien autorisée en plus de récupérer la variable pour afficher la page. j'aimerais utiliser le mode POST qui me permet d'être sur que si la variable a été créée c'est que la personne a les autorisations.  
Je crois que ma méthode FORM est pas sii mal finalement. Si tu as mieux je suis toujours preneur!

Reply

Marsh Posté le 05-02-2010 à 14:54:36    

En aucun cas, le POST est plus sur  :non:  
 
Dans ton cas, il faut utiliser les sessions, tu aura un niveau de sécurité plus élevé et surtout ca sera plus simple. Il existe pas mal de tuto pour ça, en voici un par exemple: http://www.siteduzero.com/tutoriel [...] sions.html
 
 

Reply

Marsh Posté le 05-02-2010 à 15:31:56    

Ok et comment je fais mon lien qui donne une valeur à une variable $_SESSION['...'] ? Parce que ce que j'ai vu dans l'exemple (site du zero) que tu m'as donné c'est qu'il passe par des variables $_POST pour définir ses variables $_SESSION... Je voulais justement savoir si en faisant un lien cliquable on peut définir des variables telles que des sessions directement ou plus proprement que dans mon exemple.


Message édité par k'stor le 05-02-2010 à 15:33:38
Reply

Marsh Posté le 05-02-2010 à 15:52:31    

Non ce n'est pas possible. De toute façon tes users d'identifient à l'aide d'un formulaire non?

Reply

Marsh Posté le 05-02-2010 à 15:57:06    

oui mais quand ils cliquent sur un des boutons du menu le corps du site doit changer en fonction

Reply

Marsh Posté le 05-02-2010 à 16:08:04    

Tu utilise un lien type  <a href="url.php?mavariable=mavaleur>lien</a>
 
Niveau sécurité tu t'en fou puisqu'il y a une vérif après.

Reply

Marsh Posté le 05-02-2010 à 16:08:04   

Reply

Marsh Posté le 05-02-2010 à 16:46:37    

Oui t'as raison ça m'emmerde mais je crois que je vais faire comme ça j'ai pas le choix.
Sinon quelqu'un connait un site où on peut trouver des modules php pour faire des graphiques?
EDIT : bon je viens de trouver ça  je pense que je devrais y trouver mon bonheur


Message édité par k'stor le 05-02-2010 à 17:10:57
Reply

Marsh Posté le 08-02-2010 à 11:25:02    

Bonjour,
Voilà j'ai un nouveau problème avec mes barrages le truc c'est que je sais même pas comment taper la recherche dans google :
j'ai deux tables qui ont chacune un champ "ouvrages", dans ces champs il peut y avoir plusieurs fois le même barrage. Je veux faire une requête qui affichera tous les barrages sans doublons.
j'étais parti sur un truc comme ça :

 

$reponseouvrages = mysql_query("SELECT DISTINCT ouvrages FROM autorisations, identifiants" )or die(mysql_error());

 

mais il met "Champ: 'ouvrages' dans field list est ambigu" je capte pas.
Quand je fais la même recherche dans une seule des deux tables il n'y a pas d'erreur mais quand je met les deux ça passe pas. Quelqu'un sait pourquoi?

 

Merci d'avance pour vos réponses.


Message édité par k'stor le 08-02-2010 à 11:27:04
Reply

Marsh Posté le 08-02-2010 à 11:29:12    

Ben parceque visiblement tu ne sais pas ce qu'est une jointure.
Va jeter un oeil sur la signature de 'magicbuzz' pour des notions elementaires de sql.
Sinon tu veux probablement faire un truc style

Code :
  1. select distinct ouvrages from autorisation
  2. union select distinct ouvrage from identifiants

Reply

Marsh Posté le 08-02-2010 à 11:43:09    

Ca a l'air de marcher! Merci
 
La signature de magicbuzz?
Il a pas l'air d'en avoir... Ou alors je sais pas ce que c'est  
Merci pour ton aide FRED!

Reply

Marsh Posté le 18-02-2010 à 09:48:06    

Salut j'ai un nouveau soucis...
Voilà pour chaque barrage, il est possible d'ajouter des capteurs, ce qui revient à ajouter un champ capteur"i" dans la table. Le soucis c'est qu'après je dois les récupérer pour les mettre dans un formulaire. je voulais savoir s'il existe une requête SQL du genre :
SELECT capteur% FROM...
Le but est de permettre de sélectionner uniquement les champs commençant par "capteur" dans ma table.
J'ai lu une réponse (je crois que c'est sur le forum de hardware.fr) où le type disait que c'était qu'il y avait une erreur de conception quand on devait faire des sélections sur des champs. je suis un peu d'accord mais ça serait tellement plus simple...
Merci d'avance pour vos réponses


Message édité par k'stor le 18-02-2010 à 10:05:08
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed