Wiliwilliam | Sql => array php |
0 #1 |
---|---|---|
La loi c'est moi
Inscrit: 07/04/2012 19:19
Post(s): 38312
Karma: 19037 |
Bonjour bonsoir,
je tente actuellement de faire une chose: je crée un array en php, basique, array("1"=>1,"2"=>1,"3"=>0,"4"=>1,"5"=>0,"6"=>1,"7"=>0); Je stock en brut l'array dans un VARCHAR en SQL. Ensuite j'aimerais récupérer cette valeur et pouvoir la réutiliser sous forme d'array comme précédemment. J'ai regardé à gauche à droite sur le web, je suis tombé sur des fonctions de serialize, mais j'ai pas l'impression que ça me permette de récupérer exactement le même array. Du coup mes questions sont: est ce que c'est la bonne méthode pour stocker l'array dans la base de donnée? comment récupérer exactement le même array en php ensuite?
Contribution le : 16/03/2016 11:59
|
|
Signaler |
Arsenick | 0 #2 |
|
---|---|---|
J'aime glander ici
Inscrit: 13/12/2006 00:12
Post(s): 6502
Karma: 1045 |
@Wiliwilliam_
Tu peux le faire "à l'ancienne" : tu stock tes données en SQL sous forme de CSV => 1,1,0,1,0,1,0 dans ton exemple (sans les clés mais tu peux les ajouter). Lors du retour, tu joues avec strpos() et substr() pour découper ton CSV et Array_push() pour recrée ton tableau à l'identique. Mais pour moi c'est réinventé la roue parce que c'est à ça que sert serialize()/unserialize(). Tu peux aussi jouer avec les méthodes magique __Sleep() et __Wakeup() afin de contrôler ton Array avant le serialize() et après le unserialize(). Pour ce qui est du fond de la question et à mon sens (cela n'engage que moi), stocker un objet complet en DB n'est pas une bonne méthode car il est directement lier au langage et en limite la portabilité. Une bonne méthode (toujours à mon sens) est de ne stocker que les données en DB et de reconstruire l'objet à partir des données obtenues par requête DB.
Contribution le : 16/03/2016 12:22
|
|
Signaler |
Wiliwilliam | 0 #3 |
|
---|---|---|
La loi c'est moi
Inscrit: 07/04/2012 19:19
Post(s): 38312
Karma: 19037 |
@Arsenick je vais peut être t'en demander beaucoup, mais tu pourrais pas me faire un exemple d'aller/retour php->sql sql->php avec un array("1"=>0,"2"=>1) ?
je suis pas sur d'avoir bien compris le __sleep et __wakeup et surtout à quel moment ils interviennent. (pour le CSV j'avais regardé et je trouvais que ça nécessitait trop de ressources de transformer un array en CSV)
Contribution le : 16/03/2016 12:49
|
|
Signaler |
Invité | 0 #4 |
|
---|---|---|
FantômeInvité
|
Citation :
+1 T'as quoi comme contraintes ? Les tableaux que tu veux stocker ont toujours la même dimension ? T'auras toujours des couples clé-valeur, ou alors parfois t'as des valeurs nulles ou des valeurs sans clés ? Est-ce que tes clés sont toujours séquentielles (comme ton exemple) ?
Contribution le : 16/03/2016 12:53
|
|
Signaler |
Fichtre | 1 #5 |
|
---|---|---|
Je m'installe
Inscrit: 20/11/2014 19:41
Post(s): 144
|
Oh serieux vous allez chercher loin les gars !!
C'est quoi dans ton array? Dans tous les cas c'est idiot de stocker "array( 1=>..." dans une base de donnée... Faut que tu prennes les bases du php et que tu penses au plus simple et avec de la logique. explode
Donc en fonction de tes besoins, tu peux split via n'importe quelle chaine de caractère. j'ai choisi ", " mais ca peut etre "|" ou encore "toutetnimportequoi". Tu peux aussi serialize() tes données, mais si tu poses la question de comment faire, autant passer par un petit explode tout con. Tu as ta logique et cette fonction est le plus simple pour ce que tu demandes. Voila, ça fera un cookie.
Contribution le : 16/03/2016 13:07
|
|
Signaler |
Arsenick | 0 #6 |
|
---|---|---|
J'aime glander ici
Inscrit: 13/12/2006 00:12
Post(s): 6502
Karma: 1045 |
Citation :
serialize() et unserialize() Tu as des exemples clair dans la section exemple (oui je suis une feignasse :D), normalement ça devrait aller Citation :
En fait au moment où tu fait serialize(), php va comme un grand regarder si l'objet à une fonction __sleep(), si c'est le cas, il l'exécute avant et pareille pour __awake() qui est exécuter juste après unserialize(). Mais c'est utiliser sur les objets maison ou sur un héritage d'un objet php. Citation :
Logique, un fonction custom prend toujours plus de ressource que la même fonction intégrée au langage/framework @Fichtre Tiens je connaissais pas explode(), j'irai me coucher moins con . Par contre la base de php faut quand même se méfier, il traîne de fameuse casserole et le typage faible est loin d'être une sinécure :lol:
Contribution le : 16/03/2016 13:13
|
|
Signaler |
Fichtre | 0 #7 |
|
---|---|---|
Je m'installe
Inscrit: 20/11/2014 19:41
Post(s): 144
|
Citation :
@Fichtre Tiens je connaissais pas explode(), j'irai me coucher moins con . Le soucis de beaucoup de programmeur ! La simplicité est souvent omise pour paraître plus "pro". Perso je dev des plugins jquery et boss en dev freelance également. Quand je vois le boulot de certain qu'on me fait reprendre, je me dis que dans leur tete, c'est compliqué XD
Contribution le : 16/03/2016 13:27
|
|
Signaler |
Arsenick | 1 #8 |
|
---|---|---|
J'aime glander ici
Inscrit: 13/12/2006 00:12
Post(s): 6502
Karma: 1045 |
@Fichtre Pour ma part c'est surtout une méconnaissance de la base (je suis dev .Net à l'origine puis j'ai fait du VB6, du C, du COBOL, du Java, du Javascript et du PHP) et parfois certaine fonction peu utilisée passe à la trappe, problème de généraliste .
Sinon question simplicité, pour ma part je très KISS(enfin j’essaye ). et parce que je ne pouvais décemment pas ne pas faire la blague à 2€:
Contribution le : 16/03/2016 13:30
|
|
Signaler |
Invité | 0 #9 |
|
---|---|---|
FantômeInvité
|
@Arsenick Je connaissais pas ce "KISS" (juste "KIS" :p)... J'suis plutôt favorable à l'extrême inverse : une complexification telle que tout paraît simple à la fin (conception et réalisation), mais j'embrasse le principe d'écarter la complexité lorsqu'elle est inutile.
Contribution le : 16/03/2016 13:46
|
|
Signaler |
Nyark_Nyark | 0 #10 |
|
---|---|---|
Je masterise !
Inscrit: 29/01/2015 14:41
Post(s): 2909
Karma: 1830 |
@Fichtre
Vu que tu utilises "explode" pour refaire ton array, pourquoi tu n'utilises pas "implode" pour le passer en string (au début) au lieu de ta boucle foreach ? Sinon, par rapport à la question de départ, vu que les clés ont l'air d'avoir leur importance (on commence à 1 et pas à 0) il me semble que le plus simple et le plus approprié est en effet "serialize" / "unserialize".
Contribution le : 16/03/2016 13:48
|
|
Signaler |
Arsenick | 0 #11 |
|
---|---|---|
J'aime glander ici
Inscrit: 13/12/2006 00:12
Post(s): 6502
Karma: 1045 |
@Kevsler heuuu comment tu peux complexifier les choses au point de les rendre simple? Oo
Tu serais pas ingénieur toi? "Si une chose est simple c'est qu'elle n'a pas encore assez de fonctionnalité!" :lol:
Contribution le : 16/03/2016 13:48
|
|
Signaler |
Fichtre | 0 #12 |
|
---|---|---|
Je m'installe
Inscrit: 20/11/2014 19:41
Post(s): 144
|
@Nyark_Nyark Bah voila, prit a mon propre jeu
@Arsenick Mais tellement pour le KISS ! Et j'approuve la blague, t'inquiete:p #humourdemerde
Contribution le : 16/03/2016 13:51
|
|
Signaler |
Invité | 0 #13 |
|
---|---|---|
FantômeInvité
|
@Arsenick Je privilégie le TDD pour l'évolutif de mon code. Ça m'donne souvent des usines à gaz mais... mais j'en retire une bonne robustesse (j'ai pas encore le niveau pour faire du robuste absolu en TDD) et une sorte de grande lucidité vis-à-vis de mon produit et d'mon code. Ça c'est pour la conception, quand j'en viens à coder dans les couches basses de mon architecture j'essaye de faire le plus simple possible, sans inventer la poudre, comme t'as dis.
Un collègue m'avait filé ça (Object on Rails) et ça a quelque peu changé ma façon de coder. Bon, après... j'bosse en Ruby... on se demande rarement comment on fait quelque chose, en Ruby, il y a toujours une méthode ou un crypto-opérateur chelou pour faire les choses très simplement:p EDIT : En gros, ouais, j'essaye de me faire passer pour un ingénieur xD
Contribution le : 16/03/2016 14:03
|
|
Signaler |
Wiliwilliam | 0 #14 |
|
---|---|---|
La loi c'est moi
Inscrit: 07/04/2012 19:19
Post(s): 38312
Karma: 19037 |
j'ai jamais parlé de foreach et d'explode, je veux justement ne pas avoir à faire ça.
Contribution le : 16/03/2016 14:04
|
|
_________________
>> Récompenses si tu passes en article << |
||
Signaler |
Arsenick | 0 #15 |
|
---|---|---|
J'aime glander ici
Inscrit: 13/12/2006 00:12
Post(s): 6502
Karma: 1045 |
Citation :
Heuu normalement le TDD est prévu pour éviter les usines à gaz :gratte: mais j'avoue n'avoir jamais toucher au Ruby enfin je prévois de me mettre au RoR bientôt ^^. @Wiliwilliam_ Au risque de paraître désagréable, c'est pas possible: soit tu utilises serialize()/unserialize() soit implode()/explode() soit tu changes de méthode. Perso je te conseil de changer de méthode et de ne stocker que les valeurs en DB et de construire ton Array sur base d'une requête DB.
Contribution le : 16/03/2016 14:15
|
|
Signaler |
Invité | 0 #16 |
|
---|---|---|
FantômeInvité
|
@Arsenick Quand j'dis usine à gaz, c'est un juste gros gros gros paquet de code.
Et pour RoR : tu fais bien, c'est l'avenir:p Le framework et le langage sont tellement jouissifs ! Tu vas t'éclater ^^
Contribution le : 16/03/2016 14:18
|
|
Signaler |
Arsenick | 0 #17 |
|
---|---|---|
J'aime glander ici
Inscrit: 13/12/2006 00:12
Post(s): 6502
Karma: 1045 |
Citation :
Ha oui dans ce sens la Ok ^^. Citation :
Ho mais tu sais je suis un grand malade, la je suis en train de dev un site PHP en MVC sans aucun framework (que ce soit php ou html) ^^. parce que comme ça je sais exactement ce qu'il faut faire et le jour où je mets un framework par dessus je maîtriserai mieux le langage de base
Contribution le : 16/03/2016 14:21
|
|
Signaler |
Invité | 0 #18 |
|
---|---|---|
FantômeInvité
|
@Arsenick En effet... Moi je fuis, dans ces cas-là x)
Contribution le : 16/03/2016 14:22
|
|
Signaler |
Arsenick | 0 #19 |
|
---|---|---|
J'aime glander ici
Inscrit: 13/12/2006 00:12
Post(s): 6502
Karma: 1045 |
L'apprentissage dans la douleur...ho oui plante encore!
Contribution le : 16/03/2016 14:26
|
|
Signaler |
Fichtre | 0 #20 |
|
---|---|---|
Je m'installe
Inscrit: 20/11/2014 19:41
Post(s): 144
|
Citation :
... Pourquoi ? Non sérieusement, le problème de TOUS les gars qui demandent de l'aide. Manque d'infos, de conditions, de contenue, place des extraits de code, je sais pas moi. Mais t'as jamais parlé de foreach et d'explode: J'ai envie de dire, normal? Vu que tu demande de l'aide. La clairement on capte pas ou est ton soucis du coup. Puis des clés ça se change hein. Si tu veux faire ça en php (vu que c'est dans le titre) je vois pas ou est le soucis de pas utiliser des fonctions toute faite pour faire exactement ce que tu veux. Si ta question avait été posé sur stack, t'aurai direct été downvote et ignoré XD Les framework c'est le mal !
Contribution le : 16/03/2016 15:09
|
|
Signaler |