Autor Zpráva
SirDoxik
Profil
Dobrý den, zasekl jsem se u scriptu kdy potřebuji vypsat z databáze počet kreditů kolik má uživatel na svém kontě. Jak by jste to udělali ? Předem děkuji.
Joker
Profil
Budu předpokládat, že databáze obsahuje tabulku, kde v nějakém sloupci je identifikace uživatele a v nějakém jiném počet kreditů.

V tom případě bych nad tou tabulkou provedl dotaz, kde pro záznam daného uživatele zjistím počet kreditů.
Pak bych si načetl výsledek a uložil ho do proměnné.
SirDoxik
Profil
Jakože teoreticky jo ale jak v PHP ? Sem začátečník a co jsem našel tak většinou vypisovaly třeba všechny články z db ale ne jenom od jednoho uživatele 1 údaj .
mimochodec
Profil
SirDoxik:
Co máš vytvořeno?
SirDoxik
Profil
Mám vytvořenou Tabulku s Jménem hráče a počtem peněz, kolik má na účtu a pak mám registraci která mi to jméno uloží do sessions, takže já pomocí toho jména potřebuji zjistit kolik peněz má na účtě peněz.
johnl
Profil
1$mysql_query = mysql_query("SELECT kredit from hraci where jmeno = '".$_SESSION["jmeno"]."' ");
2$kredit = mysql_fetch_array($mysql_query);
3 
4echo "Uživatel má kreditů: " . $kredit["kredit"];
$mysql_query mysql_query("SELECT kredit from hraci where jmeno = '".$_SESSION["jmeno"]."' ");
$kredit mysql_fetch_array($mysql_query);
 
echo "Uživatel má kreditů: " . $kredit["kredit"];

Něco takového?
Joker
Profil
SirDoxik:
V první řadě není moc chytré identifikovat uživatele jménem.
Jednak to do aplikace zadrátuje omezení na unikátní a neměnné jméno, jednak jméno je text, možná s diakritikou (nebo si tam někdo vloží různé podivné znaky) a špatně se používá jako klíč.

Ale jinak to je úplně triviální odeslání dotazu ve stylu SELECT kredity FROM tabulka WHERE uzivatel="Pepa"
Doporučil bych si nejdřív přečíst alespoň základy v nějaké učebnici.

johnl:
mysql_* funkce jsou zastaralé a u nových projektů by se neměly používat.
SirDoxik
Profil
Dobrý den, nechci zakládat nové vlákno ale mám ještě 1 problém. Jakoby mi script ignoroval proměnou $itemid. Nemůžu najít problém. Chybu mi to nevyhodí ale script proměnou ignoruje

obchod.php
Zde
1<html>
2<body>
3<?php
4 
5$player = $_SESSION['name'];
6 
7if (isset($_SESSION['id']))
8{
9  echo "Vítejte ve webshopu hráči ".$player.".";
10}
11else
12{
13  echo "musíte se přihlásit";
14}
15?>
16<form method="POST" action="proces.php"> 
17  Item <input name="item">
18  Počet <input name="pocet">
19    <input type="hidden" name="UzJsemToOdeslal" value="1"> 
20    <input type="Submit" name="odesli"> 
21</form> 
22<?php
23$player = $_SESSION['name'];
24 
25include"db.php";
26 
27global $mysqli;
28$query = mysql_query('SELECT * FROM items');
29while($item = mysql_fetch_assoc($query)){
30    echo('<div class="item">');
31    echo('<img src="images/icons/'.urlencode($item['image']).'.png">');
32    echo(htmlspecialchars($item['item']).' za '.intval($item['prize']).' Kreditů');
33    echo('
34    <form action="proces.php" method="post">
35    <input type="hidden" name="item" value="'.intval($item['itemid']).'">
36    <label for="name">Počet</label>
37    <input type="text" name="pocet" value="1">
38    <input type="submit" value="Koupit"></form>');
39    echo('</div>');
40}
41?>
42</body>
43<html>
<html>
<body>
<?php
 
$player $_SESSION['name'];
 
if (isset($_SESSION['id']))
{
  echo "Vítejte ve webshopu hráči ".$player.".";
}
else
{
  echo "musíte se přihlásit";
}
?>
<form method="POST" action="proces.php"> 
  Item <input name="item">
  Počet <input name="pocet">
    <input type="hidden" name="UzJsemToOdeslal" value="1"> 
    <input type="Submit" name="odesli"> 
</form> 
<?php
$player $_SESSION['name'];
 
include"db.php";
 
global $mysqli;
$query mysql_query('SELECT * FROM items');
while($item mysql_fetch_assoc($query)){
    echo('<div class="item">');
    echo('<img src="images/icons/'.urlencode($item['image']).'.png">');
    echo(htmlspecialchars($item['item']).' za '.intval($item['prize']).' Kreditů');
    echo('
    <form action="proces.php" method="post">
    <input type="hidden" name="item" value="'.intval($item['itemid']).'">
    <label for="name">Počet</label>
    <input type="text" name="pocet" value="1">
    <input type="submit" value="Koupit"></form>');
    echo('</div>');
}
?>
</body>
<html>
Proces.php
1<html>
2<head>
3<meta http-equiv="Content-Type" content="text/html";/>
4<meta charset="UTF-8"/>
5<title>Zpracování</title>
6</head>
7<body>
8<?php session_start();
9// AUTOREM JE m_pro_m, webmaster Minecraft serveru www.mineforlife.eu
10// Tento script byl uvolnen pro hosting fakaheda.eu s jeho svolenim
11 
12// Dulezite je, aby jste prejmenovali soubor, jinak bude mozne, ze si kdokoliv aktivuje VIP bez zaplaceni
13// Take je dulezite, aby jste meli ve stejnem umisteni jako tento soubor take rcon.php!!!
14 
15// V nasledujici casti nahradte text v uvozovkach, UVOZOVKY TAM NECHTE, STREDNIK NA KONCI TAKE!
16 
17//Kontrola jestli je přihlášen
18if (isset($_SESSION['id']))
19{
20  echo '<script>
21window.location.replace("/webshop/index.php"); 
22</script>';
23}
24else
25{
26  echo "musíte se přihlásit";
27}
28?>
29<?php
30$player = $_SESSION['name'];
31$server = "localhost";
32$port = "26565";
33$heslo = "asdfkaf1as2d31f3as1d2f";
34 
35$itemid = $_POST['itemid'];
36$pocet = $_POST['pocet'];
37$price = $cena*$pocet;
38include "db.php";//includuje db
39$mysql_query = mysql_query("SELECT balance from iconomy where username = '".$player."' ");//najde pocet kreditu v db
40$kredit = mysql_fetch_array($mysql_query);
41$pocet_kreditu = $kredit["balance"];
42     
43include_once("rcon.php"); 
44$r = new rcon($server,$port,$heslo);
45if($r->Auth())
46{
47  $r->rconCommand('give ' . $player. ' ' .$itemid. ' ' . $pocet);
48  $r->rconCommand('msg ' . $player . ' Koupil jsi ' . $pocet . ' ' . $itemid);
49}
50else {
51die('Chyba');
52}
53?>
54</body>
55</html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html";/>
<meta charset="UTF-8"/>
<title>Zpracování</title>
</head>
<body>
<?php session_start();
// AUTOREM JE m_pro_m, webmaster Minecraft serveru www.mineforlife.eu
// Tento script byl uvolnen pro hosting fakaheda.eu s jeho svolenim
 
// Dulezite je, aby jste prejmenovali soubor, jinak bude mozne, ze si kdokoliv aktivuje VIP bez zaplaceni
// Take je dulezite, aby jste meli ve stejnem umisteni jako tento soubor take rcon.php!!!
 
// V nasledujici casti nahradte text v uvozovkach, UVOZOVKY TAM NECHTE, STREDNIK NA KONCI TAKE!
 
//Kontrola jestli je přihlášen
if (isset($_SESSION['id']))
{
  echo '<script>
window.location.replace("/webshop/index.php"); 
</script>';
}
else
{
  echo "musíte se přihlásit";
}
?>
<?php
$player $_SESSION['name'];
$server "localhost";
$port "26565";
$heslo "asdfkaf1as2d31f3as1d2f";
 
$itemid $_POST['itemid'];
$pocet $_POST['pocet'];
$price $cena*$pocet;
include "db.php";//includuje db
$mysql_query mysql_query("SELECT balance from iconomy where username = '".$player."' ");//najde pocet kreditu v db
$kredit mysql_fetch_array($mysql_query);
$pocet_kreditu $kredit["balance"];
     
include_once("rcon.php"); 
$r new rcon($server,$port,$heslo);
if($r->Auth())
{
  $r->rconCommand('give ' . $player' ' .$itemid' ' . $pocet);
  $r->rconCommand('msg ' . $player ' Koupil jsi ' . $pocet ' ' . $itemid);
}
else {
die('Chyba');
}
?>
</body>
</html>
Joker
Profil
SirDoxik:
Ta proměnná bude prázdná, protože na formuláři žádné pole s name=itemid není.
SirDoxik
Profil
Dobrý den, dostal jsem se do finální fáze projektu (hurá :D) ale ještě bych potřeboval s něčím pomoct. 1. problém je že mi script neodečte nic z databázáze což jsem řeši skoro celé odpoledne ale marně. Druhá věc je že script nějak ignoruje proměnnou $itemname a proměnnou $novypocet a vůbec nevím proč :/

kódy dávám zde

obchod.php

1<html>
2<body>
3<?php
4 
5$player = $_SESSION['name'];
6 
7if (isset($_SESSION['id']))
8{
9  echo "Vítejte ve webshopu hráči ".$player.".";
10}
11else
12{
13  echo "musíte se přihlásit";
14}
15?>
16<?php
17$player = $_SESSION['name'];
18 
19include"db.php";
20 
21global $mysqli;
22$query = mysql_query('SELECT * FROM items');
23while($item = mysql_fetch_assoc($query)){
24    echo('<div class="item">');
25    echo('<img src="images/icons/'.urlencode($item['image']).'.png">');
26    echo(htmlspecialchars($item['item']).' za '.intval($item['prize']).' Kreditů');
27    echo('
28    <form action="proces.php" method="post">
29    <input type="hidden" name="itemid" value="'.intval($item['itemid']).'">
30    <input type="hidden" name="cenna" value="'.intval($item['prize']).'">
31    <label for="name">Počet</label>
32    <input type="text" name="pocet" value="1">
33    <input type="submit" value="Koupit"></form>');
34    echo('</div>');
35}
36?>
37</body>
38<html>
<html>
<body>
<?php
 
$player $_SESSION['name'];
 
if (isset($_SESSION['id']))
{
  echo "Vítejte ve webshopu hráči ".$player.".";
}
else
{
  echo "musíte se přihlásit";
}
?>
<?php
$player $_SESSION['name'];
 
include"db.php";
 
global $mysqli;
$query mysql_query('SELECT * FROM items');
while($item mysql_fetch_assoc($query)){
    echo('<div class="item">');
    echo('<img src="images/icons/'.urlencode($item['image']).'.png">');
    echo(htmlspecialchars($item['item']).' za '.intval($item['prize']).' Kreditů');
    echo('
    <form action="proces.php" method="post">
    <input type="hidden" name="itemid" value="'.intval($item['itemid']).'">
    <input type="hidden" name="cenna" value="'.intval($item['prize']).'">
    <label for="name">Počet</label>
    <input type="text" name="pocet" value="1">
    <input type="submit" value="Koupit"></form>');
    echo('</div>');
}
?>
</body>
<html>

proces.php

1<html>
2<head>
3<meta http-equiv="Content-Type" content="text/html";/>
4<meta charset="UTF-8"/>
5<title>Zpracování</title>
6</head>
7<body>
8<?php session_start();
9// AUTOREM JE m_pro_m, webmaster Minecraft serveru www.mineforlife.eu
10// Tento script byl uvolnen pro hosting fakaheda.eu s jeho svolenim
11 
12// Dulezite je, aby jste prejmenovali soubor, jinak bude mozne, ze si kdokoliv aktivuje VIP bez zaplaceni
13// Take je dulezite, aby jste meli ve stejnem umisteni jako tento soubor take rcon.php!!!
14 
15// V nasledujici casti nahradte text v uvozovkach, UVOZOVKY TAM NECHTE, STREDNIK NA KONCI TAKE!
16 
17//Kontrola jestli je přihlášen
18if (isset($_SESSION['id']))
19{
20  echo '<script>
21window.location.replace("/webshop/index.php"); 
22</script>';
23}
24else
25{
26  echo "musíte se přihlásit";
27}
28?>
29<?php
30$player = $_SESSION['name'];
31$server = "localhost";
32$port = "26565";
33$heslo = "asdfkaf1as2d31f3as1d2f";
34 
35$itemid = $_POST['itemid'];
36$pocet = $_POST['pocet'];
37$cena = $_POST['cenna'];
38$prize = $cena*$pocet;
39include "db.php";//includuje db
40$mysql_query = mysql_query("SELECT balance from iconomy where username = '".$player."' ");//najde pocet kreditu v db
41$kredit = mysql_fetch_array($mysql_query);
42$pocet_kreditu = $kredit["balance"];
43$itemzdm = mysql_query("SELECT item from items where itemid = '".$itemid."' ");//najde pocet kreditu v db
44$itemname = mysql_fetch_array($mysql_query);
45if($prize >=$pocet_kreditu) {
46  echo '<script>window.location.replace("obchod.php")';
47  die ('Chyba');
48  }
49else {
50 
51 
52include_once("rcon.php"); 
53$r = new rcon($server,$port,$heslo);
54if($r->Auth())
55{
56  $r->rconCommand('give ' .$player. ' ' .$itemid. ' ' .$pocet);
57  $r->rconCommand('msg ' .$player. ' Koupil jsi ' .$pocet. 'x '.$itemname.' za '.$prize.' a zbylo ti '.$novypocet);
58}
59else {
60die('Chyba');
61}
62$novypocet = ($pocet_kreditu-$prize);
63$update = mysql_query("UPDATE iconomy SET balance = `".$novypocet."` WHERE username = `".$player."`");
64}
65?>
66</body>
67</html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html";/>
<meta charset="UTF-8"/>
<title>Zpracování</title>
</head>
<body>
<?php session_start();
// AUTOREM JE m_pro_m, webmaster Minecraft serveru www.mineforlife.eu
// Tento script byl uvolnen pro hosting fakaheda.eu s jeho svolenim
 
// Dulezite je, aby jste prejmenovali soubor, jinak bude mozne, ze si kdokoliv aktivuje VIP bez zaplaceni
// Take je dulezite, aby jste meli ve stejnem umisteni jako tento soubor take rcon.php!!!
 
// V nasledujici casti nahradte text v uvozovkach, UVOZOVKY TAM NECHTE, STREDNIK NA KONCI TAKE!
 
//Kontrola jestli je přihlášen
if (isset($_SESSION['id']))
{
  echo '<script>
window.location.replace("/webshop/index.php"); 
</script>';
}
else
{
  echo "musíte se přihlásit";
}
?>
<?php
$player $_SESSION['name'];
$server "localhost";
$port "26565";
$heslo "asdfkaf1as2d31f3as1d2f";
 
$itemid $_POST['itemid'];
$pocet $_POST['pocet'];
$cena $_POST['cenna'];
$prize $cena*$pocet;
include "db.php";//includuje db
$mysql_query mysql_query("SELECT balance from iconomy where username = '".$player."' ");//najde pocet kreditu v db
$kredit mysql_fetch_array($mysql_query);
$pocet_kreditu $kredit["balance"];
$itemzdm mysql_query("SELECT item from items where itemid = '".$itemid."' ");//najde pocet kreditu v db
$itemname mysql_fetch_array($mysql_query);
if($prize >=$pocet_kreditu) {
  echo '<script>window.location.replace("obchod.php")';
  die ('Chyba');
  }
else {
 
 
include_once("rcon.php"); 
$r new rcon($server,$port,$heslo);
if($r->Auth())
{
  $r->rconCommand('give ' .$player' ' .$itemid' ' .$pocet);
  $r->rconCommand('msg ' .$player' Koupil jsi ' .$pocet''.$itemname.' za '.$prize.' a zbylo ti '.$novypocet);
}
else {
die('Chyba');
}
$novypocet = ($pocet_kreditu-$prize);
$update mysql_query("UPDATE iconomy SET balance = `".$novypocet."` WHERE username = `".$player."`");
}
?>
</body>
</html>
Předem děkuji za pomoc :) a velice vám děkuju za ochotu u předchozích vláken :D vím neni to se mnou lehké :)
Joker
Profil
SirDoxik:
Nic ve zlém, ale nechcete raději přizvat někoho, kdo se v PHP trochu orientuje?
Pochybuji, že takhle přes diskusi to někdy dotáhneme k použitelné úrovni.

Mimochodem, když pominu absenci jakékoliv kontroly vstupů od uživatele, zajímavá -byť podivná- vlastnost je to, jak se cena přebírá od uživatele. A uživatel si může nastavit i zápornou cenu, aby mu to přidalo věci a ještě přičetlo kredity.
SirDoxik
Profil
Mě je jedno že to nějak nedopadne :) chtěl jsem se jen s php trochu seznámit :)
Fisir
Profil
Reaguji na SirDoxika:
V $itemname je pole obsahující prvek balance. $novypocet generuješ až za posláním zprávy do hry, takže proto se tam neobjeví. Databáze se neaktualizuje proto, že řetězce se neobalují do zpětných apostrofů, ale buď do jednoduchých, nebo dvojitých uvozovek.

Je vidět, že absolutně netušíš, o co jde.
SirDoxik
Profil
Nikdo učený z nebe nespadl :) každý nějak začínal a jelikož programuji v php asi 4 dny, je možné, že nějaké věci neznám ;)
Fisir
Profil
Reaguji na SirDoxika:
O to zvláštnější/nebezpečnější je hned vyrábět obchod.
SirDoxik
Profil
On to ani neni obchod :) Je to jen pokus kde se chci s php seznámit :)
Toto vlákno je staré, již dlouho do něj nikdo nepřispíval.

Informace a odkazy zde uváděné už nemusejí být aktuální. Nechcete-li řešit zde uvedenou konkrétní otázku, založte si vlastní vlákno, nepište do tohoto. Vložíte-li sem nyní příspěvek, upoutáte pozornost mnoha lidí a někteří z nich si jen kvůli vám přečtou i všechny předcházející příspěvky. Předpokládáte-li, že váš text skutečně bude hodnotný, stiskněte následující tlačítko:


Běda vám, jestli to bude blábol.

0