Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
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 30/10/2007, 11h35   #1
Nouveau Membre du Club
 
Inscription : octobre 2007
Messages : 34
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 34
Points : 31
Points : 31
Par défaut [SQL] Problème de variable dans un lien

Bonjour,

j'ai un petit problème concernant une variable php que j'affiche dans un lien html

voici le code :
Code :
<a class="noir" href="afficher.php?page=recherchefournisseur&action=modifier&pag=<?php echo $pag?>&ID_FOURNISS=<?php echo $tabdonnees['ID_FOURNISS'][$i]; ?>&where=<?php echo $where ?>">M</a>
la variable $where est initialisée plus dans mon code php et le problème apparait seulement lorsque cette est construite de la manière suivante:

Code :
$where = "$nomchamps like '%$lignechamps%'";
Alors j'ai remarqué que en passant ma souris sur le lien il apparait au niveau du where :
where=$nomchamps like '«%' pour un alphanumérique
et
where=$nomchamps like '''%' pour un numerique.

Ce qui est étrange c'est que ce problème se manifeste lorsque j'interroge une base mysql et ça marche sans problème sur une base sql server.

Est-ce que ça vient de là ? Suis-je totalement dans le faux? Dois-je protéger le caractère "%"?

PS : Si il manque des choses dans mon explication je les mettrai.

Merci et bonne journée.
cycyand1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/10/2007, 12h14   #2
Membre Expert
 
Inscription : octobre 2002
Messages : 1 141
Détails du profil
Informations personnelles :
Âge : 32
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : octobre 2002
Messages : 1 141
Points : 1 204
Points : 1 204
Envoyer un message via MSN à Raideman
Peut etre suis je dans le faux mais je pense que tu ferais mieux de faire un coup de urlencode() pour afficher ton lien ( et récupérer le contenu avec la fonction inverse : urldecode() ).
Raideman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/10/2007, 12h22   #3
Nouveau Membre du Club
 
Inscription : octobre 2007
Messages : 34
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 34
Points : 31
Points : 31
je vais tester merci.
cycyand1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/10/2007, 12h48   #4
Nouveau Membre du Club
 
Inscription : octobre 2007
Messages : 34
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 34
Points : 31
Points : 31
Alors je viens de tester ce que tu m'as conseillé

avant le lien:
Code :
$where = urlencode($where);
après reception
Code :
1
2
3
if ($_GET["where"] != null) $where = urldecode($_GET["where"]);
else $where = " ";
echo $where." debut<br>";
voici le résultat sans le stripslashes():
NOM_FOURNISS like \'«%\' debut

pourtant l'url a l'air bonne :
afficher.php?page=recherchefournisseur&action=modifier&pag=1&ID_FOURNISS=8&where=+NOM_FOURNISS+like+%27%25ab%25%27
et quand je passe ma souris sur le lien ça s'affiche mieux, mais le resultat est le même qu'au début.
Cependant on avance merci pour ton aide Raideman, c'était une étape que je ne faisait pas mais qui doit bien servir, on en apprend tous les jours .
cycyand1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/10/2007, 13h15   #5
Nouveau Membre du Club
 
Avatar de Shinn77
 
Inscription : juin 2007
Messages : 51
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : juin 2007
Messages : 51
Points : 27
Points : 27
Envoyer un message via ICQ à Shinn77 Envoyer un message via MSN à Shinn77
Alors euh... moi je comprend pas ce que tu veux que ça t'affiche.

Dans ton exemple actuel, ta variable $where doit contenir quoi au juste ? histoire qu'on voit ce qui se passe.
Shinn77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/10/2007, 13h43   #6
Nouveau Membre du Club
 
Inscription : octobre 2007
Messages : 34
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 34
Points : 31
Points : 31
Sorry

Alors la variable $where doit contenir en gros la condition de ma requête sql

exemple:
Code :
$where = "$nomchamps like '%$variable%' ";
et ça m'affiche ça (contenu de la variable $where en faisant un echo juste apres ça):
Code :
1
2
3
if (($_GET["where"] != null)) $where = urldecode($_GET["where"]);
else $where = " ";
echo $where."debut<br>";
NOM_FOURNISS like \'«%\'
cycyand1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/10/2007, 13h56   #7
Nouveau Membre du Club
 
Avatar de Shinn77
 
Inscription : juin 2007
Messages : 51
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : juin 2007
Messages : 51
Points : 27
Points : 27
Envoyer un message via ICQ à Shinn77 Envoyer un message via MSN à Shinn77
Que contient ton tableau $tabdonnees ?

Code :
<a class="noir" href="afficher.php?page=recherchefournisseur&action=modifier&pag=<?php echo $pag?>&ID_FOURNISS=<?php echo $tabdonnees['ID_FOURNISS'][$i]; ?>&where=<?php echo $where ?>">M</a>
Fait nous un print_r voir Oo

Affiche aussi ton $where

les Valeurs exactes qu'il te sort stp.
Shinn77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/10/2007, 14h28   #8
Nouveau Membre du Club
 
Inscription : octobre 2007
Messages : 34
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 34
Points : 31
Points : 31
Voici ce que j'obtiens sur mon navigateur:

impre.JPG

Le lien est tout à fait a droite du tableau le "M"
ma variable $tabdonnees est un tableau de données dont l'index est sur ID_FOURNISS

Pour la vairable $where je l'ai affiché à différents endroit du code avnat de cliquer sur lien.

Résultat apres le clique:
impre2.JPG

On voit bien que le résultat n'est pas ce que j'ai envoyer et je ne comprends pas pourqoi.
cycyand1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/10/2007, 15h02   #9
Nouveau Membre du Club
 
Avatar de Shinn77
 
Inscription : juin 2007
Messages : 51
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : juin 2007
Messages : 51
Points : 27
Points : 27
Envoyer un message via ICQ à Shinn77 Envoyer un message via MSN à Shinn77
Essaye de faire ça (ajout d'un lien de test bidon en dur sur une page_test.php)
Code :
<a href="page_test2.php?var=ID_FRS = '%toto%'">Test, cliquez ici</a>
et sur la page page_test2.php :
Code :
<?php echo $_POST["var"];?>
On va voir si ca affiche :
ID_FRS = '%toto%'
Shinn77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/10/2007, 15h17   #10
Nouveau Membre du Club
 
Inscription : octobre 2007
Messages : 34
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 34
Points : 31
Points : 31
La variable ne s'affiche pas ce qui est normal, me trompe-je?
cycyand1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/10/2007, 15h18   #11
Nouveau Membre du Club
 
Avatar de Shinn77
 
Inscription : juin 2007
Messages : 51
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : juin 2007
Messages : 51
Points : 27
Points : 27
Envoyer un message via ICQ à Shinn77 Envoyer un message via MSN à Shinn77
Oui petite erreur de ma part, remplace POST par GET.
Shinn77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/10/2007, 15h22   #12
Nouveau Membre du Club
 
Inscription : octobre 2007
Messages : 34
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 34
Points : 31
Points : 31
Voici le résultat : ID_FRS = \'%toto%\' sans le stripslashes bien sûr donc a priori pas de problème.

Et j'obtiens le même resultat avec ça:

Code :
1
2
3
4
<?php 
$var = "ID_FRS = '%toto%'";
?>
<a href="page_test2.php?var=<?php echo $var ?>">Test, cliquez ici</a>
cycyand1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/10/2007, 15h45   #13
Nouveau Membre du Club
 
Inscription : octobre 2007
Messages : 34
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 34
Points : 31
Points : 31
Alors je viens de résoudre malheureusement que partiellement ce problème.

J'ai simplement enlevé le premier "%" de ma requête. Donc, mon application marche, cependant mon like ne marche qu'à moitié. Mais je ne désespère et je trouverai d'où cela peut-il venir avec votre aide. Je peux bien sûr vous balancez tout le code de la page en marquant les endroits où chercher mais je ne veux pas vous faire mal à la tête.
cycyand1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/10/2007, 15h47   #14
Nouveau Membre du Club
 
Avatar de Shinn77
 
Inscription : juin 2007
Messages : 51
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : juin 2007
Messages : 51
Points : 27
Points : 27
Envoyer un message via ICQ à Shinn77 Envoyer un message via MSN à Shinn77
Si ca marche en haut ya pas de raison...

Moi ca me derange pas si tu menvoies le code... j y verrais pe etre plus clair.
Shinn77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/10/2007, 16h38   #15
Nouveau Membre du Club
 
Inscription : octobre 2007
Messages : 34
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 34
Points : 31
Points : 31
Je t'ai envoyer une parti du code. Mais ne te fais pas mal à la tête
cycyand1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h31.


 
 
 
 
Partenaires

Hébergement Web