Autor Zpráva
Clarity
Profil *
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 *
Na to slúži práve databáza
lionel messi
Profil
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
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 *
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 *
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
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 *
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.
:)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: