debutant : Affichage variable dans url- problème d'accents

debutant : Affichage variable dans url- problème d'accents - PHP - Programmation

Marsh Posté le 11-04-2005 à 18:10:02    

Bonjour,
 
Voici une question de débutant, svp.
 
voila, j'ai créer une table, ainsi qu'un formulaire pour inserer,modifier et supprimer...
J'ai cru que j'y arriverai pas, mais tout est bon (et je suis super content de moi), je fais
grave des progres en php...
 
mais voila, je bute sur une nouvelle étape :
j'aimerai bien afficher le détail de chaque enregistrement dans une page dont l'url ressemblerait à ça

Code :
  1. http://wwww.monsite.com/membres?=francois


 
j'ai fait une liste qui récupérere tous les pseudos : la voici :
 

Code :
  1. //requête SQL:
  2.     $sql = "SELECT *
  3.       FROM personnes
  4.       ORDER BY pseudo" ;
  5.  
  6.     //exécution de la requête:
  7.     $requete = mysql_query( $sql, $cnx ) ;
  8.  
  9.     //affichage des données:
  10.     while( $result = mysql_fetch_object( $requete ) )
  11.     {
  12.        echo("<div align=\"center\">".$result->pseudo." ".$result->nom." <br /> ".$result->prenom." <br /> <a href=\"affichage.php?pseudo=".$result->pseudo."\">affichage</a><br>\n" ) ;
  13.     }
  14.   ?>


 
mais voila... je bloque.. que faire pour que lorsqu'on clique sur affichage : on est quelque le détail...
 
Ou est ce que je mets un  code du genre :
 

Code :
  1. //récupération de la variable d'URL,
  2.   //qui va nous permettre de savoir quel enregistrement afficher
  3.   $id  = $_GET["pseudo"] ;
  4.   //requête SQL:
  5.   $sql = "SELECT *
  6.             FROM personnes
  7.     WHERE pseudo=".$id ;
  8.    
  9.   //exécution de la requête:
  10.   $requete = mysql_query( $sql, $cnx ) ;
  11.  
  12.   //affichage des données:
  13.   if( $result = mysql_fetch_object( $requete ) ){
  14.   ?>
  15. nom : <?php echo($result->nom) ;?><br />
  16. prénom : <?php echo($result->prenom) ;?><br />
  17. adresse<?php echo($result->adresse) ;?><br />
  18. <?php echo($result->cp) ;?>
  19. <?php echo($result->ville) ;?><br />
  20. telephone : <?php echo($result->telephone) ;?>
  21. <?
  22. }


 
voila, comment "creer la page : http://wwww.monsite.com/membres?=francois"  
pour que s'affiche le détail tous les champs de la table ?
 
VOILA, j'espère que j'ai été clair... et j'espère que vos réponse ne seront pas
trop sybelline pour moi...
 
Merci de me donner des pistes ou des liens avec des tutoriaux (simples) svp....
 
merci d'avance
un bb phpman


Message édité par foxcssfox le 12-04-2005 à 12:22:24
Reply

Marsh Posté le 11-04-2005 à 18:10:02   

Reply

Marsh Posté le 11-04-2005 à 20:17:02    

tu mets tes codes là sur une page que tu nomme membre.php
 
et ton lien pour l'affichage des données du membres doit être comme celà

Code :
  1. http://wwww.monsite.com/membres.php?pseudo=francois


 
et pas

Code :
  1. http://wwww.monsite.com/membres?=francois


 :non:  
 
et sinon je trouve le code qui suit bien dangeureux:

Code :
  1. $id  = $_GET["pseudo"] ;


:/
 
A+
 
edit:
ça ça devrait être bon (je debute aussi hein attention  :o ):

Code :
  1. <?php
  2. $connex = mysql_connect(localhost, root, password);
  3. $select = mysql_select_db($bdd,$connex);
  4.      //récupération de la variable d'URL,
  5.        //qui va nous permettre de savoir quel enregistrement afficher
  6.        $id  = htmlentities($_GET["pseudo"], ENT_QUOTES) ;
  7.        //requête SQL:
  8.        $sql = "SELECT *
  9.                  FROM personnes
  10.              WHERE pseudo=".$id." ;
  11.              
  12.        //exécution de la requête:
  13.        $requete = mysql_query( $sql) ;
  14.        $donnee = mysql_fetch_array( $requete );
  15.      
  16.     echo "nom : ".$donnee['nom']."<br />\n
  17.      prénom : ".$donnee['prenom']."<br />\n
  18.      adresse: ".$donnee['adresse']."<br />\n
  19.      ".$donnee['cp']."<br />\n
  20.      ".$donnee['ville']."<br />\n
  21.      telephone : ".$donnee['telephone']."<br />\n";
  22. ?>


Message édité par pmusa le 11-04-2005 à 20:30:50
Reply

Marsh Posté le 11-04-2005 à 21:49:42    

Parcontre pourquoi tu utilises la fonction mysql_fetch_objet au lieu d'utiliser une qui n'entraine pas de notion objet ==> Plus facile a comprendre pour une debutant (=> mysql_fetch_array,...)


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 11-04-2005 à 21:52:45    

mysql_fetch_object ça lui fait taper moins de code.  :D  
bah t'as les crochets et les quotes en moins à taper. "->" c'est plus court.  
 
après tout si c'est possible pourquoi pas.  [:airforceone]


Message édité par pmusa le 11-04-2005 à 21:53:12
Reply

Marsh Posté le 11-04-2005 à 22:24:47    

le jour ou il voudra recuperer les colonnes de maniere dynamique il sera emmerdé s'il aura pas approfondi un peu ses notion objet :p


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 12-04-2005 à 10:38:34    

il y a un message d'erreur, je vois pas où est l'erreur :

Code :
  1. Parse error: parse error, unexpected T_STRING in


 
ici :
 

Code :
  1. echo "nom : ".$donnee['nom']."<br />\n
  2.       prénom : ".$donnee['prenom']."<br />\n
  3.       adresse: ".$donnee['adresse']."<br />\n
  4.       ".$donnee['cp']."<br />\n
  5.       ".$donnee['ville']."<br />\n
  6.       telephone : ".$donnee['telephone']."<br />\n";


 
Pouvez vous m'aider Svp ?
problème avec les guillemets ?
 
Merci


Message édité par foxcssfox le 12-04-2005 à 10:40:43
Reply

Marsh Posté le 12-04-2005 à 10:48:07    

bah non apparement pas de soucis de guillemet tout est en place
par contre mefie souvent si il te dt une erreur ligne, par exemple, 10 cela ne vient pas forcement de laligne 10 mais celle d'apres ou avant. Voir meme 10 ligne au dessus suivant l'erreur.
 
mais attention je suis un debutant qui fais par des probleme que j'ai deja eu avec un autre debutant :D

Reply

Marsh Posté le 12-04-2005 à 10:53:11    

VOIci le code complet :
 

Code :
  1. <?php
  2.   //connection au serveur
  3.   $cnx = mysql_connect( "ftpperso.free.fr", "XXX", "XXX" ) ;
  4.   //sélection de la base de données:
  5.   $db  = mysql_select_db( "XXX" ) ;
  6.  
  7.     //requête SQL:
  8.     $sql = "SELECT *
  9.       FROM personnes     
  10.     WHERE pseudo= ".$id." ;
  11.            
  12.              //exécution de la requête:
  13.            
  14.             $requete = mysql_query( $sql) ;
  15.             $donnee = mysql_fetch_array( $requete );
  16.            
  17.           echo "
  18.           nom : ".$donnee['nom']."<br />\n
  19.           prénom : ".$donnee['prenom']."<br />\n
  20.           adresse: ".$donnee['adresse']."<br />\n
  21.           ".$donnee['cp']."<br />\n
  22.           ".$donnee['ville']."<br />\n
  23.           telephone : ".$donnee['telephone']."<br />\n";
  24.                  ?>
  25.  
  26. </body>
  27. </html>


 
en attendant, je continue à chercher,
Dés que j'ai trouvé, je viendrais corriger mon script ici
 
merci
merci..


Message édité par foxcssfox le 12-04-2005 à 10:54:18
Reply

Marsh Posté le 12-04-2005 à 10:57:02    

foxcssfox a écrit :

 
    //requête SQL:
    $sql = "SELECT *
       FROM personnes      
     WHERE pseudo= ".$id." ;


 
alors je pense que cela viens du fait que tu as oublier de fermer les guillemet apres ta requete et tu na pas besoin des guillemet autour de ta variable comme ca :
 

Code :
  1. //requête SQL:
  2.     $sql = "SELECT *
  3.       FROM personnes     
  4.     WHERE pseudo= $id " ;

Reply

Marsh Posté le 12-04-2005 à 11:02:57    

Ok merci Kenji_lol

Reply

Marsh Posté le 12-04-2005 à 11:02:57   

Reply

Marsh Posté le 12-04-2005 à 11:29:02    

PROBLEME RESOLU, merci à tous, voici le code corrigé :
 

Code :
  1. <?php
  2.   //connection au serveur
  3.   $cnx = mysql_connect( "fptperso.free.fr", "xxx", "xxx" ) ;
  4.   //sélection de la base de données:
  5.   $db  = mysql_select_db( "xxx" ) ;
  6.      //récupération de la variable d'URL,
  7.        //qui va nous permettre de savoir quel enregistrement afficher
  8.         $id  = htmlentities($_GET["nom"], ENT_QUOTES) ;
  9.  
  10.     //requête SQL:
  11.     $sql = "SELECT *
  12.       FROM personnes
  13.       WHERE nom = '$id' " ;   
  14.          
  15.              //exécution de la requête:         
  16.             $requete = mysql_query( $sql) ;
  17.             $donnee = mysql_fetch_array( $requete );
  18.           echo "nom : ". $donnee['nom'] ."<br />\n
  19.           prénom : ". $donnee['prenom'] ."<br />\n
  20.           adresse: ". $donnee['adresse'] ."<br />\n
  21.           ". $donnee['cp'] ."<br />\n
  22.           ". $donnee['ville'] ."<br />\n
  23.           telephone : ". $donnee['telephone'] ."<br />\n";
  24.                  ?>


Message édité par foxcssfox le 12-04-2005 à 11:29:26
Reply

Marsh Posté le 12-04-2005 à 11:32:43    

Vire les doubles-quotes quand y'en a pas besoin. Et inutile de faire de la concaténation pour un echo :

echo 'nom : ', $donnee['nom'] , '<br />', "\n",
     'prénom : ', $donnee['prenom'] , '<br />', "\n",
     'adresse: ', $donnee['adresse'] , '<br />', "\n",
                  $donnee['cp'] , '<br />', "\n",
                  $donnee['ville'] , '<br />', "\n",
     'telephone : ', $donnee['telephone'] , '<br />', "\n";


Message édité par FlorentG le 12-04-2005 à 11:32:54
Reply

Marsh Posté le 12-04-2005 à 11:39:18    

c'est quoit tes virgules Florent?

Reply

Marsh Posté le 12-04-2005 à 11:40:13    

J'ai dis pas besoin de concaténation ;) Avec echo tu met des virgules, et il envoi tel quel sans se faire chier à concaténer

Reply

Marsh Posté le 12-04-2005 à 12:07:52    

c'est vrai, c'est plus simple pour moi, merci pour cette précision, FlorentG.


Message édité par foxcssfox le 12-04-2005 à 12:11:09
Reply

Marsh Posté le 12-04-2005 à 12:19:40    

nouveau problème, les lettres "accentuées" et "spéciales (ç par exemple) ne sont pas pris en compte malgré la fonction HTMLENTITIES.

Code :
  1. //récupération de la variable d'URL,
  2.      //qui va nous permettre de savoir quel enregistrement afficher
  3.          $id  = htmlentities($_GET["nom"], ENT_QUOTES) ;


 
 
EXEMPLE : nom = célimène
j'obtiens cela dans l'URL

Code :
  1. affichage.php?nom=c%E9lim%E8ne


 
Que dois je faire ?  
créer une fonction spécifique, sinon ou est mon erreur ?


Message édité par foxcssfox le 12-04-2005 à 13:59:39
Reply

Marsh Posté le 12-04-2005 à 14:11:19    

J'ai trouvé cette fonction
qui par exemple :

Code :
  1. // Exemple :
  2. echo SuppAccents("déjà" );
  3. // affiche "deja" (sans les accents donc)


 
 

Code :
  1. function SuppAccents($chaine){
  2. $tofind = "ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ";
  3. $replac = "AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn";
  4. return(strtr($chaine,$tofind,$replac));
  5. }


 
est-ce la bonne solution ?
 
En ce qui me concerne, c'est la variable nom qui m'interesse, donc logiquement
je devrais faire ça :
 
     

Code :
  1. $id  = SuppAccents(htmlentities($_GET["nom"], ENT_QUOTES)) ;


 
mais apparemment ca ne fonctionne pas, je comprends où est mon erreur...


Message édité par foxcssfox le 12-04-2005 à 14:14:19
Reply

Marsh Posté le 12-04-2005 à 14:20:32    

Je dirais qu'avec l'utf-8, y'a moyen de foutre le bordel :D

Reply

Marsh Posté le 12-04-2005 à 16:19:52    

FlorentG a écrit :

Je dirais qu'avec l'utf-8, y'a moyen de foutre le bordel :D


 
ca correspond à quoi exactement ? Dans PHPMyadmin il y a interclassement mais j'ai pas trop compreis?
ca correspond au caractère de chaque pays genre table ASCI ??

Reply

Marsh Posté le 12-04-2005 à 16:21:43    

C'est au-dessus de l'ASCII. L'ASCII ne gère que des tables de 255 caractères. L'unicode (utf-8, 16 et 32) en gère plus de 4 milliards, et y'a tous les alphabets du monde, et encore la place pour ceux de venus et de mars :)

Reply

Marsh Posté le 12-04-2005 à 16:56:00    

ok les gars, mais je vois pas trop le rapport, j'ai toujours pas d'idees, pour enlever les accents d'une variable pour qu'elle passe en get dans l'URL.


Message édité par foxcssfox le 12-04-2005 à 16:56:58
Reply

Marsh Posté le 12-04-2005 à 17:08:21    

La table personnes n'as pas un auto incrément sur les pseudos pour désigner un id de pseudo ? Ca serait plus simple.

Reply

Marsh Posté le 12-04-2005 à 17:18:36    

foxcssfox a écrit :

ok les gars, mais je vois pas trop le rapport, j'ai toujours pas d'idees, pour enlever les accents d'une variable pour qu'elle passe en get dans l'URL.


 
On fait pas. Attribue un n° de membre comme tout le monde hein... Qu'est-ce que c'est que ces histoires de vouloir faire passer des accents dans une URL...  :D  

Reply

Marsh Posté le 12-04-2005 à 17:23:41    

Sinon bah tu enlève les accents le temps du tranfert pour les remettre par la suite - bidouillage bidouillage :D - avec la fonction : strtr($variable, "'", "_" ); par exemple et après que le passage en get soit terminé tu reconverti, strtr($variable, "_", "'" ); lol mais c'est du bidouillage // ;)


---------------
> http://graphicriver.net/user/micfo [...] micfont999  
Reply

Marsh Posté le 12-04-2005 à 17:44:31    

urlencode et urldecode vous connaisser ?


---------------
Nos estans firs di nosse pitite patreye...
Reply

Marsh Posté le 12-04-2005 à 17:47:34    

KangOl a écrit :

urlencode et urldecode vous connaisser ?


 
Ouai et ça pue. Rien ne vaut un base64_encode/decode.  :D  Surtout pour les noms de fichiers d'ailleurs. ;)

Reply

Marsh Posté le 12-04-2005 à 18:12:49    

Citation :

On fait pas. Attribue un n° de membre comme tout le monde hein... Qu'est-ce que c'est que ces histoires de vouloir faire passer des accents dans une URL...


 
Maieuuuhs, je sais pas moi...., je débute ...  Finalement, j'ai pris l'ID...de ma table : ca regle tout mes problemes...
(fallait le dire plus tôt ;-))
 
Merci en tout cas, ca m'a permis d'apprendre encore quelques trucs...


Message édité par foxcssfox le 12-04-2005 à 18:13:36
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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