JeuWeb - Crée ton jeu par navigateur
[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 Sad et j'arrive pas a trouver comment faire.


Code PHP :
<?php 
$itemquery
= doquery("SELECT * FROM {{table}} WHERE clan='".$userrow["kambaid"]."' ", "clanmag");
while(
$baserow = mysql_fetch_array($itemquery)){
if(
$baserow['id'] == $inv["id"] AND $baserow['clan'] == ""){
$update7 = doquery("INSERT INTO {{table}} SET id='".$inv["id"]."', name='".$inv["name"]."', clan='".$userrow["kambaid"]."', qté='1'", "clanmag");
}else{
$updatequery = doquery("UPDATE {{table}} SET qté='$new' WHERE id='".$inv["id"]."' AND clan ='".$userrow["kambaid"]."'", "clanmag");
}
}



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 Sad
le code que j'ai mis est le suivant :
Code PHP :
<?php 
$update7
= doquery("INSERT INTO rpg_clanmag SET id='',num='".$itemsrow4["id"]."', name='".$itemsrow4["name"]."', clan='".$userrow["kambaid"]."', qté='1' ON DUPLICATE KEY UPDATE qté='$new'");

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 Sad
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