IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

requete avec like comparaison caractéres


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2007
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2007
    Messages : 179
    Points : 97
    Points
    97
    Par défaut requete avec like comparaison caractéres
    bonjour j'ai une requete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <? $sql1="UPDATE tempprest SET remprest=$remprestvar,aprem=((somprest*$remprestvar)/100) where prestations like '$prestations' ";
    dans ma table temprest j'ai un champs prestation qui contient des données du type
    1)convoyage VN
    2) recept+encoy+transp
    pour faire la mise à jour de la table on trouve les mêmes dans la variable $prestations

    mon souci c'est que quand je compare des données ligne 1 pas de PB
    mais la comparaion avec les données ligne 2 la comparaion ne donne rien

    j'ai l'impression que cela vient du signe + ???

  2. #2
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Points : 8 678
    Points
    8 678
    Par défaut
    Salut,

    J'suis désolé, je vois pas de + !!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <? $sql1="UPDATE tempprest 
                           SET remprest=$remprestvar
                          ,aprem=((somprest*$remprestvar)/100) 
                           where prestations like '$prestations' ";

  3. #3
    Membre régulier
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2007
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2007
    Messages : 179
    Points : 97
    Points
    97
    Par défaut
    les plus se trouve dans les chaines de caratères comparées
    ex : recpt+envoy
    est ma chaine de départ je passe la valeur à un formulaire j'ai toujours mes +

    mais lorsque j'affiche echo variable je me retrouve avec recpt envoy le signe + à disparu donc ma comparaison ne peut se faire car j'ai une valeur avec les + et une autre sans les plus

  4. #4
    Membre éclairé Avatar de Z3phur
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2007
    Messages
    680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2007
    Messages : 680
    Points : 807
    Points
    807
    Par défaut
    tu es sur quelle base?

  5. #5
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 950
    Points : 5 849
    Points
    5 849
    Par défaut
    Bonsoir,

    C'est sûr que si vous ne transmettez pas les bonnes valeurs la requête va beaucoup moins bien marché

    C'est donc plus un problème php ou javascript. Ceci dit peut être qu'un str_replace(' ','+',$prestations) suffira.
    Attention, si vous le mettez au niveau de la requête vous allez obtenir 'convoyage+VN' pour l'autre cas donc à vous de remplacer quand c'est nécessaire.
    Si c'est plus complexe vous pouvez poster sur le forum php.

    Par contre niveau sql quelque chose me dérange : vous faîtes un like sans le mot clé %, ce qui revient à faire un égal (il me semble).
    Donc tout dépend ce que vous devez obtenir soit 'recpt+envoy' ne doit vous renvoyer que des 'recpt+envoy' exactement dans ce cas = ,
    sinon utilisez LIKE avec un % à gauche, à droite ou de part et d'autre en fonction de la comparaison souhaitée.

    Mais peut être que le LIKE n'était qu'un test pour tenter de résoudre le problème du +.

  6. #6
    Membre éclairé Avatar de Z3phur
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2007
    Messages
    680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2007
    Messages : 680
    Points : 807
    Points
    807
    Par défaut
    c'est pour cela que je demandais quelle SGBDR car il manquait le % pour moi.

  7. #7
    Membre régulier
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2007
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2007
    Messages : 179
    Points : 97
    Points
    97
    Par défaut
    bonjour,

    voici les paramètres passer dans mon formulaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    http://127.0.0.1/intra/facture/trait_rem.php?prestations=%20ENLVT%20VN+STOCKAGE+LIVRAISON
    on voit bien que les signes plus sont bien passés

    et voici ce qui s'affiche quand je fais un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      <? echo "<th align=\"left\">$prestations</th>"; ?>
    Images attachées Images attachées  

  8. #8
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 950
    Points : 5 849
    Points
    5 849
    Par défaut
    Vous pouvez peut être essayer en passant plusieurs paramêtres :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://127.0.0.1/intra/facture/trait_rem.php?prestations1=ENLVT&prestations2=VN&prestations3=STOCKAGE&prestations4=LIVRAISON
    puis concaténer les paramêtres en insérant les +, mais je ne sais pas comment est fait votre formulaire.
    En tout cas c'est définitivement un problème php.

  9. #9
    Membre émérite Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Points : 2 845
    Points
    2 845
    Par défaut
    Salut !

    Je rejoins Z3phur : avec like, mettre %. Sinon, like ne sert à rien...
    Ensuite, teste quand même la requête avec la valeur en dur, pour vérifier que tu t'es pas planté quelque part en récupérant le paramètre (par exemple sur la casse, les espaces, ...)

  10. #10
    Membre régulier
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2007
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2007
    Messages : 179
    Points : 97
    Points
    97
    Par défaut PB resolu
    bonjour,
    en fait le plus est pris comme une concatenation de caractéres donc il n'apparait
    plus aprés l'affectation de chaîne à la variable.
    il faut remplacer le signe plus par %2B qui est l'equi en hex
    ex
    $vartest2=str_replace('+','%2B',$vartest)

    est là on retrouve les plus dans la chaines

    merci à tous pour votre aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] requete avec LIKE
    Par hamham dans le forum Langage SQL
    Réponses: 6
    Dernier message: 10/01/2007, 15h22
  2. Requete avec LIKE et IN
    Par eowene dans le forum Langage SQL
    Réponses: 4
    Dernier message: 10/01/2007, 09h09
  3. Requete avec LIKE
    Par Eome dans le forum Langage SQL
    Réponses: 1
    Dernier message: 31/08/2006, 21h37
  4. oracle 8.1.7, CLOB et requete avec like
    Par fsapet dans le forum Oracle
    Réponses: 5
    Dernier message: 15/02/2005, 11h45
  5. Requete avec chaine de caractère commence par
    Par jazzes_dean dans le forum Langage SQL
    Réponses: 7
    Dernier message: 02/08/2004, 13h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo