1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Api daten verarbeiten - in Tabelle ausgeben - bitte um Hilfe

Dieses Thema im Forum "PHP" wurde erstellt von klausi89, 11. Oktober 2017.

  1. klausi89

    klausi89 Mitglied

    Hallo ich hoffe mir kann jemand helfen....ich möchte gerne Daten über eine Api auslesen und in einer Bootstrap "datatable" verarbeiten

    Die Tabelle an sich hab ich ja hinbekommen ( immer 10 Datensätze pro Seite) aber leider habert es wieder einmal am auslesen und einfügen der Dateien über eine Api

    der Anbieter stellt mir folgendes zur Verfügung:

    https://apianbieter.com/api/listv1/list?api_key=YOUR_API_KEY_HERE

    {
    "status": 200,
    "message": "OK",
    "list_data": {
    "premium": {
    "BTC": [
    {
    "name": "Anbieter1",
    "url": "https://www.anbieter1.com",
    "owner_id": "123",
    "owner_name": "anbieter1",
    "currency": "BTC",
    "timer_in_minutes": "1440",
    "reward": "3000",
    "is_enabled": "1",
    "creation_date": "1480028524",
    "category": "1,4",
    "paid_today": 0.00226897,
    "paid_week": 0.00688604,
    "paid_total": 0.13068441,
    "active_users": 109,
    "estimated_2_week_payout": 0.01032906,
    "balance": 0.01855018,
    "health": 100
    },
    */ etc. */
    ]}
    }

    folgendes möchte ich gerne in der Tabelle anzeigen:

    Name | Creation_date | Timer_in_minutes | paid_week | active_users | health | url (go to url)

    Anbieter1 - 2 monate - 60 min - 0,125 - 512 - 100% - <a href="http://www.anbieter1.com">anbieter1<a/>
    Anbieter2 - 5 monate - 90 min - 0,035 - 604 - 90% - <a href="http://www.anbieter2.net">anbieter2<a/>

    usw.
    es wäre sehr nett wenn mir mal bitte jemand helfen könnte wie ich das nun realisieren könnte.

    Hoffe es hätte mal jemand etwas Zeit sich das mal anzuschauen.
    Danke schonmal.
     
  2. Sempervivum

    Sempervivum Erfahrenes Mitglied

  3. klausi89

    klausi89 Mitglied

  4. klausi89

    klausi89 Mitglied

    achso und die Daten werden alle 15 min aktualisiert und würde diese gerne per Cronjob jede Stunde aktualisieren - hatte ich vergessen dazu zu schreiben
     
  5. Sempervivum

    Sempervivum Erfahrenes Mitglied

    Wenn Du die Tabelle schon hast, ist die Hauptarbeit doch schon getan. Du brauchst dann nur noch das Datatables-Skript auf die Tabelle anzuwenden, wie hier:
    https://datatables.net/manual/installation
    und unter dem Link oben beschrieben. Woran scheitert es denn?
     
  6. klausi89

    klausi89 Mitglied

    naja wie oben beschrieben die Api auslesen per http post und die Daten verarbeiten

    curl ?
    json - array ?

    wie auch immer da fehlt mir leider die Kenntnis
    und über 600 Datensätze da einzeln einfügen ist auch schwierig glaub ich
     
  7. Sempervivum

    Sempervivum Erfahrenes Mitglied

    Anscheinend habe ich dich falsch verstanden: Du schreibst, Du hast die Tabellen schon, aber offenbar hast Du sie noch nicht mit den Daten aus der API gefüllt?
     
  8. klausi89

    klausi89 Mitglied

    ja genau :) hatte bisher manuell Daten in die Tabelle eingegeben....wird mir aber langsam zu aufwendig deshalb würde ich dies eben gerne über die api automatisch befüllen.....
    nur leider habert es am auslesen mit curl json_decode usw.

    soviel wie ich mir das schon angeschaut habe - ich steig leider immer noch nicht dahinter wie es richtig funktioniert :(
     
  9. Sempervivum

    Sempervivum Erfahrenes Mitglied

    Dann gibt es im wesentlichen zwei Wege, dein Ziel zu erreichen:
    1. Das JSON in ein geschachteltetes Array umzuwandeln, dieses auszulesen und aus den Daten das HTML der Tabelle zu erzeugen.
    2. Die Ajax-Option von Datatables für verschachtelte Objekte verwenden wie hier beschrieben: https://datatables.net/examples/ajax/deep.html. Diese Lösung scheint mir eleganter zu sein und ich würde sie empfehlen.
     
  10. klausi89

    klausi89 Mitglied

    hmmm....ok ?!?

    keine Ahnung da waren sie wieder meine 3 Probleme

    weiß nun trotzdem nicht wie ich die Daten auslese und in meine Tabelle bekomme :(
     
  11. Sempervivum

    Sempervivum Erfahrenes Mitglied

    Ich habe mal für Option 2 eine Demo aufgebaut, die die Daten ausliest und in die Tabelle einträgt. Dort musst Du den Kopf der Tabelle und weitere Spalten ergänzen:
    Code (Text):
    1. <!DOCTYPE html>
    2. <html>
    3. <head>
    4.     <meta charset="utf-8">
    5.     <link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico">
    6.     <meta name="viewport" content="initial-scale=1.0, maximum-scale=2.0">
    7.     <title>DataTables example - Child rows (show extra / detailed information)</title>
    8.  
    9.     <link rel="stylesheet" type="text/css" href="//cdn.datatables.net/1.10.15/css/jquery.dataTables.min.css">
    10.     <script src="//code.jquery.com/jquery-1.10.2.js"></script>
    11.     <script src="//cdn.datatables.net/1.10.15/js/jquery.dataTables.min.js"></script>
    12.     <script type="text/javascript" language="javascript" class="init"></script>
    13.  
    14. </head>
    15. <body>
    16.     <table id="table-ajax">
    17.     </table>
    18.     <script>
    19.         $('#table-ajax').DataTable({
    20.             "processing": true,
    21.             "ajax": {
    22.                 "url": "datatables-ajax.json", // hier die URL deiner API eintragen
    23.                 "dataSrc": "list_data.premium.BTC"
    24.             },
    25.             "columns": [
    26.                 { "data": "name" },
    27.                 { "data": "owner_name" }
    28.                 // hier weitere Spalten ergaenzen
    29.             ]
    30.         });
    31.     </script>
    32. </body>
    33. </html>
     
  12. klausi89

    klausi89 Mitglied

    Hallo und danke schon mal für die Hilfe das klappt bis hier her ganz gut nur ein paar kleine Dinge hätte ich noch

    und zwar:

    creation_date - wird in Tage angegeben...kann man das umrechnen lassen das er z.Bsp. 2 Monate anzeigt ?
    url - hier wird die Url angezeigt hätte da aber lieber einen Button (bootstrap) der per target ="_blank" anklickbar ist

    und kann man den die sortierung voreinstellen das er z.Bsp nach paid_week anzeigt

    lg
     
  13. Sempervivum

    Sempervivum Erfahrenes Mitglied

    Das ist einfach, siehe hier:
    https://datatables.net/examples/basic_init/table_sorting.html

    Da gibt es die Möglichkeit, der Wert einer Zelle spaltenspezifisch fürr die Anzeige vorzubereiten, siehe hier:
    https://stackoverflow.com/questions/28617443/datatables-format-returning-ajax-data
    https://datatables.net/examples/advanced_init/column_render.html
     
  14. klausi89

    klausi89 Mitglied

    Ok danke erstmal ich schau mir das mal in ruhe an....ich danke dir jedenfals wie verrückt es funktioniert bis hier hin alles einwandfrei - dickes fettes DANKE :)
     
  15. klausi89

    klausi89 Mitglied

    sry irgendwie versteh ich das nicht so richtig
    ich habe diesen Code von datatables eingefügt
    <script>
    $(document).ready(function() {
    $('#datatablename').DataTable( {
    "order": [[ 3, "desc" ]]
    } );
    } );
    </script>

    eingefügt

    bekomme aber immer diesen Fehler:

    DataTables warning: table id=datatablename - Cannot reinitialise DataTable. For more information about this error, please see http://datatables.net/tn/3

    wo genau muss das den hin ? sry das ist völliges neuland für mich
     
  16. Sempervivum

    Sempervivum Erfahrenes Mitglied

    Offenbar hast Du den Code mit dem "order" komplett hinzu gefügt. Du darfst dataTable() nur einmal aufrufen und bei diesem Aufruf das Objekt mit "order" übergeben, wie in dem Beispiel.
     
  17. klausi89

    klausi89 Mitglied

    sry ich verstehe es einfach nicht....wenn ich es in den anderen Code von dir mit einfüge sagt er dann not data in this table :(
     
  18. Sempervivum

    Sempervivum Erfahrenes Mitglied

    Poste mal den Code im Zusammenhang. Das wird sicher funktionieren und es kann nur eine Kleinigkeit sein. Oder, wenn Du es online hast, die URL.
     
  19. Sempervivum

    Sempervivum Erfahrenes Mitglied

    Musste selber ein wenig suchen, aber so funktioniert es:
    Code (Text):
    1.     <table id="table-ajax">
    2.     </table>
    3.     <script>
    4.         $('#table-ajax').DataTable({
    5.             "processing": true,
    6.             "ajax": {
    7.                 "url": "datatables-ajax.json",
    8.                 "dataSrc": "list_data.premium.BTC"
    9.             },
    10.             "columns": [
    11.                 { "data": "name" },
    12.                 { "data": "owner_name" }
    13.             ],
    14.             "order": [[1, "desc"]]
    15.         });
    16.     </script>
     
  20. klausi89

    klausi89 Mitglied

    ah alles klar danke so hatte ich es schon hat nur das Komma gefehlt, glaube ich habe das Prinzip nun verstanden - sry wegen der umstände die ich dir bereitet habe :)
     
Die Seite wird geladen...