|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
![]() ![]() ![]() Louis-Guillaume MORANDConsultant @ Microsoft Inscription : mars 2003 Messages : 10 713 ![]() |
J'ai pour un projet perso, besoin de créer une partie dite "bac à sable". Elle fonctionne avec toutes les fonctionnalités de base excepté que son accès à la base de données est interdit MAIS le module (ici une page) doit croire qu'il accède à la base de données.
Ma solution puisque dans ce cas précis, la DB se limite à une seule table, est de représenter cette table en mémoire et comme les actions sur cette table se font en AJAX, je pense donc que seule la session est valable. En gros Module <-> API AJAX <-> functions PHP <-> database et là, je voudrais un truc comme Module <-> API AJAX <-> functions PHP <-> array Maintenant, est-ce que l'array est l'objet le plus adapté? Puis-je espérer pouvoir éditer une des lignes de l'array sans trop de bidouillage (meme si je me doute qu'une boucle sera necessaire) et aussi, peut on supprimer une "ligne" d'un array, ou dois-je me contenter d'une valeur égale à '' (chaine vide)?
__________________
moi c'est Louis-Guillaume, ni Louis, ni Guillaume mais Louis-Guillaume et je n'aide pas ceux qui écorchent mon nom |
|
00
|
|
|
#2 |
|
Membre éclairé
![]() |
Sinon sous forme de fichiers:
Bien sur que tu peux mettre une chaine vide. Pour ton utilisation des tableaux, une bonne solution est d'utiliser des clés dans tes tableaux. Tu peux associer une clé à un tableau par exemple. On peut imaginer qu'une clé du tableau est un id unique, comme dans une base réelle. |
|
|
00
|
|
|
#3 | ||
![]() ![]() ![]() Louis-Guillaume MORANDConsultant @ Microsoft Inscription : mars 2003 Messages : 10 713 ![]() |
En fait ce seront des données gardées en mémoire le temps de tester le module donc j'aimerai éviter les fichiers plats car je suis pas sûr que j'y gagne vraiment à tout écrire pour tout relire puis parser pour trouver ma donnée
supposons que ma table est normalement composée d'une PK disons id et de 6 champs string le code suivant est-il correct Code :
ma question est alors, la deuxième ligne, ajoute-elle la clé (et son tableau), ou réinitialise le tableau avec uniquement cette "ligne"?
__________________
moi c'est Louis-Guillaume, ni Louis, ni Guillaume mais Louis-Guillaume et je n'aide pas ceux qui écorchent mon nom |
||
|
00
|
|
|
#4 |
|
Membre éclairé
![]() |
Réinitialise.
De tete pour ajouter tu peux faire $donnees[] = ($id=>$array); Sinon pourquoi tu met ton $id dans $array ? |
|
|
00
|
|
|
#5 |
![]() ![]() ![]() Louis-Guillaume MORANDConsultant @ Microsoft Inscription : mars 2003 Messages : 10 713 ![]() |
pourquoi? mais j'en sais rien :p
par contre, si je connais l'id, je peux extraire le tableau et ne travailler que sur ce tableau 'inférieur' sans avoir rien à faire de la clé du tableau supérieur. ainsi je peux passer ce tableau en parametre à une fonction et toujours avoir l'id à porter de main, surtout si un jour je me décidé à "sérialiser" le tableau en xml pour le transmettre à ma couche AJAX. bon bah je vais essayer tout cela. merci bcp
__________________
moi c'est Louis-Guillaume, ni Louis, ni Guillaume mais Louis-Guillaume et je n'aide pas ceux qui écorchent mon nom |
|
00
|
|
|
#6 |
|
Membre éclairé
![]() |
Je te pose cette question pour savoir si tu en as vraiment besoin et ne pas faire de duplication de données.
Mais de rien :p |
|
|
00
|
|
|
#7 | ||||||
![]() ![]() ![]() Louis-Guillaume MORANDConsultant @ Microsoft Inscription : mars 2003 Messages : 10 713 ![]() |
ouah la galère pour obtenir ce que je voulais. j'ai pas trop compris comment marche les tableaux en php, c'est jamais de la même facon et les exemples de php.net marchent pas chez moi :/
je suis donc resté sur des array simples sans clés, accroché à une clé et cette clé est un integer. Maintenant voilà comment j'insere Code :
Bref, tout va bien jusqu'à ce que j'attaque la suppression de "ligne" imaginons que j'ai des tableaux dans chaque cellule de 1 à 10. j'aimerai supprimer $table[5]; j'ai vu sur le net que null c'est mal et unset, c'est bien donc je fais unset($table[5]); et là...c'est le drame ca vide ma ligne mais donc mon count du début ne marche plus puisqu'il compte un enregistrement de moins. je me suis dit, tente à avec sizeof($table) et bien bizarrement ca me sort la même chose Code :
Code :
je cherche un moyen d'avoir la "clé" maximum si vous préférez mais le plus simplement possible. me trompe-je quelque part?
__________________
moi c'est Louis-Guillaume, ni Louis, ni Guillaume mais Louis-Guillaume et je n'aide pas ceux qui écorchent mon nom |
||||||
|
00
|
|
|
#8 |
|
En attente de confirmation mail
![]() Inscription : juin 2002 Messages : 6 164 ![]() |
Pour information tu peux empiler/dépiler tes éléments : array_shift/array_unshift (en début) et array_push/array_pop (à la fin).
Ta variable $cnt ne doit pas être à jour donc autant s'en passer : Ce qui revient finalement à la fonction array_pop. C'était bien la question Note : sizeof est un alias de la fonction count. |
|
|
00
|
|
|
#9 |
![]() ![]() ![]() Louis-Guillaume MORANDConsultant @ Microsoft Inscription : mars 2003 Messages : 10 713 ![]() |
en fait, je pense pas que pop ou push m'aident car si j'insère à la fin j'ai quand meme besoin de savoir cette position car je retourne cette position à ma couche AJAX. donc insérer à la fin ne suffit pas.
tout marche à merveille sauf si je fais un unset d'un des éléments car à ce moment là, les méthodes retournent le nombre d'éléments et moi je veux la longueur du truc. disons que je m'attendais à avoir $table[0] => plein .... $table[5] => vide $table[6] => plein $table[9] ==> plein mais donc une longueur toujours égale à 10. J'ai pas envie de boucler sur mon tableau et incrémenter un compteur dès que l'élément est différent de null. y a sûrement plus propre
__________________
moi c'est Louis-Guillaume, ni Louis, ni Guillaume mais Louis-Guillaume et je n'aide pas ceux qui écorchent mon nom |
|
00
|
|
|
#10 | |
![]() ![]() Inscription : juin 2003 Messages : 4 893 ![]() |
Citation:
en ce qui concerne l'histoire de la clé primaire, je sais que MySQL garde dans les informations de la table, un variable "prochaine clé primaire". Et donc il ne relis pas toute la table au moment de faire un "INSERT"
__________________
Modérateur PHP |
|
|
|
00
|
|
|
#11 |
![]() ![]() ![]() Louis-Guillaume MORANDConsultant @ Microsoft Inscription : mars 2003 Messages : 10 713 ![]() |
oui c'est les sessions mais je n'ai pas besoin de gérer les fichiers. là quand j'appelle mon script php, je charge la variable de session, je fais mes modifs et pouf je la refous dedans, avant de retourner des données à ma couche ajax
pour ta deuxieme phrase, c'est la commande inserted_id() (un truc du genre) mais là je veux me passer totalement de base de données. je veux une sandbox avec juste un tableau de tableaux mais c'est plus compliqué que prévu (quoi que, puisqu'a part la suppression, le reste marche à merveille)
__________________
moi c'est Louis-Guillaume, ni Louis, ni Guillaume mais Louis-Guillaume et je n'aide pas ceux qui écorchent mon nom |
|
00
|
|
|
#12 | ||
![]() ![]() Inscription : juin 2003 Messages : 4 893 ![]() |
Citation:
tu as raison d'utiliser directement les sessions, tout est automatisé Citation:
__________________
Modérateur PHP |
||
|
|
00
|
|
|
#13 | |
![]() ![]() ![]() Louis-Guillaume MORANDConsultant @ Microsoft Inscription : mars 2003 Messages : 10 713 ![]() |
Citation:
merci edit: bon bah ca marche parfaitement et c'est extrêmement rapide par rapport à une DB (bon ok y a moins de données
__________________
moi c'est Louis-Guillaume, ni Louis, ni Guillaume mais Louis-Guillaume et je n'aide pas ceux qui écorchent mon nom |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com