[ERLEDIGT] Steam-Avatar auslesen

  • Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Herakles

Neues Mitglied
12 Juni 2020
15
0
1
20
Guten Tag,
ich arbeite an einer Webseite, die Daten aus einer Datenbank ausliest. Die integrierte Tabelle sieht ungefähr wie folgt aus:Tabelle.png
Nun versuche ich die Profilbilder der einzelnen Personen zu bekommen. Wie gehe ich da am besten vor? Bisher hatte ich als Resultat eine Seite, die eine viel zu lange Landezeit hatte.

Bisheriger Ansatz:
PHP:
        $key = "...";

        $contentFromUrl = file_get_contents("http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key={$key}&steamids={$identifier}");
        $decode = json_decode($contentFromUrl);

                                DANN: $decode->response->players[0]->avatarfull;

Ungefähre Html Struktur in .php-File:
HTML:
[...]
                $datarecords_personlist = mysqli_query($con, "SELECT 1, 2, 3 FROM 123 WHERE 1 = '$Suchergebnis' OR 2 = '$Suchergebnis' OR 3 = '$Suchergebnis'");
                while (list($1, $2, $3) = mysqli_fetch_array($datarecords_personlist)){
                 echo "
                 <tr>
                  <td><img src='.....'></td>
                  <td> $identifier </td>
[...]

Danke für all Eure Beiträge
 
Zuletzt bearbeitet:

basti1012

Senior HTML'ler
26 November 2017
1.463
156
63
39
Minden
sebastian1012.bplaced.net
Kannst du das genauer erklären?
Ich sehe keine Links zu Bildern und auch kein Hinweiß das du Links von Bildern in der Db stehen hast.
Sind die Bilder irgendwo Online oder auf deinen Server ?
 

m.scatello

Senior HTML'ler
15 Februar 2017
1.353
163
63
Wenn ich schon "ungefähr" lese, dann bin ich schon raus. Entweder du zeigst den richtigen Quellcode oder wir lassen es.
 

jonas3344

Mitglied
25 Oktober 2019
68
23
8
37
Wenn du für jede Person einzeln das Profilbild per API ausliest hast du natürlich eine lange Ladezeit. Das ist jedes Mal ein Request, der dauert halt etwas. Je mehr Personen desto länger dauerts.
 

Herakles

Neues Mitglied
12 Juni 2020
15
0
1
20
Ich versuche - wie jonas3344 richtig vermutete - für jeden Nutzer aus der Datenbank das Profilbild per API auszulesen. Dazu nutze ich einen Werte der Datenbank, der die SteamID beinhaltet. Ich habe also den oben aufgeführten Code verwendet. Ich frage lediglich nach anderen Ansätzen, die eventuell die Ladezeit reduzieren. Mein Ansatz resultierte in einer viel zu langen Ladezeit, funktioneiert jedoch. Der Code sollte deshalb eher uninteressant sein. Außerdem wäre das etwas zu viel für diesen Bereich.

Ich danke erneut für Eure Hilfe.
 
Zuletzt bearbeitet:

jonas3344

Mitglied
25 Oktober 2019
68
23
8
37
1. Gucken ob die Steamapi evtl. erlaubt mehrere User gleichzeitig abzufragen
2. Serverseitig nur eine gewisse Anzahl User darstellen => Pagination
3. Die Seite aufbauen und die Daten (vor allem die Profilbilder) per JavaScript nachladen.
 

Herakles

Neues Mitglied
12 Juni 2020
15
0
1
20
Danke für die hilfreichen Ansätze jonas3344. Auch den anderen bin ich für ihre Beiträge dankbar.
Wie liese sich letzteres umsetzen. Hättest du da einen Link mit einem Beispiel für mich? Ich bin in JavaScript leider noch nicht ganz so gut aufgestellt.
 
Zuletzt bearbeitet:

jonas3344

Mitglied
25 Oktober 2019
68
23
8
37
Wenn du in JavaScript nicht ganz so gut aufgstellt bist dürfte das schwierig werden.
Du müsstest beim Start der Seite ein Script starten, dass alle IDs durchgeht und dann je einen AJAX-Request an ein Script schickt welches das Profilbild abholt und Dir zurückschickt. Dann kannst du das einblenden.
Da JavaScript asynchron ist kannst du da praktisch gleichzeitig alle Requests abschicken. Kann aber natürlich sein, dass die Steam-API Dich dann blockt weil das zu viele Anfragen in kurzer Zeit sind.

Ich würde Dir zu 2. raten, bau eine Pagination ein.
 

Sempervivum

Senior HTML'ler
18 Oktober 2016
2.095
406
83
67
Der Code sollte deshalb eher uninteressant sein.
Da bin ich anderer Meinung: Wenn man herausfinden soll, warum das Laden so lange dauert, muss man schon wissen, wie Du im einzelnen vorgehst, um die Seite zusammen zu bauen. Deine Bruchstücke aus dem Eingangsposting lassen viele Fragen offen, z. B.:
$decode->response->players[0]->avatarfull;Hier liest Du offenbar einen Eintrag für einen einzigen Spieler aus dem Ergebnis aus. Da liegt die Vermutung nahe, dass Du das für mehrere Spieler in einer Schleife tust?
$datarecords_personlist = mysqli_query($con, "SELECT 1, 2, 3 FROM 123 WHERE 1 = '$Suchergebnis' OR 2 = '$Suchergebnis' OR 3 = '$Suchergebnis'");Vollkommen unklar wo $Suchergebnis her kommt. Semantik von 1, 2, 3 unklar, da kein aussagekräftigen Nahmen.
 
Werbung:

Neueste Beiträge