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 :

Deux courtes questions sur Php et MySql [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    183
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 183
    Points : 66
    Points
    66
    Par défaut Deux courtes questions sur Php et MySql
    Bonjour à tous et meilleurs voeux pour cette nouvelle année.

    Juste 2 questions qui me travaillent :

    1 - Je suis en train de faire un site avec une Bdd sur MySql. J'ai des champs de texte et il me propose d'autorité du latin1_swedish_ci.
    Je viens de voir comment il traduit (il code) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    SELECT * 
    FROM `souscategories` 
    WHERE `categ` LIKE CONVERT( _utf8 'Pendules'
    USING latin1 ) 
    COLLATE latin1_swedish_ci
    AND `sousCateg` LIKE CONVERT( _utf8 'Cristal'
    USING latin1 ) 
    COLLATE latin1_swedish_ci
    LIMIT 0 , 30
    Moi je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    $query="SELECT * FROM sousCategories WHERE `categ` LIKE  '$categ' AND `sousCateg` = '$sousCateg'";
    $reponse = mysql_query($rquery, GetMyConnection());
     
    // là ou GetMyConnection(); est une fonction de contrôle d'accès à la Bdd.
    C'est une requète simple pourtant mais je me suis fait peur. C'est bien le bon langage ou il y a plus simple, quelque chose qui ne justifirait pas tout ce laïs ?

    2 - J'ai de nombreuses catégories et sous-catégories de paramétrées et déjà entrées en Bdd. Lorsque je fais une requète pour savoir si un produit y correspond, et qu'il n'y en a pas, à chaque mysql_num_rows il m'envoie un message d'erreur et s'arrète. Il y a-t-il un moyen de contourner le problème ?

    Merci de votre aide.

    Cordialement.

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Bonjour

    Personnellement, j'encode systématiquement mes bases de données en utf8_general_ci et mes pages web en utf8, comme ça j'évite les problèmes de caractères type é qui se promènent dans mes pages...
    Pour ta requête, je doute de pouvoir faire plus simple, tout en sachant que si l'encodage n'est pas le même des 2 côtés, tu risques de retomber dans le problème précédemment cité.

    En ce qui concerne tes mysql_num_rows, soit tu ne testes pas la bonne chose, soit tu as un problème. Mais là il va falloir un bout de code

  3. #3
    Membre confirmé Avatar de LeGilou
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 488
    Points : 531
    Points
    531
    Par défaut
    Bonjour et bonne année à toi,

    Si tu utilise LIKE en SQL, il faut que tu utilises des caractères génériques comme %
    Si tu mets LIKE 'truc', tu utilise une fonction couteuse alros que le = 'truc' serait beaucoup plus rapide.
    Donc soit tu utilises = 'truc', soit tu utilises LIKE '%truc%'

    Ensuite, tu peux ajouter @ devant les commandes pour masquer les messages d'erreurs.
    Cela dit, c'est plus propre et plus sûr de tester avant si il y a des résultats

    Derniere remarque, mysql_num_rows compte le nombre de résultats d'une requete SQL. Ca ne devrait pas envoyer d'erreur si il n'y a pas de résultat.

    Gillou

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    183
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 183
    Points : 66
    Points
    66
    Par défaut
    Merci de ta réponse.

    J'avais lu quelque part, un livre Php ou une doc technique que, parfois, pour des raisons qui m'échappent, un mysql-num-rows pouvait renvoyer une erreur si la base était vide. Mais qu'il y avait une astuce pour contourner le problème. En effet, si il y a une chose dont on soit sûr c'est qu'avant de la remplir, la bdd est vide...

    Et celui qui envoie une requète n'est pas obligatoirement celui qui entre les données.

    Cette astuce, je ne l'ai pas retenue car, sur le moment, je n'étais pas concerné, c'est toujours pareil...

    En second, pour le langage, il y aurait une doc la dessus ? J'ai cherché et ce que j'ai trouvé n'est pas très probant pour l'instant.

    Cordialement.

  5. #5
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    La doc php : http://fr.php.net/manual/fr/ et la doc mysql : http://dev.mysql.com/doc/mysql/fr/index.html

    Mais si tu nous donnes un bout de code, on pourra peut-être t'aider...

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    183
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 183
    Points : 66
    Points
    66
    Par défaut
    Merci pour ta réponse.

    Je suis allé consulter ces 2 longues docs mais, sur ce sujet là, c'est un peu bouché (ou alors c'est moi qui ait un petit esprit...).


    Pour ce qui concerne le code, tu l'as. Une requète que je ferais de façon simple et qui est 'traduite' différemment par MySql. Alors, quand j'ai une erreur, je me dis que cela vient peut-être de là...

    Bref, je deviens peut-être parano...

    Mais MySql propose toute une liste de langage. Il doit bien y en avoir un qui lui permettrait de 'causer français', non ?

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 343
    Points : 392
    Points
    392
    Par défaut
    oui ! table interclassement latin1_swedish_ci.
    au général
    language French fr-utf-8
    interclassement connexion utf8_general_ci
    jeux de caractère MySQL UTF-8 Unicode (utf8)
    et en php voir la doc utf8_encode/utf8_decode

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    183
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 183
    Points : 66
    Points
    66
    Par défaut
    Merci pour la réponse.

    J'ai noté le lien. Je vais aller voir ça.

    Pour l'encodage mysql, j'avais pas fait attention qu'il y avait ces 2 là. Je vais essayer.

    Merci encore.

    Cordialement.

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

Discussions similaires

  1. [SimpleXML] Question sur PHP
    Par JEE_JSE dans le forum Bibliothèques et frameworks
    Réponses: 8
    Dernier message: 17/10/2006, 20h45
  2. [Système] Deux questions sur PHP
    Par Oprichnik dans le forum Langage
    Réponses: 9
    Dernier message: 04/09/2006, 22h59
  3. Question sur les index mysql
    Par Cyrius dans le forum Requêtes
    Réponses: 4
    Dernier message: 08/08/2006, 22h25
  4. Question sur JDBC classe mysql
    Par oOoOuuhmAn dans le forum JDBC
    Réponses: 2
    Dernier message: 11/05/2006, 17h44

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