anpera.net
https://anpera.dyndns.org/phpbb3/

Item-Probleme
https://anpera.dyndns.org/phpbb3/viewtopic.php?f=34&t=3431
Seite 1 von 1

Autor:  Erinyen [ Mo 05 Mär, 2007 21:13 ]
Betreff des Beitrags:  Item-Probleme

Hallo zusammen,

ich hab folgendes Prob: bei einem neuen Laden, werden alle Items mit einer Benutzer-ID versehen, wenn sie gekauft werden. Also sie können nur einmal gekauft werden von einer Person. Wie krieg ich das hin, dass jeder die Gegenstände beliebig oft kaufen kann?

Hier der Code:
[php]<?php
// Amroth der Krämer
// http://www.fargoth.de
// Idee: Belkelel
// Umsetzung und Modifikation: Erinyen
// Base: Aeki der Wanderhändler

require_once "common.php";
page_header("`+Amroth`qs Krämerladen");

if ($_GET['op']=="buy")
{
if (!$_GET['id'])
{
$sorti=($_GET['sorti']?"$_GET[sorti]":"class DESC, name");
output("`qDu betrittst das große große Krämerladen, in dem dich gleich ein kleiner leicht genervter Zwerg namens `+Amroth`qbegrüßt und dir versucht gleich ein paar Kleinigkeiten aufzuschwatzen, die dir stark überteuert erscheinen und du dich erst einmal in ruhe in seinem Geschäft umzusehen beginnst… ");


$ppp=25;

if (!$_GET['limit'])
{
$page=0;
}else
{
$page=(int)$_GET['limit'];
addnav("Vorherige Waren","kraemer.php?op=buy&sorti=$sorti&limit=".($page-1));
}
$limit="".($page*$ppp).",".($ppp+1);

$sql="SELECT * FROM items WHERE owner=0 AND kraemer = 1 ORDER BY $sorti ASC LIMIT $limit";
$result=db_query($sql);
if (db_num_rows($result)>$ppp) addnav("Mehr Waren","kraemer.php?op=buy&sorti=$sorti&limit=".($page+1));
if (db_num_rows($result))
{
output("<table border = '0' cellpadding='2' cellspacing='2'>",true);
output("<tr class='trhead'><td>`b<a href='kraemer.php?op=buy&sorti=name&limit={$_GET['limit']}'>Name</a>`b</td><td>`b<a href='kraemer.php?op=buy&sorti=".urlencode("gems ASC,gold")."&limit=$_GET[limit]'>Preis</a>`b</td><td>`b<a href='kraemer.php?op=buy&sorti=".urlencode("class DESC,name")."&limit=$_GET[limit]'>Klasse</a>`b</td></tr>",true);
addnav("","kraemer.php?op=buy&sorti=name&limit={$_GET['limit']}");
addnav("","kraemer.php?op=buy&sorti=".urlencode("gems ASC,gold")."&limit={$_GET['limit']}");
addnav("","kraemer.php?op=buy&sorti=".urlencode("class DESC,name")."&limit={$_GET['limit']}");
for ($i=0;$i<db_num_rows($result);$i++)
{
$row = db_fetch_assoc($result);
$bgcolor=($i%2==1?"trlight":"trdark");
output("<tr class='$bgcolor'><td><a href='kraemer.php?op=buy&id=$row[id]'>$row[name]</a></td><td align='right'>`^$row[gold]`0 Gold, `#$row[gems]`0 Edelsteine</td><td>{$row['class']}</td></tr><tr class='$bgcolor'><td colspan='3'>$row[description]</td></tr>",true);
addnav("","kraemer.php?op=buy&id={$row['id']}");
}
output("</table>",true);

}
else
{
output("`+Amroth`qhat heute schon ein gutes Geschäft gemacht hat, will er sich leider nicht von seinen verbliebenen Sachen trennen. Enttäuscht schlenderst du zurück zum Dorfplatz.");
}
}
else
{
$sql="SELECT * FROM items WHERE id={$_GET['id']}";
$result=db_query($sql);
$row = db_fetch_assoc($result);
if ($session['user']['gems']<$row['gems'] || $session['user']['gold']<$row['gold'])
{
output("`qDas kannst du dir nicht leisten. `+Amroth`q schüttelt nur traurig den Kopf und verstaut $row[name] wieder in einem der Regale.");
addnav("Weiter umschauen","kraemer.php?op=buy");
}
else if (db_num_rows(db_query("SELECT id FROM items WHERE name='$row[name]' AND owner=".$session['user']['acctid']." AND class='kraemer'"))>0)
{
output("`qDu hast ".$row['name']."`q schon. Du überlegst, ob sich eine Neuanschaffung wirklich lohnt. Allerdings müsstest du dazu auch erst den alten Krempel verkaufen.");
addnav("Weiter umschauen","kraemer.php?op=buy");
}
else
{
output("`+Amroth`q reibt sich die Hände und übergibt dir $row[name], während du ".($row[gold]?"`^$row[gold] `qGold":"")." ".($row[gems]?"`#$row[gems]`q Edelsteine":"")." abzählst. ");

addnav("Mehr kaufen","kraemer.php?op=buy");
$sql="UPDATE items SET owner={$session['user']['acctid']} WHERE id={$_GET['id']}";


$session['user']['gold']-=$row['gold'];
$session['user']['gems']-=$row['gems'];
db_query($sql);
}
}
addnav("Zurück","kraemer.php");
addnav("Zurück zum Dorf","village.php");
}
else if ($_GET['op']=="sell")
{
if (!$_GET['id'])
{
output("`+Amroth`q begutachtet deinen Besitz. Mit dem geübten Auge eines Kenners sortiert er die Dinge aus, die ihn interessieren würden und nennt dir einen Preis dafür.`n`n");
$sql="SELECT * FROM items WHERE owner=".$session['user']['acctid']." AND kraemer = 1";
$result=db_query($sql);
if (db_num_rows($result))
{
output("<table border='0' cellpadding='0'>",true);
output("<tr class='trhead'><td>`bName`b</td><td>`bPreis`b</td></tr>",true);
for ($i=0;$i<db_num_rows($result);$i++){
$row = db_fetch_assoc($result);
$bgcolor=($i%2==1?"trlight":"trdark");
output("<tr class='$bgcolor'><td><a href='kraemer.php?op=sell&id=$row[id]'>$row[name]</a></td><td align='right'>`^$row[gold]`0 Gold, `#$row[gems]`0 Edelsteine</td></tr><tr class='$bgcolor'><td colspan='2'>$row[description]</td></tr>",true);
addnav("","kraemer.php?op=sell&id={$row['id']}");
}
output("</table>",true);

}
else
{
output("Du hast aber nichts, was `+Amroth`q interessieren würde. Enttäuscht schlenderst du zurück zum Dorfplatz.");
}
}
else
{ // Hell Raiser
$sql="SELECT * FROM items WHERE id={$_GET['id']}";
$result=db_query($sql);
$row = db_fetch_assoc($result);
output("`qMit einem breiten und siegessicheren Grinsen gibt er dir die vereinbarten ".($row[gold]?"`^$row[gold] `qGold":"")." ".($row[gems]?"`#$row[gems]`q Edelsteine":"")." und schnappt sich $row[name]. ");
if ($row['class']=="Beute") output("Noch bevor du fragen kannst, wofür $row[name] wirklich zu gebrauchen ist, lässt der Krämer das Teil in einem seiner Regale verschwinden, grinst immer noch und fragt, ob du sonst noch etwas für ihn hast.");
addnav("Mehr verkaufen","kraemer.php?op=sell");
addnav("Mehr verkaufen","kraemer.php?op=sell");
$sql="UPDATE items SET owner=0 WHERE id={$_GET['id']}";


$session['user']['gold']+=$row['gold'];
$session['user']['gems']+=$row['gems'];
db_query($sql);
}
addnav("Zurück zum Dorf","village.php");
}
else
{

output("`qDu betrittst das große große Krämerladen, in dem dich gleich ein kleiner leicht genervter Zwerg namens `+Amroth`qbegrüßt und dir versucht gleich ein paar Kleinigkeiten aufzuschwatzen, die dir stark überteuert erscheinen und du dich erst einmal in ruhe in seinem Geschäft umzusehen beginnst… ");

addnav("Im Laden umsehen","kraemer.php?op=buy");
addnav("Etwas verkaufen","kraemer.php?op=sell");
addnav("Zurück zum Dorf","village.php");
}
page_footer();

?>[/php]

Autor:  Leen [ Mo 05 Mär, 2007 21:23 ]
Betreff des Beitrags: 

Nimm diese Stelle aus deinem Script:

[php] else if (db_num_rows(db_query("SELECT id FROM items WHERE name='$row[name]' AND owner=".$session['user']['acctid']." AND class='kraemer'"))>0)
{
output("`qDu hast ".$row['name']."`q schon. Du überlegst, ob sich eine Neuanschaffung wirklich lohnt. Allerdings müsstest du dazu auch erst den alten Krempel verkaufen.");
addnav("Weiter umschauen","kraemer.php?op=buy");
} [/php]

Autor:  Erinyen [ Mo 05 Mär, 2007 21:40 ]
Betreff des Beitrags: 

hat leider nicht geklappt das item verschwindet nach wie vor aus dem sortiment, wenn ichs gekauft hab

Autor:  Leen [ Mo 05 Mär, 2007 21:59 ]
Betreff des Beitrags: 

Gut .. hab da ein paar Fragen:

1. Die Items sind dann für alle weg oder nur für dich?
2. Klasse = kraemer .. hast du auch eine kraemer.prot? Also die Items vorher als Standard definiert damit man sie kaufen kann? Oder kann man nur Items kaufen, die man vorher verkauft hat? (Frage 1 wäre damit dann auch geklärt)

3. Du fragst vorher ab ob das Item owner = 0 und kraemer = 1 ist, ist diese kraemer denn in deiner Item-Tabelle drin?

Ja also erstmal das um zu wissen, was du eigentlich von deinem Krämer willst

Autor:  Kevz [ Mo 05 Mär, 2007 23:01 ]
Betreff des Beitrags: 

Dein Problem besteht darin, dass du keine Klasse (Ware) zugeordnet hast. Es werden also die Items aufgelistet die eig. als Klasse (Ware) dienen, und werden anschließend beim Kauf einfach auf den jeweilgen Käufer überschrieben. Und somit kommt es dazu, dass die Items verschwinden. D.h., solltest du eine Klasse (Ware) zuordnen und die Items beim Kauf einfach Separat in einer weiteren Klasse ordnen.

Autor:  Erinyen [ Di 06 Mär, 2007 07:48 ]
Betreff des Beitrags: 

mal dumm frag, da newbie :D wie stell ich das an?

Autor:  Kevz [ Di 06 Mär, 2007 09:10 ]
Betreff des Beitrags: 

Nenne die Items die Verkauft werden sollen, Verkauf.Prot. und die beim Kauf nutzt du die Item Klasse Verkauf. Aber das ist jedem selbst überlassen... =)

Autor:  Auric [ Di 06 Mär, 2007 17:16 ]
Betreff des Beitrags: 

Sprich: Erzeuge eine Kopie des Items (am besten per INSERT) und ordne diesem als owner deann einfach den Besitzer zu.. ist doch bei Aeki nicht anders...

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