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

PHP & Base de données Discussion :

Formulaire Respect casse [Oracle]


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Inscrit en
    Décembre 2008
    Messages
    319
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 319
    Points : 89
    Points
    89
    Par défaut Formulaire Respect casse
    Bonjour,

    Voilà j ai un formulaire que les utilisateurs remplissent avec leur nom prenom ... quand il valide je vais via un select chercher certains champs dans ma base oracle et je leur affiche sous forme de tableau

    jusqu ici tout va bien mon problème c est que si la personne me mets sébastien et que dans la base il est indiqué comme sebastien (sans accent) il ne ressortira pas ...

    comment faire en sorte que lors de mon select la casse ne soit pas respecté

    voici le traitement de mon formulaire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    $tab=array_filter($_POST);
    unset($tab['ok']);
    			$cols = array();
    			foreach($tab as $key=>$val) 
    				{
    					$cols[] = "$key= '$val'";
    				}
    			$conditions=implode(' AND ',$cols);	
    			if ($conditions) $conditions="WHERE $conditions";
    			$query= "SELECT * FROM matable $conditions";
    			$statement = OCIParse($connexion,$query) or die ("Problème avec la requête");
    			OCIExecute ($statement,OCI_DEFAULT);
    			while (OCIFetchInto($statement, $row, OCI_ASSOC))
    				{
    					$nom=$row['nom'];
    					echo $nom;
    					....
    					....
    Merci de votre aide

  2. #2
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Enlèves les accents au besoin:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $texte = strtr($texte,
      '@ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
      'aAAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
    comment faire en sorte que lors de mon select la casse ne soit pas respecté
    La casse et l'accentuation sont deux choses différentes - la casse concerne la distinction entre majuscules et minuscules.
    Si la casse aussi pose problème, utilise strtolower ou strtoupper au besoin.

  3. #3
    Membre confirmé
    Avatar de kalimukti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2011
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2011
    Messages : 262
    Points : 451
    Points
    451
    Par défaut
    Bonjour,
    Citation Envoyé par stefanelle Voir le message
    comment faire en sorte que lors de mon select la casse ne soit pas respecté
    je suis pas un expert en Oracle (!) mais un translate par Oracle devrait te permettre cela, nan ?
    ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    translate(lower('%sé%'),'éèêë','eeee')
    My daughter, my laptop, my bike and my double-sticks...

  4. #4
    Membre régulier
    Inscrit en
    Décembre 2008
    Messages
    319
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 319
    Points : 89
    Points
    89
    Par défaut
    Merci pour vos réponses en fait c est les deux casse + accent

    j ai essayé CA

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    foreach($tab as $key=>$val) 
    				{
    				$val= strtr($val,'@ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ','aAAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
    					$cols[] = "$key= '$val'";
    				}
    sans succès :-(

  5. #5
    Membre régulier
    Inscrit en
    Décembre 2008
    Messages
    319
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 319
    Points : 89
    Points
    89
    Par défaut
    En fait mon souci c 'st que dans ma base je peux avoir tous les accents des majuscules des minuscules.

    Dans ma base Sébastien peut s'écrire sebastien Sebastien SEBASTIEN ...

    La fonction translate apparemment permet de remplacer donc si une personne tape sebastien et que ca me le remplace par sébastien grace a ma fonction translate il me ressortira que les sébastien et non les autres ....

    J espère être clair en gros faudrait qu il fasse un select dans la base en prenant en compte toutes les possibilités ... et qu'il me les renvoient dans mes rows ...

  6. #6
    Membre régulier
    Inscrit en
    Décembre 2008
    Messages
    319
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 319
    Points : 89
    Points
    89
    Par défaut
    Pour les majuscules c'est réglé en faisant ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    foreach($tab as $key=>$val) 
    				{
    					$cols[] = "UPPER($key) = UPPER('$val')";
    				}
    mais pour les accents ...

  7. #7
    Membre confirmé
    Avatar de kalimukti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2011
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2011
    Messages : 262
    Points : 451
    Points
    451
    Par défaut
    je vois pas de raison pour que la code donné plus haut pour strtr ne marche pas...
    peut-être n'as-tu pas essayé les deux ensembles ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    foreach($tab as $key=>$val) 
    {
          $val= strtr($val,'@ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ','aAAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
          $cols[] = "UPPER($key) = UPPER('$val')";
    }
    My daughter, my laptop, my bike and my double-sticks...

  8. #8
    Membre régulier
    Inscrit en
    Décembre 2008
    Messages
    319
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 319
    Points : 89
    Points
    89
    Par défaut
    Je viens de tester à nouveau avec la fonction strtr

    en fait si ça marche mais ça ne convient pas

    dans ma table j'ai une ligne avec le prénom sébastien et une ligne avec le prénom sebastien

    si je fais avec la fonction strtr il ne m'affiche que la ligne sebastien et pas celle avec l'accent alors que moi je souhaite les deux.

  9. #9
    Membre confirmé
    Avatar de kalimukti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2011
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2011
    Messages : 262
    Points : 451
    Points
    451
    Par défaut
    Citation Envoyé par stefanelle Voir le message
    si je fais avec la fonction strtr il ne m'affiche que la ligne sebastien et pas celle avec l'accent alors que moi je souhaite les deux.
    Ben là:
    tu doubles tes enregistrements de $val dans $col[] :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    foreach($tab as $key=>$val) 
    {
          $cols[] = "UPPER($key) = UPPER('$val')";
          $val= strtr($val,'@ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ','aAAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
          $cols[] = "UPPER($key) = UPPER('$val')";
    }
    par contre, il faut que tu mettes un OR qq part (dans ton code tu as que des AND)
    du coup, avec un truc du style:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    foreach($tab as $key=>$val) 
    {
          $valor= strtr($val,'@ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ','aAAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
          $cols[] = "(UPPER($key) = UPPER('$val') OR UPPER($key) = UPPER('$valor'))";
    }
    My daughter, my laptop, my bike and my double-sticks...

  10. #10
    Membre régulier
    Inscrit en
    Décembre 2008
    Messages
    319
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 319
    Points : 89
    Points
    89
    Par défaut
    C'est parfait c'est le résultat que je souhaite sauf .....

    que maintenant pour obtenir le résultat de ma requête je mets 25 secondes au lieu de 1 seconde ... c'est le UPPER qui ralentit tout .... y a t-il un moyen d'éviter cela ?

  11. #11
    Membre confirmé
    Avatar de kalimukti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2011
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2011
    Messages : 262
    Points : 451
    Points
    451
    Par défaut
    un strtoupper en php t'évite de demander ce travail-là à ton sgbd
    My daughter, my laptop, my bike and my double-sticks...

  12. #12
    Membre régulier
    Inscrit en
    Décembre 2008
    Messages
    319
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 319
    Points : 89
    Points
    89
    Par défaut
    ah vi j'avais pas pensé à ça :-)

    merci pour tout kalimukti

  13. #13
    Membre régulier
    Inscrit en
    Décembre 2008
    Messages
    319
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 319
    Points : 89
    Points
    89
    Par défaut
    bon pour info

    voilà ce que j'ai fait je me suis pris la tète mais ça marche et c'est rapide

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    foreach($tab as $key=>$valor) 
    				{
    					$valor1= strtr($valor,'@ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ','aAAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
    					$valor2=strtoupper($valor);
    					$valor3=strtoupper($valor1);
    					$valor4 = ucfirst($valor);
    					$valor5 = ucfirst($valor1);
    					$cols[] = "($key = '$valor' OR $key = '$valor1' OR $key = '$valor2' OR $key = '$valor3' OR $key = '$valor4' OR $key = '$valor5')";
    				}

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

Discussions similaires

  1. [MySQL] SQL - Respect de la casse
    Par didi78 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 08/08/2012, 11h14
  2. Select sans respecter la casse ?
    Par Thomad dans le forum SQL
    Réponses: 10
    Dernier message: 10/06/2008, 16h34
  3. sql server respecter la casse
    Par fally dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 06/02/2008, 10h48
  4. [URL Rewriting] variable $1 qui respecte la casse
    Par natsou_k dans le forum Apache
    Réponses: 6
    Dernier message: 12/10/2007, 16h02
  5. Respect de la casse
    Par jh0483 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 06/09/2005, 10h45

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