Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/10/2011, 21h56   #1
Membre habitué
 
Inscription : avril 2010
Messages : 308
Détails du profil
Informations forums :
Inscription : avril 2010
Messages : 308
Points : 109
Points : 109
Par défaut Supprimer %20 dans l'URL

Bonsoir,

J'ai une requête qui fait une recherche selon le mot que clé saisi et fais passée cette requête comme chaîne de caractère dans un lien pour la récupérer dans la page suivante où j'en fait certains traitements. Tput marche parfaitement, jusqu'à ce que je cherche un mot clé commençant par Ba , je me rend compte que dans le lien la requête est transformée par :

Code :
$RecAdres="SELECT%20*%20FROM%20address%20WHERE%20address.Nom%20LIKE%20'$rech2' OR%20 address.Lieu%20LIKE%20 '$rech2......'";
En fait il remplace tous les espaces par %20. Et le résultat n'est pas celui attendu.

Lorsque je fais un echo $RecAdres dans la page de destination il m'affiche ceci :

Code :
SELECT * FROM address WHERE address.Nom LIKE '�m%' OR address.Lieu LIKE '�m%' OR address.category LIKE '�m%'
Puisque la variable de recherche est Bam , il remplace Ba par le caractère �.

Tout ce qui commence par Ba se comporte de cette manière. En passant j'utilise l'encodage utf8. J'essaie de faire un str_replace('%20' ' ' $RecAdres), ça ne donne rien, puisque %20 n’apparaît pas dans le code

Merci pour vos idées.
mesken est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2011, 22h37   #2
Modérateur
 
Inscription : septembre 2010
Messages : 7 146
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 146
Points : 8 512
Points : 8 512
urldecode
__________________
http://blog.stealth35.com/
stealth35 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2011, 23h15   #3
Membre habitué
 
Inscription : avril 2010
Messages : 308
Détails du profil
Informations forums :
Inscription : avril 2010
Messages : 308
Points : 109
Points : 109
Effectivement je suis tombé sur urldecode, mais je ne vois aucun changement, est ce que je l'utilise mal ? A quel niveau est ce que je le met, voici comment je l'ai utilisé , au moment de passer le paramètre qui est la chaîne de la requête:

Code :
1
2
3
$RecAdres="SELECT *% FROM address WHERE address.Nom LIKE '$rech2' OR address.Lieu LIKE  '$rech2 '";

echo ' <a href="address_view.php?RecAdres='.urldecode($RecAdres).'">Adresses et Numéros Utiles</a>';
Mais ça ne marche toujours pas.
mesken est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2011, 23h17   #4
Modérateur
 
Inscription : septembre 2010
Messages : 7 146
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 146
Points : 8 512
Points : 8 512
si tu veux l'afficher dans un lien il faut faire un urlencode

par contre je te déconseille vivement de faire ça, c'est plus un trou sécurité c'est un gouffre la
__________________
http://blog.stealth35.com/
stealth35 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2011, 23h40   #5
Membre habitué
 
Inscription : avril 2010
Messages : 308
Détails du profil
Informations forums :
Inscription : avril 2010
Messages : 308
Points : 109
Points : 109
OK merci, ça marche avec urlencode.

Par rapport au gouffre de sécurité. Je comprends, mais je veux récupérer automatiquement le résultat de la recherche dans la page de destinaion pour faire des traitement précis, comment puis-je gérer ça ?
En passant la page de destination se trouve dans un Frame, donc le lien finale ne contient pas le chaine de caractère du SELECT * FROM.... elle n'apparait pas dans l'url physiquement, mon URL reste du genre

http://localhost/PROJET/index.php?po...t=0&nbrligne=5

Merci
mesken est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/10/2011, 04h57   #6
Membre Expert
 
Inscription : septembre 2010
Messages : 1 244
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 1 244
Points : 1 568
Points : 1 568
Il faut mettre ta requête "en dur" dans la page que tu veux. Dans ton lien tu passe juste les variables que tu intègre ensuite dans ta requête. Les variables doivent aussi être protégées par mysql_real_escape_string.

Le code qui doit faire la requête pourrait ressembler à ça :
Code :
1
2
3
4
5
6
7
 
if (isset($_GET['recherche']))
{
//...
$req ="SELECT * FROM address WHERE address.Nom LIKE '".mysql_real_escape_string($_GET['recherche'])."' OR address.Lieu LIKE  '".mysql_real_escape_string($_GET['recherche'])."'";
//...
}
Et le lien à ceci
Code :
1
2
3
4
 
//...
echo '<a href="address_view.php?recherche='.urlencode($recherche).'">Adresses et Numéros Utiles</a>';
//...
__________________
- Réalisations
- Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical.
ABCIWEB est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h16.


 
 
 
 
Partenaires

Hébergement Web