Générer nombre à partir de texte et inversement

Générer nombre à partir de texte et inversement - PHP - Programmation

Marsh Posté le 17-03-2009 à 19:28:03    

Bonjour,
 
j'ai comme donnée une chaine de caractères (par exemple 'sdfjskdfjksdf');
je voudrais générer à partir de cela un entier, tout en voulant pouvoir retrouver la chaine initiale. En PHP.
 
Est-ce possible, qu'en pensez-vous ?
 
Résumé :
'sdksdkksdkkl' => 12344877 => 'sdksdkksdkkl'

Reply

Marsh Posté le 17-03-2009 à 19:28:03   

Reply

Marsh Posté le 17-03-2009 à 23:30:00    

possible probablement, en inventant un codage perso.
Intéressant à faire et à utiliser, probablement pas, par contre.[:joce]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 18-03-2009 à 09:37:37    

___ a écrit :

Bonjour,
 
j'ai comme donnée une chaine de caractères (par exemple 'sdfjskdfjksdf');
je voudrais générer à partir de cela un entier, tout en voulant pouvoir retrouver la chaine initiale. En PHP.
 
Est-ce possible, qu'en pensez-vous ?


Oui.
Exemple au hasard  :ange:  :

Code :
  1. A <=> 65
  2. B <=> 66
  3. ...
  4. Z <=> 90


Voilà, on a répondu à ta question ?
Merci de mettre le sujet en [Résolu]  :D

Reply

Marsh Posté le 18-03-2009 à 09:45:43    

Comme l'a précisé skeye, c'est du codage. Tu peux choisir d'utiliser un code existant, ou d'en inventer un.


---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
Reply

Marsh Posté le 18-03-2009 à 10:05:15    

Reply

Marsh Posté le 18-03-2009 à 10:37:53    


 
Ça ne fait pas ce qu'il demande ça ...


---------------
Gamertag: CoteBlack YeLL
Reply

Marsh Posté le 18-03-2009 à 12:32:39    


 
Merci,
 
en effet j'avais pensé à faire un codage perso mais j'ai eu la même réflexion, "Intéressant à faire et à utiliser, probablement pas" ;-)
 
Et je me suis dit qu'il existait peut être des fonctions qui font ce genre de choses et que je ne connais pas.
 
On dit aussi que ça sert à rien de réinventer la roue, alors je demande vos connaissances.

Reply

Marsh Posté le 18-03-2009 à 13:55:47    

Nos connaissances on veut bien les partager, mais il faudrait que tu nous expliques quel était le but initial peut-être si tu veux qu'on te suggère une autre solution...:D

Message cité 2 fois
Message édité par skeye le 18-03-2009 à 14:15:11

---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 18-03-2009 à 14:04:22    

C'est pour faire du cryptage d'infos?


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 18-03-2009 à 14:09:41    

skeye a écrit :

Nos connaissances on veut bien les partager, mais il faudrait que tu nous explique quel était le but initial peut-être si tu veux qu'on te suggère une autre solution...:D


 [:plusun]

Reply

Marsh Posté le 18-03-2009 à 14:09:41   

Reply

Marsh Posté le 18-03-2009 à 16:18:54    

skeye a écrit :

Nos connaissances on veut bien les partager, mais il faudrait que tu nous expliques quel était le but initial peut-être si tu veux qu'on te suggère une autre solution...:D


Bonne remarque.
 
C'est pour faire du cryptage d'infos? => c'est pas mon but mais ca y ressemble.
 
Alors mon but c'est d'avoir un code 'zefzefzefzef' (bon ça vous le savez) et de pouvoir le faire correspondre à un enregistrement dans une BD mysql;
Ce code correspond à un entier (trouvé avec ma fonction magique) ce qui me permettrait de faire un recherche sur un INT et non un VARCHAR donc plus rapide.
Et inversement à partir de ma base retrouver le code.
 
Je fais cela pour ne pas donner directement un entier (ni l'id) à l'utilisateur final.
 
J'espère que vous m'avez suivis !

Reply

Marsh Posté le 18-03-2009 à 16:22:26    

___ a écrit :


Bonne remarque.
 
C'est pour faire du cryptage d'infos? => c'est pas mon but mais ca y ressemble.
 
Alors mon but c'est d'avoir un code 'zefzefzefzef' (bon ça vous le savez) et de pouvoir le faire correspondre à un enregistrement dans une BD mysql;
Ce code correspond à un entier (trouvé avec ma fonction magique) ce qui me permettrait de faire un recherche sur un INT et non un VARCHAR donc plus rapide.
Et inversement à partir de ma base retrouver le code.
 
Je fais cela pour ne pas donner directement un entier (ni l'id) à l'utilisateur final.
 
J'espère que vous m'avez suivis !


 
si c'est juste pour accélérer la recherche sur un champ varchar, il y a les indexes, pour ça.[:pingouino]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 18-03-2009 à 16:31:49    

___ a écrit :


Bonne remarque.
 
C'est pour faire du cryptage d'infos? => c'est pas mon but mais ca y ressemble.
 
Alors mon but c'est d'avoir un code 'zefzefzefzef' (bon ça vous le savez) et de pouvoir le faire correspondre à un enregistrement dans une BD mysql;
Ce code correspond à un entier (trouvé avec ma fonction magique) ce qui me permettrait de faire un recherche sur un INT et non un VARCHAR donc plus rapide.
Et inversement à partir de ma base retrouver le code.
 
Je fais cela pour ne pas donner directement un entier (ni l'id) à l'utilisateur final.
 
J'espère que vous m'avez suivis !


Si simple et si efficace !  :love:  
Et personne n'y a pensé avant ?!  
 
quelques remarques, quand-même...
- Pourquoi une recherche sur un INT serait-elle plus rapide que sur un VARCHAR ?
- Un index, ça n'irait pas ?
- tu as pensé à comparer le temps (hypothétiquement) économisé par ton système avec le temps (sûrement) dépensé pour passer ta fonction ?

Reply

Marsh Posté le 18-03-2009 à 17:18:36    

Ce topic est surréaliste

 

[:rofl]


Message édité par Dj YeLL le 18-03-2009 à 17:18:52

---------------
Gamertag: CoteBlack YeLL
Reply

Marsh Posté le 18-03-2009 à 18:32:54    

LOL je vous fais rire et tant mieux :-D
 
oui c'est vrai il y a les index... J'étais out sur ce point, pourquoi pas.
Mais sur une BD limitée en taille et beaucoup d'enregistrements, on gagne vite qq mégas. De plus mon VARCHAR prendrait 16/32 caractères (=>octets) comparé à un INT  (INT  4 octets), multiplié par des milliers d'enregistrements, la différence est vite grande.
 
tu as pensé à comparer le temps (hypothétiquement) économisé par ton système avec le temps (sûrement) dépensé pour passer ta fonction ? => à méditer...
 
Faut bien qu'il y en ait qui cherchent de nouveaux casses-têtes ;-)

Message cité 1 fois
Message édité par ___ le 18-03-2009 à 18:33:10
Reply

Marsh Posté le 18-03-2009 à 18:43:30    

___ a écrit :

De plus mon VARCHAR prendrait 16/32 caractères (=>octets) comparé à un INT  (INT  4 octets), multiplié par des milliers d'enregistrements, la différence est vite grande.


ah parce-qu'en plus il faut que ton algo de conversion varchar=>int soit un algo de compression? Tu fumes la moquette là hein, vraiment.


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 18-03-2009 à 18:46:59    

A une epoque j'ai recherché cela ..
Je cherchais à tagger des fichiers sur serveur avec descriptions pour permettre d'avoir des recherche rapides ( en php ou shell )
cela en modifiant les date de création des fichiers .. useless vu que le format timestamp est limité sur sa longueur
:(:(


Message édité par grosbin le 18-03-2009 à 18:47:37

---------------
Photos Panoramiques Montagnes Haute Savoie
Reply

Marsh Posté le 18-03-2009 à 18:58:12    

ça me fait penser un peu à du hash son "accélération" de recherche. Pour ça, y'a le md5, par ex.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 18-03-2009 à 19:05:24    

skeye a écrit :


ah parce-qu'en plus il faut que ton algo de conversion varchar=>int soit un algo de compression? Tu fumes la moquette là hein, vraiment.


 
Non je compare les tailles mémoires si je mets un VARCHAR ou un INT dans ma BD. Par contre j'aimerais que ma fonction me fasse le café à 8h le matin.
 
 
J'ai pensé au md5 mais ce n'est que dans un sens... je voudrais pouvoir redonner le code à l'utilisateur à partir de l'entier.
 
J'en demande pas un peu trop ?
En tout cas j'apprécie vos propositions !

Reply

Marsh Posté le 18-03-2009 à 19:12:54    

Hummmmm CRC32 ??? retourne le checksum d'une chaine


---------------
Photos Panoramiques Montagnes Haute Savoie
Reply

Marsh Posté le 18-03-2009 à 19:56:19    

oui mais c'est comme md5 et sha1, on ne peut pas obtenir l'inverse !

Reply

Marsh Posté le 18-03-2009 à 20:00:30    

ben tu stockes les 2... le MD5 (indexé), et l'id qui correspond. Tu peux communiquer sur les 2 valeurs selon tes désirs
 
à moins que tu sois sévèrement limité en espace dans ta bdd.

Reply

Marsh Posté le 18-03-2009 à 20:16:46    

En ce qui me concerne, je n'ai toujours pas compris la finalité du truc :??:
 
En quoi c'est mieux de stocker un code de 32 octets, plutôt qu'un ID qui en ferait entre 1 et 7 octets environ ?


---------------
Gamertag: CoteBlack YeLL
Reply

Marsh Posté le 18-03-2009 à 20:55:49    

Citation :

ben tu stockes les 2... le MD5 (indexé), et l'id qui correspond[...]
à moins que tu sois sévèrement limité en espace dans ta bdd.


oui autant limiter !
 
Je souhaite fournir un code "chiffres et caractères" à un utilisateur, et pouvoir le retrouver dans ma BD avec l'entier correspondant;
ainsi on ne peut pas non plus deviner le code d'un autre utilisateur;
le tout en n'utilisant que peu d'espace mémoire en BD !

Message cité 1 fois
Message édité par ___ le 18-03-2009 à 20:58:29
Reply

Marsh Posté le 18-03-2009 à 22:19:02    

___ a écrit :

Citation :

ben tu stockes les 2... le MD5 (indexé), et l'id qui correspond[...]
à moins que tu sois sévèrement limité en espace dans ta bdd.


oui autant limiter !
 
Je souhaite fournir un code "chiffres et caractères" à un utilisateur, et pouvoir le retrouver dans ma BD avec l'entier correspondant;
ainsi on ne peut pas non plus deviner le code d'un autre utilisateur;
le tout en n'utilisant que peu d'espace mémoire en BD !


va droit au but : t'as combien d'espace mémoire disponible, et tu vises combien d'enregistrements ?

Reply

Marsh Posté le 18-03-2009 à 22:44:36    

Dur de quantifier, disons 25 Mo en BD (totalité, limitons donc l'éventuel index et les enregistrements à quelques mégas) et 1000 voire 100 000 ou plus d'enregistrements !

Reply

Marsh Posté le 19-03-2009 à 08:22:57    

Non mais arrêtez un peu les mecs, ça n'a aucun sens ce que vous essayez de faire là...la solution à son problème c'est de coller un index sur sa colonne, c'est tout.:o


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed