Piszę tutaj choć pewnie mój moduł nie jest zbyt dobry ale chce rozruszać troche ten dział jeśli mam błędy pisać.
A więc najpierw tworzymy dwie tabele
Kod php:
CREATE TABLE `ezrpg`.`sklep` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`nazwa` VARCHAR( 50 ) NOT NULL ,
`atak` SMALLINT ( 6 ) NOT NULL ,
`miejsce` INT( 1 ) NOT NULL ,
`cena` SMALLINT(6)
) ENGINE = InnoDB;
oraz
Kod php:
CREATE TABLE `ezrpg`.`ekwipunek` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`owner` INT( 11 ) NOT NULL ,
`atak` SMALLINT ( 6 ) NOT NULL ,
`stan` INT(1) NOT NULL,
`miejsce` INT( 1 ) NOT NULL ,
`nazwa` VARCHAR(50) NOT NULL
) ENGINE = InnoDB;
i parę słów objaśnienia kolumna `miejsce` odnosi się do miejsca gdzie ma się znajdować dane rzecz np. spodnie = 1, buty =2 itd.
oczywiście musiscie każdy wg uznanania dodać parę rekordów do tabeli `sklep`
a teraz moduł
Kod php:
<?php
defined('IN_EZRPG') or exit;
class Module_Shop extends Base_Module
{
public function start()
{
requireLogin();
$wiersz = $this->db->execute('SELECT * FROM `<ezrpg>sklep`');
$shop = $this->db->fetchAll($wiersz);
$wiersz2 = $this->db->execute('SELECT * FROM `<ezrpg>ekwipunek` WHERE `owner`=? ORDER BY `atak` ASC',array($this->player->id));
$sprzedaj = $this->db->fetchAll($wiersz2);
if(isset($_GET['kup']))
{
$this->kup();
}
if(isset($_GET['sprzedaj']))
{
$this->sprzedaj();
}
$this->tpl->assign('kup',$shop);
$this->tpl->assign('sprzedaj',$sprzedaj);
$this->tpl->display('shop.tpl');
}
private function kup()
{
if (ereg("^[0-9]*$", $_GET['kup']) && !empty($_GET['kup']))
{
$check = $this->db->fetchRow('SELECT * FROM `sklep` WHERE `id`=?',array($_GET['kup']));
if ($check == true)
{
if ($this->player->money >= $check->cena)
{
$tablica = array(
'owner'=>$this->player->id,
'atak'=>$check->atak,
'nazwa'=>$check->nazwa,
'miejsce'=>$check->miejsce);
$this->db->insert('`<ezrpg>ekwipunek`',$tablica);
$this->db->execute('UPDATE `<ezrpg>players` SET `money`=`money`-? WHERE `id`=?',array($check->cena,$this->player->id));
$msg = 'Zakupiono przedmiot';
header('Location: index.php?mod=Shop&msg=' . urlencode($msg));
}else $msg = 'Nie stac cie';
}
else{
$msg = 'Nie ma takiego przedmiotu w sklepie!';}
}
else{
$msg = 'Nieprawidlowa wartosc';}
header('Location: index.php?mod=Shop&msg=' . urlencode($msg));
}
private function sprzedaj()
{
if (ereg("^[0-9]*$", $_GET['sprzedaj']) && !empty($_GET['sprzedaj']))
{
$check = $this->db->fetchRow('SELECT * FROM `<ezrpg>ekwipunek` WHERE `id`=? AND `owner`=?',array($_GET['sprzedaj'],$this->player->id));
if ($check == true)
{
if ($check->stan==0)
{
$this->db->execute('DELETE FROM `<ezrpg>ekwipunek` WHERE `id`=? AND `owner`=?',array($_GET['sprzedaj'],$this->player->id));
$msg = 'Przedmiot zostal sprzedany';
}
else $msg = 'Ten przedmiot masz aktualnie na sobie';
}
else $msg = 'Nie masz takiego przedmiotu';
}
else $msg = 'Nieprawidlowa wartosc';
header('Location: index.php?mod=Shop&msg=' . urlencode($msg));
}
}
?>
oraz smarty
Kod php:
{include file="header.tpl" TITLE="Sklep"}
<p>
<h1>Sklep</h1>
<table>
<tr>
<td><p>Nazwa</p></td>
<td><p>Atak</p></td>
<td><p>Cena</p></td>
<td><p>Ilość</p></td>
<td><p>Opcje</p></td>
</tr>
{foreach from=$kup item=shop}
<tr>
<td>{$shop->nazwa}</td>
<td>{$shop->atak}</td>
<td>{$shop->cena}</td>
<td>{$shop->ilosc}</td>
<td><a href="index.php?mod=Shop&kup={$shop->id}">Kup</a></td>
</tr>
{/foreach}
{foreach from=$sprzedaj item=sprzedaj}
<tr>
<td>{$sprzedaj->nazwa}</td>
<td>{$sprzedaj->atak}</td>
<td></td>
<td></td>
<td><a href="index.php?mod=Shop&sprzedaj={$sprzedaj->id}">Sprzedaj</a></td>
</tr>
{/foreach}
</table>
</p>
{include file="footer.tpl"}
dziękuję za uwagę
P.S kod mysql pisałem z głowy ale powinnien byc dobry
P.P.S mod zawiera funkcję fetchAll() dostępną w wersji 1.0.1
Zakładki