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 :

[Tableaux] Problème d'opérateurs de bits


Sujet :

Langage PHP

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 1
    Points : 1
    Points
    1
    Par défaut [Tableaux] Problème d'opérateurs de bits
    Bonjour à tous.
    Pour gérer les droits sur un site, j'utilise les opérateurs de bits. Tout fonctionne jusqu'au moment où je dois déconnecter un visiteur. J'ai un champ OPTIONS de type VARBINARY. Ce champ contient plein... d'options : connecté/déconnecté, mâle/femelle, compte confirmé/pas confirmé, membre VIP/non VIP, etc. Comme vous l'aurez compris, chaque bit a une valeur de 0 ou 1. Exemple: 0010 Veut dire que le joueur n'est pas connecté, est un mâle, que son compte est confirmé, que ce n'est pas un membre VIP. Donc, lorsqu'il est connecté, on a : 1010
    Ensuite, pour le déconnecter, c'est-à-dire pour mettre la valeur 0 au premier bit, j'utilise l'opérateur ^. Ainsi, le résultat devrait être: 0010 Seulement voilà : lorsque j'update ma table, j'ai un (très) moche \0\0\0 au lieu du 0010 qu'il devrait y avoir. J'ai essayé de changer le type de champ, j'ai essayé plein de trucs, mais rien n'y fait... Quelqu'un aurait-il la solution?
    Merci d'avance
    Cordialement,
    tonypeter

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Février 2006
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Février 2006
    Messages : 134
    Points : 81
    Points
    81
    Par défaut
    bonjour.
    essaie de stocker tes binaires en entier:
    1010 = 9 , tu stockes 9.
    Pour transformer en 0010 tu dois faire :
    1010 (9) & 0111 (7) = 0010 (2)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    update table set val = val & 7 where ...
    ainsi ta valeur dans la base sera 2 qui correspond bien a 0010

  3. #3
    Membre confirmé Avatar de goodpz
    Profil pro
    Inscrit en
    Février 2007
    Messages
    475
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 475
    Points : 514
    Points
    514
    Par défaut
    En fait c'est normale que ça ne fonctionne pas comme tu le souhaiterais. Les champ BINARY de mysql ne sont pas fait pour recevoir des suites de 0 et de 1, mais des chaines de bytes (bytes strings). mysql pad automatiquement les champs avec \0 (soit 0x00)

    Le plus simple, c'est de faire comme t'a indiqué mikebranque: tu conserves des entiers ce qui ne t'empêche pas de les manipuler avec les bitwise operators coté mysql comme coté php

Discussions similaires

  1. Réponses: 12
    Dernier message: 11/04/2006, 11h41
  2. [Tableaux] Problème avec les boucles
    Par speed_man002 dans le forum Langage
    Réponses: 4
    Dernier message: 21/09/2005, 15h42
  3. [Tableaux] problème de concaténation
    Par ludovik dans le forum Langage
    Réponses: 3
    Dernier message: 13/09/2005, 13h24
  4. [Tableaux] problème avec while
    Par zimotep dans le forum Langage
    Réponses: 3
    Dernier message: 11/09/2005, 10h30
  5. [Tableaux] Problème avec Switch case
    Par philippef dans le forum Langage
    Réponses: 4
    Dernier message: 07/09/2005, 16h37

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