[SQL] Problème de varbinary

Répondre
tonypeter
le 03/03/2007 à 23:08
tonypeter
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
jocker
le 03/03/2007 à 23:19
jocker
salut,

tu pourrais nous montrer ton code PHP où tu mets à jour ton 0010 par exemple avec ^ et également ta requete SQL pour l'update.

Est ce que ce serait pas plus simple d'avoir 4 champs pour chaque truc. Ca pourrait te permettre de travaille plus simplement sur chaque champ. Certains me contrediront peut être mais avec le temps je me suis aperçu qu'il est bien plus facile de travailler lorsque les champs sont distincts. Tu sais jamais comment peut évoluer ton code. De plus là ca va pas te prendre beaucoup d'espace supplémentaire puisque les champs seront codés sur 1 octet (ENUM 0-1 ou alors tinyint même qui est sur 1 octet).

@++
tonypeter
le 03/03/2007 à 23:27
tonypeter
Salut,
Voici le code PHP qui pose problème :
$nouveau_options=($_SESSION['options'])^($config['autres']['connecte']);

//On met à jour le champ OPTIONS pour indiquer qu'il est déconnecté
$sql->requete("UPDATE membres SET OPTIONS='".$nouveau_options."' WHERE PSEUDO='".$_SESSION['pseudo']."'");
C'est aussi simple que celà...
Notez que $config est un array créé avec parse_ini_file (avec config.ini).
$config['autres']['connecte'] contient 1000
Sinon pour ta proposition : effectivement pour 4 options c'est inutile de faire tout ceci mais il y en aura beaucoup plus par la suite, ce n'est que le début...
Je pense qu'il y en aura au moins une vingtaine!
Merci de ta réponse
+
tonypeter
le 03/03/2007 à 23:28
tonypeter
$nouveau_options=($_SESSION['options'])^($config['autres']['connecte']);

//On met à jour le champ OPTIONS pour indiquer qu'il est déconnecté
$sql->requete("UPDATE membres SET OPTIONS='".$nouveau_options."' WHERE PSEUDO='".$_SESSION['pseudo']."'");
jocker
le 04/03/2007 à 21:05
jocker
là dsl c'est pas moi qui vais pouvoir t'aider je me sers jms de ^

@++
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours