Kezdőoldal » Számítástechnika » Programozás » Ha már szerepel egy másik...

Ha már szerepel egy másik adatbázisba ne engedje megvenni. (php, mysql)?

Figyelt kérdés

Hali, lenne egy problémám, van egy item rendszerem, amiben itemeket tudnak venni az emberek, ha megvesz egyet utánna azt neki ne engedje újra megvenni, és itt a baj. Szóval

/////

$bolt = mysql_query('SELECT * FROM shop');

while($blt = mysql_fetch_assoc ($bolt) )

{

echo '

<form action="" method="POST">

<table border="1">

<tr>

<td>#id</td>

<td>img</td>

<td>name</td>

<td>item cost</td> ';

if($blt['id'] == $ItemID)

{

echo '<td>Nem veheteed meg tobszor</td>';

} else {

echo '<td>Aktival</td>';

}

ECHO '</tr>

</table>

</form>';

}

echo '</div>';


Ez jó, csak ha 1nél több item van a shopban a while miatt mindig az utoljára megvett itemet nem lehet többé megvenni, vagyis addig még meg nem veszem a másikat ördögi kör. Ez az egy dolog aminél elakadtam és nagyon frusztrál :D


Előre is köszönöm az összes segítséget :)



2013. dec. 30. 23:33
 1/7 uno20001 ***** válasza:
Eltrálolod egy adatbázisban, hogy melyik felhasználó eddig mit vett meg?
2013. dec. 30. 23:46
Hasznos számodra ez a válasz?
 2/7 A kérdező kommentje:

Igen

a shop ilyen elrendezésü:


id | itemname | item (..) | itemid

----------------------------------


és a már megvett itemek táblája:


id | userid | username | itemid | date

--------------------------------------

2013. dec. 30. 23:50
 3/7 uno20001 ***** válasza:

mmit = már megvásárolt itemek táblája

------


$check = mysql_query("SELECT * FROM mmit WHERE username=". $_SESSION['username'] /*vagy amiben tárolod a felhasználónevet*/);

while($row = mysql_fetch_assoc($check)){

if($row['itemid'] == $blt['itemid']){

echo(Már megvetted!);

}


Elvileg ez működik, bár nem teszteltem és este van. :-)

Ez be kell tenned a while ciklusba és elvileg működik.


}

2013. dec. 31. 00:06
Hasznos számodra ez a válasz?
 4/7 uno20001 ***** válasza:

Uupsz!

Az echo alatti sorban lévő kapcsos zárójel mögé még írj egy kapcsos zárójelet.

2013. dec. 31. 00:08
Hasznos számodra ez a válasz?
 5/7 Drone007 ***** válasza:

Szerintem még az elején gyűjtsd ki a megvett elemek id-jét egy tömbbe, így nem kell folyton az adatbázishoz nyúlkálnod:


$megvett = array();

$buyed = mysql_query("SELECT itemid FROM buyed_items WHERE userid = ".$userid);

while ($buyeditem = mysql_fetch_row($buyed)) {$megvett[] = $buyeditem[0];}


Ezután a vizsgálatnál:


if (!array_search($blt['id'],$megvett)) {

// megveheti, mert nincs a tömbben

} else {

// már megvette, mert a tömbben van

}


Sok sikert!

2013. dec. 31. 11:44
Hasznos számodra ez a válasz?
 6/7 A kérdező kommentje:

Drone007:


Ez müködöik is, csak az első itemet mindig kihagyja :s

2013. dec. 31. 14:43
 7/7 A kérdező kommentje:
Vagyis azt nem engedi tovább amit már egy másik felhasználó megvett :/
2013. dec. 31. 14:48

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!