[Résolu] Ajouter une entrée ou la modifier si elle existe - Version imprimable +- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org) +-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38) +--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51) +--- Sujet : [Résolu] Ajouter une entrée ou la modifier si elle existe (/showthread.php?tid=2572) |
[Résolu] Ajouter une entrée ou la modifier si elle existe - fenix - 15-05-2008 Bonjour a tous voila je veut faire un marchand a qui si l'on vend un objet il s'ajoute a l'inventaire du marchand cette partie ci marche mais je veut que sa gere aussi la qte de marchandise il faut donc que si un joueur vend une marchandise cela creer l'entrer mais si quelqu'un en a deja vendu un cela modifie l'entrer. j'ai tenter avec ce code mais sa fait que rajouter des entrer et sa ne les modifie pas et j'arrive pas a trouver comment faire. Code PHP :
RE: ajouter une entrer a la bdd ou si elle existe la modifier - keke - 15-05-2008 Ben il me semble que ça fait l'inverse de ta demande ... si baserow[id] == inv[id] ça veut donc dire que l'objet existe, non ? donc, dans ce cas il faut faire un UPDATE. sinon, il faut recréer un champ. Je pense qu'il te faut chercher dans ce sens. Bonne journée à toi ! kéké. RE: ajouter une entrer a la bdd ou si elle existe la modifier - Sephi-Chan - 15-05-2008 Je te suggère de jeter un œil à MySQL AB - INSERT ON DUPLICATE KEY UPDATE, ça t'aidera peut-être. Sephi-Chan RE: ajouter une entrer a la bdd ou si elle existe la modifier - fenix - 15-05-2008 Merci sa devrai résoudre le pb RE: ajouter une entrer a la bdd ou si elle existe la modifier - Cartman34 - 15-05-2008 Personnellement je trouve ce systeme un peu simplet et c'est celui qu'on(euh je suis pas compris dans ce "on") utilise souvent... Je m'explique: Quérir une autre table implique forcément une nouvelle requete(voir plus...ce n'est qu'un minimum), or tu peux très bien obtenir l'inventaire en même temps que tu charges le joueur et enregistrer cela dans les données des joueurs... Sur ces dires, beaucoup se dise "on ne va pas créer un champs pour chaque objet quand même", et beh non c'est la qu'intervient le bon sens et les fonctions(ou les méthodes...POO WER) Un champs texte suffit ! En utilisant une fonction pour encoder ou sérializer un tableau(contenant ton inventaire), tu peux facilement l'enregistrer et l'extraire. Tu extrais, tu utilises tes petits objets(tes petites données) et tu ranges ton sac(ta bdd). Personnellement, je crois que c'est ce que je ferais mais ce cas je n'utilise pas sérialize, j'utilise des fonctions qui encode ca selon le shcéma suivant: "objet1,nombre1;objet2,nombre2;". Ceci est très pratique et économises les ressources de ton serveur. A toi de voir ton organisation et les optimisations possibles. RE: ajouter une entrer a la bdd ou si elle existe la modifier - fenix - 15-05-2008 tu veut dire extraire ensuite le tout avec un explode par exemple ? sinon ON DUPLICATE KEY UPDATE marche a moitier mais comme j'ai pas encore tout compirs je doit faire une belle erreur bete le code que j'ai mis est le suivant : Code PHP :
sa edite donc bien la quantite mais dans la meme entrer quelque soit l'objet et j'arrive pas a lu faire changer creer une nouvelle entrer si il y a un nouvel objet surtout que comme c'est un marchant specifique a chaque clan il doit prendre en compte si l'objet est deja la mais aussi si il vient du meme clan enfin bref je suis perdu dans tout sa |