Diskuze: Zobrazení MySQL databáze přes SteamID
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 17 zpráv z 17.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Po přihlášení uživatele znáš jeho Steam ID, takže jen uprav dotaz na DB a vybírej jen záznamy kde je steamId odpovídající ID hráče.
$steamId = $_SESSION['steamId']; // jen příklad, záleží na tobě kde získáš ID
$stmt = $db_con->prepare(SELECT `steamId`, `points`, `lastDisplayName`, `lastUpdated`
FROM `ranks`
WHERE `steamId` = ?
', array($steamId));
V předchozím postu mi chybí jedna uvozovka na začátku sql dotazu takže správně to má být takto
$steamId = $_SESSION['steamId']; // jen příklad, záleží na tobě kde získáš ID
$stmt = $db_con->prepare('SELECT `steamId`, `points`, `lastDisplayName`, `lastUpdated`
FROM `ranks`
WHERE `steamId` = ?
', array($steamId));
Děkuji za odpověď. Nevím co jsem udělal špatně, ale když upravím dotaz na DB, nezobrazí se vůbec nic.
Přikládám celý index.php
<?php
require ('steamauth/steamauth.php');
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="Windows-1250">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Test</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.0/css/bootstrap.min.css">
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]-->
<style>
.table {
table-layout: fixed;
word-wrap: break-word;
}
</style>
</head>
<body style="background-color: #EEE;">
<div class="container" style="margin-top: 30px; margin-bottom: 30px; padding-bottom: 10px; background-color: #FFF;">
<h1>Login Test</h1>
<span class="small pull-left" style="padding-right: 10px;">Administrace</span>
<hr>
<?php
if(!isset($_SESSION['steamid'])) {
echo "<div style='margin: 30px auto; text-align: center;'<br>";
loginbutton();
echo "</div>";
} else {
include ('steamauth/userInfo.php');
?>
<br>
<br>
<span style='float:right;'><?php logoutbutton(); ?></span>
<div class="content-loader">
<table cellspacing="0" width="100%" id="example" class="table table-striped table-hover table-responsive">
<thead>
<tr>
<th>steamId</th>
<th>points</th>
<th>lastDisplayName</th>
<th>lastUpdated</th>
</tr>
</thead>
<tbody>
<?php
require_once 'dbconfig.php';
$steamId = $_SESSION['steamId'];
$stmt = $db_con->prepare('SELECT `steamId`, `points`, `lastDisplayName`, `lastUpdated`
FROM `ranks`
WHERE `steamId` = ?
', array($steamId));
$stmt->execute();
while($row=$stmt->fetch(PDO::FETCH_ASSOC))
{
?>
<tr>
<td><?php echo $row['steamId']; ?></td>
<td><?php echo $row['points']; ?></td>
<td><?php echo $row['lastDisplayName']; ?></td>
<td><?php echo $row['lastUpdated']; ?></td>
</tr>
<?php
}
?>
</tbody>
</table>
</div>
<?php
}
?>
<hr>
<div class="pull-right">
<i>2016</i>
</div>
</div>
</body>
</html>
Zkus si opravit $_SESSION['steamId'] na $_SESSION['steamid']
$steamId = $_SESSION['steamid'];
O pár řádků kódu výš podle toho ověřuješ jestli je daný uživatel přihlášen, to přihlašování ti funguje?
Jaký používáš authenticator? A do jaké proměnné ukládá Steam ID?
přihlášení funguje, asi bude jednodušší to ukázat authenticator
v souboru steamauth/userInfo.php máš předávání dat uživatele z authenticatoru, podívej se tam, někde bude řádek jako
$steamprofile['steamid'] = $_SESSION['steam_steamid'];
pak můžeš použít do dotazu na db tu proměnnou $steamprofile['steamid'] (nebo jak bude u tebe ve skriptu)
$stmt = $db_con->prepare('SELECT `steamId`, `points`, `lastDisplayName`, `lastUpdated`
FROM `ranks`
WHERE `steamId` = ?
', array($steamprofile['steamid']));
předávání dat uživatele z authenticatoru v souboru steamauth/userInfo.php je přesně to jak říkáš, ale když jsem upravil dotaz na DB, žádná změna se neprojevila.
', array($steamprofile['steamid']));
Měl sem se zeptat asi už na začátku, ale jaký používáš db
wrapper?
Teď na to celé koukám a mělo by to být podle tvého skriptu teda asi
$stmt = $db_con->prepare('SELECT `steamId`, `points`, `lastDisplayName`, `lastUpdated`
FROM `ranks`
WHERE `steamId` = ?');
$stmt->execute(array($steamprofile['steamid']));
když to teď nahradím tímhle kódem, stránka vůbec nefunguje
HTTP ERROR 500
Zapni si zobrazení chyb v php a podívej se, co za chybu to zobrazí.
Já se omlouvám, ale vůbec nevím kde zobrazení chyb v php najít
Tuším, že se to nastavuje v souboru php.ini. Pokud pracuješ s XAMPP najdeš to ve složce xampp->php->php.ini
Tam máš hodnotu display_errors.
mám hosting u zikum.cz kde je virtualmin pro správu, ale žádný log s chybama nevidím
chyba bylo ve velkém/malém pismeni "steamId". Takže vyřešeno, Děkuji
Zobrazeno 17 zpráv z 17.