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 :

Passage de mysql à mysqli et problème avec les accents [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Août 2007
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 32
    Par défaut Passage de mysql à mysqli et problème avec les accents
    Bonsoir,

    Vu obsolescence des l'instruction des mysql_connect, mysql_query etc ... à partir de la version Php 5.5.0 et sa non prise en compte en PHP 7, j'ai remplacé
    ces instruction par les équivalents en mysqli_connect, mysqli_query etc...

    J'ai un programme PHP de connexion à ma base de données et j'ai le problème suivant.

    Si mon user contient un accent je n'arrive pas à accéder à l'enregistrement de ma table "coureurs" et si le user ne contient pas d'accent j'arrive à l'afficher.
    Avec les instructions mysql tout fonctionne correctement.

    Mon code :

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    session_start();
     
    // Pour ne pas afficher le menu général lors de la connexion.
    $_SESSION['Accueil']      = '1';
     
    // Chargement de l'ensemble des fonctions et affichage du menu de navigation en fonction du type de profil 
    // utilisateur (admin ou non).
    require('FonctionsGenerales.php');
     
    /* $formulaire = champ caché vide lors du premier passage */
    /* vaut ok une fois formulaire validé */ 
    $Formulaire = $_POST['Formulaire'];
    $_SESSION['TopConnexion'] = '0';  /* Permet de savoir si un utilisteur est connecté ou non */
    $ErreurLogon = 0;
    // AfficheMessageJavaScript($Formulaire);
    if($Formulaire)
    {
    // Le formulaire a été renseigné on récupère les informations saisies
    $Pseudo      = $_POST["pseudo"];
    $MotPasse    = $_POST["MotDePasse"];
    // AfficheMessageJavaScript($MotPasse);
    if (!empty($Pseudo) || !empty($MotPasse))
    {
    // Connexion au serveur
    // ConnexionDB();
    list ($host, $user,$passwd,$bdd) = ConnexionDBSqli();
    $conn = mysqli_connect($host, $user,$passwd,$bdd);
    mysqli_query("set names utf8");
    if (!$conn) {
       echo "Erreur de connexion à la base de données" ;
       echo "Errno de débogage : " . mysqli_connect_errno() . PHP_EOL;
       echo "Erreur de débogage : " . mysqli_connect_error() . PHP_EOL;
       exit;
    }
    // Recherche du coureur dans la table des coureurs en fonction du pseudo et du mot de passe.
    $query = "SELECT * FROM coureurs WHERE Pseudo = '" . $Pseudo . "' and MotPasse = '" . $MotPasse . "'";
    // $result = mysql_query($query) or die(ErreurSql());
    // $row_cnt = mysql_num_rows($result);
    // AfficheMessageJavaScript($query);
    $result  = mysqli_query($conn,$query);
    $row_cnt = mysqli_num_rows($result);
    // if (mysqli_num_rows($result) <= 0)
    if ($row_cnt <= 0)
    {
    $ErreurLogon = 1;
    // mysql_close();
    AfficheMessageJavaScript("UTILISATEUR OU MOT DE PASSE INCORRECT");
    mysqli_close($conn);
    }
    Version de PHP : 5.6.25
    Version de PhpMyAdmin : 4.6.4
    Interclassement de ma table : coureurs latin1_general_ci

    Merci d'avance pour vos réponses.

    Cordialement.

  2. #2
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 511
    Par défaut
    Bonjour,

    Pour les accents avec mysqli c'est un peu compliquer, si je me rappel il faut modifier le jeu de caractère en "utf8" lors de la sélection, et en "latin1" lors de l'insertion en utilisant mysqli_set_charset.

  3. #3
    Membre averti
    Inscrit en
    Août 2007
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 32
    Par défaut Merci beaucoup
    Bonjour,

    J'ai utilisé l'instruction mysqli-set-charset($conn,"utf8"); et mon problème est réglé.

    J'y ai passé un temps fou sur ce problème.

    Merci beaucoup.

    Citation Envoyé par Toufik83 Voir le message
    Bonjour,

    Pour les accents avec mysqli c'est un peu compliquer, si je me rappel il faut modifier le jeu de caractère en "utf8" lors de la sélection, et en "latin1" lors de l'insertion en utilisant mysqli_set_charset.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 18/01/2007, 17h52
  2. AJAX : Problème avec les accents...
    Par @drien dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 29/01/2006, 14h33
  3. Petit problème avec les accents circonflexes...
    Par Harvester dans le forum Autres Logiciels
    Réponses: 8
    Dernier message: 29/11/2005, 18h44
  4. [HTML][Encodage] Problèmes avec les accents...
    Par eraim dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 26/05/2004, 10h11
  5. [JDBC] Problème avec les accents
    Par seawolfm dans le forum Administration
    Réponses: 2
    Dernier message: 29/01/2004, 14h56

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