NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

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.

Aktivity
Avatar
Jan Kubáč
Člen
Avatar
Jan Kubáč:6.10.2016 15:28

Dobrý den, mohl by mi někdo prosím poradit, se zobrazování MySQL tabulek na php stránce? Používám SteamAuthenti­cation pro příhlášení na stránku přes Steam. A má otázka je, jak zobrazím z MySQLu hodnoty pouze pro přihlašené steamID.

V MySQL databázi mám tabulku s názvem "rank" uvnitř jsou 4 sloupce SteamID, points, lastDisplayName a lastUpdated.

Každý hráč má vlastní SteamID a tak jestli jde po přihlášení přes SteamAuthentication zobrazit pouze právě ty hodnoty daného hráče.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
</head>

<body>



        <div class="container">

        <h2 class="form-signin-heading">Test</h2><hr />

        <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';
        $stmt = $db_con->prepare("SELECT * FROM ranks");
        $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>

    </div>

    <br />

</body>
</html>
 
Odpovědět
6.10.2016 15:28
Avatar
Odpovídá na Jan Kubáč
Neaktivní uživatel:7.10.2016 10:02

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));
Nahoru Odpovědět
7.10.2016 10:02
Neaktivní uživatelský účet
Avatar
Odpovídá na Jan Kubáč
Neaktivní uživatel:7.10.2016 10:09

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));
Nahoru Odpovědět
7.10.2016 10:09
Neaktivní uživatelský účet
Avatar
Jan Kubáč
Člen
Avatar
Jan Kubáč:7.10.2016 12:34

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>
 
Nahoru Odpovědět
7.10.2016 12:34
Avatar
Odpovídá na Jan Kubáč
Neaktivní uživatel:7.10.2016 12:41

Zkus si opravit $_SESSION['ste­amId'] na $_SESSION['ste­amid']

$steamId = $_SESSION['steamid'];
Nahoru Odpovědět
7.10.2016 12:41
Neaktivní uživatelský účet
Avatar
Jan Kubáč
Člen
Avatar
 
Nahoru Odpovědět
7.10.2016 12:46
Avatar
Odpovídá na Jan Kubáč
Neaktivní uživatel:7.10.2016 12:50

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?

Nahoru Odpovědět
7.10.2016 12:50
Neaktivní uživatelský účet
Avatar
Jan Kubáč
Člen
Avatar
Odpovídá na Neaktivní uživatel
Jan Kubáč:7.10.2016 12:52

přihlášení funguje, asi bude jednodušší to ukázat authenticator

Editováno 7.10.2016 12:53
 
Nahoru Odpovědět
7.10.2016 12:52
Avatar
Odpovídá na Jan Kubáč
Neaktivní uživatel:7.10.2016 12:58

v souboru steamauth/use­rInfo.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['ste­amid'] (nebo jak bude u tebe ve skriptu)

$stmt = $db_con->prepare('SELECT `steamId`, `points`, `lastDisplayName`, `lastUpdated`
                        FROM `ranks`
                        WHERE `steamId` = ?
                        ', array($steamprofile['steamid']));
Nahoru Odpovědět
7.10.2016 12:58
Neaktivní uživatelský účet
Avatar
Jan Kubáč
Člen
Avatar
Odpovídá na Neaktivní uživatel
Jan Kubáč:7.10.2016 13:03

předávání dat uživatele z authenticatoru v souboru steamauth/use­rInfo.php je přesně to jak říkáš, ale když jsem upravil dotaz na DB, žádná změna se neprojevila.

', array($steamprofile['steamid']));
 
Nahoru Odpovědět
7.10.2016 13:03
Avatar
Odpovídá na Jan Kubáč
Neaktivní uživatel:7.10.2016 15:02

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']));
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
7.10.2016 15:02
Neaktivní uživatelský účet
Avatar
Jan Kubáč
Člen
Avatar
Odpovídá na Neaktivní uživatel
Jan Kubáč:7.10.2016 15:56

když to teď nahradím tímhle kódem, stránka vůbec nefunguje

HTTP ERROR 500
 
Nahoru Odpovědět
7.10.2016 15:56
Avatar
Odpovídá na Jan Kubáč
Neaktivní uživatel:7.10.2016 16:37

Zapni si zobrazení chyb v php a podívej se, co za chybu to zobrazí.

Nahoru Odpovědět
7.10.2016 16:37
Neaktivní uživatelský účet
Avatar
Jan Kubáč
Člen
Avatar
Odpovídá na Neaktivní uživatel
Jan Kubáč:7.10.2016 17:03

Já se omlouvám, ale vůbec nevím kde zobrazení chyb v php najít

 
Nahoru Odpovědět
7.10.2016 17:03
Avatar
Dominik Milaniak:7.10.2016 17:40

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.

Nahoru Odpovědět
7.10.2016 17:40
99 bugs in the code, take one down and patch it up. 117 bugs in the code..
Avatar
Jan Kubáč
Člen
Avatar
Odpovídá na Dominik Milaniak
Jan Kubáč:7.10.2016 17:48

mám hosting u zikum.cz kde je virtualmin pro správu, ale žádný log s chybama nevidím

 
Nahoru Odpovědět
7.10.2016 17:48
Avatar
Jan Kubáč
Člen
Avatar
Odpovídá na Jan Kubáč
Jan Kubáč:7.10.2016 18:20

chyba bylo ve velkém/malém pismeni "steamId". Takže vyřešeno, Děkuji

 
Nahoru Odpovědět
7.10.2016 18:20
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 17 zpráv z 17.