Autor | Zpráva | ||
---|---|---|---|
SirDoxik Profil |
#1 · Zasláno: 26. 8. 2014, 11:03:56
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 |
#2 · Zasláno: 26. 8. 2014, 11:11:47
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 |
#3 · Zasláno: 26. 8. 2014, 11:14:55
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 |
#4 · Zasláno: 26. 8. 2014, 11:18:59
SirDoxik:
Co máš vytvořeno? |
||
SirDoxik Profil |
#5 · Zasláno: 26. 8. 2014, 11:21:17
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"]."' "); $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 |
#7 · Zasláno: 26. 8. 2014, 11:30:19
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 |
#8 · Zasláno: 26. 8. 2014, 12:46:51
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> <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> 1<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 |
#9 · Zasláno: 26. 8. 2014, 12:51:42
SirDoxik:
Ta proměnná bude prázdná, protože na formuláři žádné pole s name=itemid není. |
||
SirDoxik Profil |
#10 · Zasláno: 26. 8. 2014, 15:36:58
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> <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> <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. 'x '.$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> |
||
Joker Profil |
#11 · Zasláno: 26. 8. 2014, 17:07:36
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 |
#12 · Zasláno: 26. 8. 2014, 17:17:18
Mě je jedno že to nějak nedopadne :) chtěl jsem se jen s php trochu seznámit :)
|
||
Fisir Profil |
#13 · Zasláno: 26. 8. 2014, 17:49:45
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 |
#14 · Zasláno: 26. 8. 2014, 18:14:46
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 |
#15 · Zasláno: 26. 8. 2014, 18:24:33
Reaguji na SirDoxika:
O to zvláštnější/nebezpečnější je hned vyrábět obchod. |
||
SirDoxik Profil |
#16 · Zasláno: 26. 8. 2014, 22:17:33
On to ani neni obchod :) Je to jen pokus kde se chci s php seznámit :)
|
||
Časová prodleva: 11 let
|
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