Autor | Zpráva | ||
---|---|---|---|
Clarity Profil * |
#1 · Zasláno: 16. 2. 2015, 22:56:35
Vytváram si jednoduchú browser hru aby som si overil svoje schopnosti z HTML, CSS, JS a naučil sa robiť s databázou a PHP. No vônec nechápem ako zobrazím rozdielny obsah rôznym užívateľom.
Príklad, prihlási sa Janka a pomocou header(Location: "hra.php") ju premiestni na stránku s hrou. Ako ale docielim toho aby sa jej zobrazil obsah že má napríklad 15 vojakov a keď sa prihlási Danka, tá bude mať 25 vojakov? |
||
final_ Profil * |
#2 · Zasláno: 16. 2. 2015, 22:59:54
Na to slúži práve databáza
|
||
lionel messi Profil |
#3 · Zasláno: 16. 2. 2015, 23:07:53
Clarity:
„Ako ale docielim toho aby sa jej zobrazil obsah že má napríklad 15 vojakov a keď sa prihlási Danka, tá bude mať 25 vojakov?“ Ako píše final, ideálne je na tento účel použiť db. V nej si môžeš vytvoriť napríklad takúto tabuľku (v skutočnosti bude samozrejme štruktúra oveľa zložitejšia): id meno pocet_vojakov 1 Danka 25 2 Janka 15 3 Július 34 Na stránke hra.php budeš mať v session uloženú informáciu o prihlásenom užívateľovi (meno) a na filtrovanie v SQL selecte postačí podmienka WHERE. Dotaz môže vyzerať napr. takto: SELECT meno, pocet_vojakov FROM tabulka WHERE meno = '. $_SESSION["meno"] .' Len podotknem, že v rámci správneho databázového návrhu aplikácie nebude zrejme najvhodnejšie uchovávať počet vojakov a zoznam užívateľov v jednej tabuľke. |
||
mimochodec Profil |
#4 · Zasláno: 16. 2. 2015, 23:39:18
Já bych začal někde tady: http://www.linuxsoft.cz/article.php?id_article=744
A v dalších navazujících článcích. |
||
Clarity Profil * |
#5 · Zasláno: 17. 2. 2015, 17:25:42
Má tabuľku
id meno heslo mail sermiar 41 Milos *** *** 50 a kód: $resultS = mysql_query("SELECT sermiar FROM uzivatelia WHERE meno = ". $_SESSION["meno"] .""); $sermiar = mysql_fetch_array($resultS); echo $sermiar; No nič mi nevypíše, neviete kde je chyba? |
||
lionel messi Profil |
Clarity:
„No nič mi nevypíše“ Funkcia mysql_fetch_array totiž nevracia string, ale pole s číselnými indexmi. Môžeš sa o tom presvedčiť pomocou var_dump($sermiar); . Namiesto tejto funkcie však odporúčam použiť mysql_fetch_assoc, ktorá vracia pole s indexmi zodpovedajúcimi názvom stĺpca (nie ich poradiu).
Rovnako záleží, či chceš vypísať jednu položku alebo viacero (resp. všetky). Bežne sa výpis rieši pomocou cyklu zhruba takto: $resultS = mysql_query("SELECT sermiar FROM uzivatelia WHERE meno = '". $_SESSION["meno"] ."'"); while ($sermiar = mysql_fetch_assoc($resultS)) { echo $sermiar["meno"]. " ". $sermiar["sermiar"]; //vypíše mená všetkých šermiarov a údaj zo stĺpca sermiar (netuším, čo znamená) oddelený medzerou } V prípade, že by kód ani po úprave nefungoval odporúčam vypísať si chybu dotazu. Ešte jedna dôležitá poznámka: Reťazce sa v SQL ohraničujú apostrofmi, tebe v dotaze chýbajú na vyznačených miestach. |
||
Clarity Profil * |
#7 · Zasláno: 18. 2. 2015, 14:38:40
Zle sme sa pochopili.
Mám MySQL tabuľku: id meno heslo mail sermiar 41 Milos *** *** 50 42 Peter *** *** 25 a chcem vypísať počet šermiarov hráča, ktorý je prihlásený (má $_SESSION['meno']). Napríklad keď sa prihlási hráč Milos vypíše mu stránka hra.php 50 a keď sa prihlási Peter vypíše mu 25.
|
||
lionel messi Profil |
#8 · Zasláno: 18. 2. 2015, 14:42:25
Clarity:
„Zle sme sa pochopili.“ Postačí len minimálna úprava kódu, nebude potrebné použitie cyklu. $resultS = mysql_query("SELECT sermiar FROM uzivatelia WHERE meno = '". $_SESSION["meno"] ."'"); $sermiar = mysql_fetch_assoc($resultS); echo $sermiar["sermiar"]; Poznámka: Mysql_* funkcie sú zastarané a budú z novej verzie PHP odstránené, odporúčam zvážiť prechod na MySQLi. |
||
Clarity Profil * |
#9 · Zasláno: 18. 2. 2015, 14:52:53
Nechcelo mi to fungovať, no nakoniec som nato prišiel. Zabudol som includnuť súbor
config.php do stránky hra.php , teraz už všetko funguje tak ako má. Veľká vďaka Messi.
:) |
||
Časová prodleva: 9 let
|
0