anpera.net
https://anpera.homeip.net/phpbb3/

Kleines, banales SQL Problem...
https://anpera.homeip.net/phpbb3/viewtopic.php?f=34&t=2121
Seite 1 von 1

Autor:  Morpheus [ So 15 Jan, 2006 05:18 ]
Betreff des Beitrags:  Kleines, banales SQL Problem...

Servus!

Meine Schwäche ist eindeutig SQL, daher eine Frage: wenn ich einem User ein Item weg nehmen will, dann benötige ich dazu eine SQL DEL Befehl, soviel weiß ich schon mal, doch, wie sieht der aus? Vielleicht so?

$this->bbcode_second_pass_code('', ' $sql="DELETE FROM items WHERE id=($item[name]=="Alte Flasche")";
db_query($sql);')

Ich vermute mal, daß eher nicht :pein: , daher folgendes:

Das Item, daß ich dem User weg nehmen will, steht fest, also keine Zufallsauswahl durch das Modul oder den User, ich will nur wissen, mit welchem Befehl mache ich das. Ich hab schon mal gesucht, hab auch einen Threat gefunden, in dem der Befehl erwähnt wird, aber nicht, wie er aussieht...
Betsen Dank schon mal für die Mühe :)

Autor:  anpera [ So 15 Jan, 2006 06:51 ]
Betreff des Beitrags: 

Also das Item ist bekannt und die Daten des Items stehen in einem Array mit der Bezeichnung $item ?

Wenn du das ganz bestimmte Item aus der Datenbank löschen willst:$this->bbcode_second_pass_code('', 'db_query("DELETE FROM items WHERE id={$item['id']}");')

Wenn du das Item dem User wegnehmen willst, ohne es aus der Datenbank zu löschen:$this->bbcode_second_pass_code('', 'db_query("UPDATE items SET owner=0 WHERE id={$item['id']}");')

Wenn du die fortlaufende Item-ID (id) nicht hast, oder die Daten des Items nicht vollständig bekannt sind, brauchst du ein paar zusätzliche Infos. Meine Annahmen fürs Beispiel:
Itemname: Alte Flasche
Besitzer: Der aktuelle Spieler
Itemklasse: Muell
ID dieses Items in der Datenbank: unbekannt$this->bbcode_second_pass_code('', 'db_query("DELETE FROM items WHERE class='Muell' AND name='Alte Flasche' AND owner={$session['user']['acctid']} LIMIT 1");')Wenn du alle alten Flaschen des Spielers löschen willst, lass das "LIMIT 1" weg.


Für ein Recyclingsystem (Itemklasse "Pfand") könntest du bei der Flaschenrückgabe folgendes auf die Datenbank loslassen:$this->bbcode_second_pass_code('', 'UPDATE items SET owner=0, name='Neue Flasche' WHERE class='Pfand' AND name='Alte Flasche' AND owner={$session['user']['acctid']}')Der Nachteil bei diesem System ist, dass die Anzahl der Flaschen entweder durch den Admin festgelegt ist (also jede Flasche von Hand erstellt werden muss), oder durch ein Script ständig wächst. Eine Alternative wäre es, mit Prototypen zu arbeiten, wie das bei Beute mit Beute.Prot der Fall ist... aber das ist schon wieder ne gaaaaanz andere Geschichte

Autor:  Morpheus [ So 15 Jan, 2006 08:29 ]
Betreff des Beitrags: 

:) Vielen Dank, ich will dem User tatsächlich nur eines der Beute Items weg nehmen, das als reguläres Item in der Liste steht. Weg nehmen wäre zuviel gesagt, er soll es benutzen, aber das wirst Du dann im fertigen Modul sehen... ;)

Seite 1 von 1 Alle Zeiten sind UTC + 1 Stunde
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/