Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1521 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Affichage de variables

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Affichage de variables

n°1813035
Generation​-Web
Posté le 17-11-2008 à 15:51:30  profilanswer
 

Bonjour,
 
Voila j'ai crée une table "affilies" dans MySQL en rajoutant des champs sur le nom d'utilisateur, l'e-mail et l'id de chaque affilié, et je voudrais savoir comment mettre un lien du style www.site.fr/12000 (12000 correspondant à l'id de l'affilié) avec à l'intérieur de la page les données de l'affilié tels que son email, son prénom et son lien.
 
 
J'ai testé un code :
(ex : le lien de ma page est www.site.fr/presentation.php?id-affilie=12000)
 
Code : PHP
 

Code :
  1. <?php
  2. mysql_connect("localhost", "root", "" );
  3. mysql_select_db("affiliation" );
  4. $id = $_GET['id-affilie'];
  5. $retour = mysql_query("SELECT * FROM affilies WHERE id-affilie=$id" ); // selectionner les infos par rapport à l'id passé en GET
  6. $donnees = mysql_fetch_array($retour);
  7. ?>
  8. <center><a href="https://www.monsite.fr?sponsor=<?php echo $donnees['username-affilie']; ?>>lien</a></center>


 
Remarque : le "username-affilie" représente le nom d'utilisateur pour lequel "id-affilie=12000".
 
 
Malheureusement, j'obtient toujours le même 'username-affilie' quelque soit la valeur de l'id-affilie que je met dans le lien de ma page.
 
L'erreur devrait se situer dans mysql_query.
Quelqu'un peut-il m'aider à corriger ce problème ?


Message édité par Generation-Web le 26-11-2008 à 00:06:44

---------------
Site web d'informations sur internet
mood
Publicité
Posté le 17-11-2008 à 15:51:30  profilanswer
 

n°1813037
NewsletTux
&lt;Insérez ici votre vie /&gt;
Posté le 17-11-2008 à 15:54:46  profilanswer
 

alors déjà, il faut penser à sécuriser tes requêtes ... ici tu fais une belle injection SQL.
Si ID n'est qu'un nombre, alors tu peux faire ça :

Code :
  1. $id = (isset($_GET['id-affilie'])) ? abs(intval($_GET['id-affilie'])) : 0;
  2. $req = "SELECT * FROM affilies WHERE id-affilie='".$id."';";
  3. $retour = mysql_query($req) or die ($req.'<br>'.mysql_error());
  4. if (mysql_num_rows($retour) == 1)
  5.    $donnees = mysql_fetch_array($retour);
  6. else
  7.    $donnees = array();


D'autre part, peut-on mettre le trait d'union dans un nom de variable ?
 
Enfin, juste après ton fetch_array, mets ceci :
print_r($donnees);
et tu verras ce que tu as récolté.
 
Dernière remarque : le SELECT * est-il nécessaire ? (si tu n'as besopin que du nom et de l'email, un  SELECT nom, email FROM ... me parait plus approprié.
 
EDIT : dans ce que j'ai mis, si ton ID vaut zéro, $donnees sera un tableau vide.

Message cité 1 fois
Message édité par NewsletTux le 17-11-2008 à 15:57:43

---------------
NewsletTux - outil de mailing list en PHP MySQL
n°1813077
Generation​-Web
Posté le 17-11-2008 à 17:01:22  profilanswer
 

Merci pour ta réponse,
 
malheureusement je suis débutant en php, et j'ai essayé avec le code que tu as mis, mais le lien n'affiche pas le "usernameaffilie".
 
 
Voici le code:
 

Code :
  1. <?php
  2. mysql_connect("localhost", "root", "" );
  3. mysql_select_db("affiliation" );
  4.     $id = (isset($_GET['idaffilie'])) ? abs(intval($_GET['idaffilie'])) : 0;
  5.     $req = "SELECT * FROM affilies WHERE idaffilie='".$id."';";
  6.     $retour = mysql_query($req) or die ($req.'<br>'.mysql_error());
  7.  
  8.     if (mysql_num_rows($retour) == 1)
  9.          {
  10.   $donnees = mysql_fetch_array($retour);
  11. ?>
  12. <center><a href="https://www.monsite.fr?sponsor=<?php echo $donnees['usernameaffilie']; ?>>lien</a></center>
  13.    
  14. <?php
  15. }
  16. else 
  17. {
  18. $donnees = array();
  19. ?>
  20. <center><a href="https://www.monsite.fr?sponsor=<?php echo $donnees['usernameaffilie']; ?>>lien</a></center>
  21. <?php
  22. }
  23. ?>


 
 
Excusez-moi, en fait tout marche, merci !!!
 
 
 
Simplement, lorsqu'il n'y a pas d' "idaffilie" dans le lien de ma page, en reprenant l'exemple si mon lien est : "www.site.fr/presentation.php", que dois-je ajouter pour avoir un "usernameaffilie" par défaut??
 
Merci de m'aider  :)


Message édité par Generation-Web le 26-11-2008 à 00:06:56

---------------
Site web d'informations sur internet
n°1813216
NewsletTux
&lt;Insérez ici votre vie /&gt;
Posté le 17-11-2008 à 23:20:57  profilanswer
 

Hello,
dans ce cas, soit tu as un compte lambda qui vaut pour tout le monde, soit pas de compte, auquel cas tu ne prends pas en compte cette donnée ...
 
Concrètement :
 
1. Si tu as un compte lambda d'ID 1 :

Code :
  1. $id = (isset($_GET['idaffilie'])) ? abs(intval($_GET['idaffilie'])) : 1;


(il y a juste le 1 qui remplace le 0 à la fin de ligne, c'est la valeur par défaut qui sera initialisée dans $id si $_GET['...'] n'existe pas)
 
2. Si tu n'as pas de compte lambda (donc pas de système d'affiliation si pas de sponsor)

Code :
  1. <?php
  2.   mysql_connect("localhost", "root", "" );
  3.   mysql_select_db("affiliation" );
  4.   $id = (isset($_GET['idaffilie'])) ? abs(intval($_GET['idaffilie'])) : 0;
  5.   $req = "SELECT * FROM affilies WHERE idaffilie='".$id."';";
  6.   $retour = mysql_query($req) or die ($req.'<br>'.mysql_error());
  7.   if (mysql_num_rows($retour) == 1)
  8.   {
  9.     $donnees = mysql_fetch_array($retour);
  10.     echo '<center><a href="https://www.monsite.fr?sponsor='.$donnees['usernameaffilie'].'">lien</a></center>';
  11.   }
  12.   else
  13.   {
  14.     echo '<center><a href="https://www.monsite.fr">lien</a></center>';
  15.   };
  16. ?>


---------------
NewsletTux - outil de mailing list en PHP MySQL
n°1813654
Generation​-Web
Posté le 18-11-2008 à 22:30:26  profilanswer
 

Merci encore !!
 
Tout fonctionne!


Message édité par Generation-Web le 26-11-2008 à 00:07:08

---------------
Site web d'informations sur internet
n°1813960
NewsletTux
&lt;Insérez ici votre vie /&gt;
Posté le 19-11-2008 à 18:27:28  profilanswer
 

D'ailleurs on pourrait même optimiser ça ...
 
au lieu de :

Code :
  1. if (mysql_num_rows($retour) == 1)
  2. {
  3.   $donnees = mysql_fetch_array($retour);
  4.   echo '<center><a href="https://www.monsite.fr?sponsor='.$donnees['usernameaffilie'].'">lien</a></center>';
  5. }
  6. else
  7. {
  8.   echo '<center><a href="https://www.monsite.fr">lien</a></center>';
  9. };


 
tu pourrais utiliser ça :

Code :
  1. echo '<center><a href="https://www.monsite.fr';
  2. if (mysql_num_rows($retour) == 1)
  3. {
  4.   $donnees = mysql_fetch_array($retour);
  5.   echo '?sponsor='.$donnees['usernameaffilie'];
  6. }
  7. echo '">lien</a></center>';



---------------
NewsletTux - outil de mailing list en PHP MySQL
n°1814070
Generation​-Web
Posté le 19-11-2008 à 23:07:52  profilanswer
 

Excellent !
 
Je te remercie pour ton aide, c'est nikel !  :)


Message édité par Generation-Web le 26-11-2008 à 00:07:18

---------------
Site web d'informations sur internet
n°1814173
skeye
Posté le 20-11-2008 à 10:15:37  profilanswer
 

NewsletTux a écrit :

alors déjà, il faut penser à sécuriser tes requêtes ... ici tu fais une belle injection SQL.
Si ID n'est qu'un nombre, alors tu peux faire ça :

Code :
  1. $id = (isset($_GET['id-affilie'])) ? abs(intval($_GET['id-affilie'])) : 0;
  2. $req = "SELECT * FROM affilies WHERE id-affilie='".$id."';";



 

c'est une blague?[:pingouino]
Si oui, elle est particulièrement mauvaise.[:moule_bite]


Message édité par skeye le 20-11-2008 à 10:15:50

---------------
Can't buy what I want because it's free -
n°1814179
skeye
Posté le 20-11-2008 à 10:22:53  profilanswer
 

NewsletTux a écrit :

D'ailleurs on pourrait même optimiser ça ...

 

au lieu de :

Code :
  1. if (mysql_num_rows($retour) == 1)
  2. {
  3.   $donnees = mysql_fetch_array($retour);
  4.   echo '<center><a href="https://www.monsite.fr?sponsor='.$donnees['usernameaffilie'].'">lien</a></center>';
  5. }
  6. else
  7. {
  8.   echo '<center><a href="https://www.monsite.fr">lien</a></center>';
  9. };
 

tu pourrais utiliser ça :

Code :
  1. echo '<center><a href="https://www.monsite.fr';
  2. if (mysql_num_rows($retour) == 1)
  3. {
  4.   $donnees = mysql_fetch_array($retour);
  5.   echo '?sponsor='.$donnees['usernameaffilie'];
  6. }
  7. echo '">lien</a></center>';




...ou alors utiliser un semblant de séparation de la présentation et de la logique au lieu de rendre ça encore plus mélangé et moins lisible pour le plaisir d'écrire 3 caractères de moins.[:moule_bite]


Message édité par skeye le 20-11-2008 à 10:23:15

---------------
Can't buy what I want because it's free -
n°1814647
Generation​-Web
Posté le 20-11-2008 à 19:18:50  profilanswer
 

Vraiment ?
 
Mais alors qu'est ce que tu proposes pour simplifier et sécuriser tout ça ?

Message cité 1 fois
Message édité par Generation-Web le 26-11-2008 à 00:07:31

---------------
Site web d'informations sur internet
mood
Publicité
Posté le 20-11-2008 à 19:18:50  profilanswer
 

n°1814657
Profil sup​primé
Posté le 20-11-2008 à 19:30:43  answer
 

Bah déjà pour simplifier, tout séparer :
 

Code :
  1. <?php
  2. if (mysql_num_rows($retour) == 1) :
  3.     $donnees = mysql_fetch_assoc($retour);
  4.     ?>
  5.    <center><a href="https://www.monsite.fr?sponsor='.$donnees['usernameaffilie'].'">lien</a></center>
  6. <?php else : ?>
  7.  <center><a href="https://www.monsite.fr">lien</a></center>
  8. <?php endif; ?>

n°1814661
skeye
Posté le 20-11-2008 à 19:38:51  profilanswer
 

Generation-Web a écrit :

Vraiment ?
 
Mais alors qu'est ce que tu proposes pour simplifier et sécuriser tout ça ?


Sécuriser l'input vers la base de données, c'est le boulot...de la librairrie d'accès à la base de données. Dans ton cas, soit tu peux utiliser les fonctions mysqli() ou PDOet donc il faut te diriger vers les requêtes préparées, soit ce n'est pas le cas, et il faut utiliser mysql_real_escape_string.
 
Concernant son "optimisation", elle est juste ridicule. Aucun gain en performance, ni en lisibilité, le seul gain est en termes de caractères à taper, ce qui n'a aucun intérêt.
Si tu veux partir dans l'esprit "séparation des couches", renseigne-toi sur MVC, par exemple.
 
...et Luc@s, dire "tout séparer" et mettre de l'affichage et une fonction d'accès à la base dans le même script de 10 lignes c'est vraiment très très très mauvais. :D


---------------
Can't buy what I want because it's free -
n°1814669
Profil sup​primé
Posté le 20-11-2008 à 20:13:43  answer
 

oui mais je fais pas lui faire 3 fichiers différents avec des templates quand même :o :D

n°1814671
skeye
Posté le 20-11-2008 à 20:15:11  profilanswer
 


en attendant ton truc est moins lisible que l'original, alors autant garder le premier :o


---------------
Can't buy what I want because it's free -

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Affichage de variables

 

Sujets relatifs
variables d'environnement du shell à PHPfile ou fopen avec variables passées dans l'url
requete mysql categorie et sous cat affichage des produitsbug affichage sur accès Wap
Affichage de point!!!!!!Récuperation de variables d'un XML et affichage de ces derniers
prob lors de l'affichage de variables de session[PHP] Affichage des variables formatées ?
PASCAL: Changer l'affichage des variables(Chiffres apres/avant la ",")Affichage de variables en ASP
Plus de sujets relatifs à : Affichage de variables


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR