Avatar
Jan Kubáč
Člen
Avatar
Jan Kubáč:

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. října 15:28
Avatar
Petr Linhart
Člen
Avatar
Odpovídá na Jan Kubáč
Petr Linhart:

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  +1 7. října 10:02
Avatar
Petr Linhart
Člen
Avatar
Odpovídá na Jan Kubáč
Petr Linhart:

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. října 10:09
Avatar
Jan Kubáč
Člen
Avatar
Jan Kubáč:

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. října 12:34
Avatar
Petr Linhart
Člen
Avatar
Odpovídá na Jan Kubáč
Petr Linhart:

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

$steamId = $_SESSION['steamid'];
 
Nahoru Odpovědět 7. října 12:41
Avatar
Petr Linhart
Člen
Avatar
Odpovídá na Jan Kubáč
Petr Linhart:

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. října 12:50
Avatar
Jan Kubáč
Člen
Avatar
Odpovídá na Petr Linhart
Jan Kubáč:

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

Editováno 7. října 12:53
 
Nahoru Odpovědět 7. října 12:52
Avatar
Petr Linhart
Člen
Avatar
Odpovídá na Jan Kubáč
Petr Linhart:

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. října 12:58
Avatar
Jan Kubáč
Člen
Avatar
Odpovídá na Petr Linhart
Jan Kubáč:

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. října 13:03
Avatar
Petr Linhart
Člen
Avatar
Odpovídá na Jan Kubáč
Petr Linhart:

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í
+1 bodů
Řešení problému
 
Nahoru Odpovědět 7. října 15:02
Avatar
Jan Kubáč
Člen
Avatar
Odpovídá na Petr Linhart
Jan Kubáč:

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

HTTP ERROR 500
 
Nahoru Odpovědět 7. října 15:56
Avatar
Petr Linhart
Člen
Avatar
Odpovídá na Jan Kubáč
Petr Linhart:

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

 
Nahoru Odpovědět 7. října 16:37
Avatar
Jan Kubáč
Člen
Avatar
Odpovídá na Petr Linhart
Jan Kubáč:

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

 
Nahoru Odpovědět 7. října 17:03
Avatar
Dominik Milaniak:

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. října 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áč:

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

 
Nahoru Odpovědět 7. října 17:48
Avatar
Jan Kubáč
Člen
Avatar
Odpovídá na Jan Kubáč
Jan Kubáč:

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

 
Nahoru Odpovědět 7. října 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.