vom Array - json_encode zu Datatable


klausi89

Erfahrenes Mitglied
#1
Hallo ich hab mal wieder probleme :)

und zwar hab ich einen array (der so bleiben muss weil er auch anderweitig eingesetzt wird)
diesen verarbeite ich weiter mit json_encode und speichere in in einer Datei links.php

dann möchte ich gerne diese links in einer Datatable ausgeben lassen

das ganze mit nur 3 hauptfeldern - Name , Kategorie und einen Button (bootstrap) der dann zur Url weiterleitet

habe dazu folgendes bisher erstellt

Code:
<?php

$linklist = array(
        array("link1", "http://www.werbebanner1.com", "kategorie"),
        array("link2", "http://www.werbebanner2.com", "kategorie"),
        array("link3", "http://www.werbebanner3.com", "kategorie"),
        array("link4", "http://www.werbebanner4.com", "kategorie"),
        array("link5", "http://www.werbebanner5.com", "kategorie"),
        array("link6", "http://www.werbebanner6.com", "kategorie"),
        array("link7", "http://www.werbebanner7.com", "kategorie"),
        array("link8", "http://www.werbebanner8.com", "kategorie")
      );
      
$encodedString = json_encode($linklist);

file_put_contents('links.php', $encodedString);
      
   echo $encodedString;     // zum testen was ausgegeben wird
  
  
?>
<head>

<link rel="stylesheet" href="https://cdn.datatables.net/v/bs-3.3.7/jqc-1.12.4/dt-1.10.15/datatables.min.css">
<script src="//code.jquery.com/jquery-1.10.2.js"></script>
<script src="https://cdn.datatables.net/v/bs-3.3.7/jqc-1.12.4/dt-1.10.15/datatables.min.js"></script>

</head>
<body>


<table id="example" class="display" style="width:100%">
        <thead>
            <tr>
                <th>Name</th>
                <th>Kategorie</th>
                <th>URL</th>
            </tr>
        </thead>
    </table>
      



 <script>

    $(document).ready(function() {
    $('#example').DataTable( {
        "processing": true,
        "paging":   false,
            "info":     false,
            "ordering": false,
            "searching": false,
        "ajax": "links.php"
    } );
} );

    </script>
nun fehlt mir leider der anschluss von der Json datei zur Datentabelle da ich das mit dem ajax leider nicht so sehr verstehe und die json_encode ausgabe sollte doch irgendwie feldzuweisungen besitzen oder? kann man das beim encode irgendwie mit erstellen lassen oder braucht man das überhaupt für die Datatable?
 

Sempervivum

Erfahrenes Mitglied
#2
da ich das mit dem ajax leider nicht so sehr verstehe ... braucht man das überhaupt für die Datatable
Nein, das braucht man nicht unbedingt, man kann das Skript auch auf eine fertige Tabelle anwenden und wenn Du mit Ajax und JSON nicht so vertraut bist, empfehle ich auch, das zu tun und die Tabelleneinträge mit PHP zu generieren:
Code:
    <?php
    $arbeiter = array(
        array("link1", "http://www.werbebanner1.com", "kategorie1"),   
        array("link2", "http://www.werbebanner2.com", "kategorie2"),
        array("link3", "http://www.werbebanner3.com", "kategorie3"),
        array("link4", "http://www.werbebanner4.com", "kategorie4"),
        array("link5", "http://www.werbebanner5.com", "kategorie5"),                       
        array("link6", "http://www.werbebanner6.com", "kategorie6"),
        array("link7", "http://www.werbebanner7.com", "kategorie7"),
        array("link8", "http://www.werbebanner8.com", "kategorie8"),
        array("link9", "http://www.werbebanner9.com", "kategorie9"),
        array("link10", "http://www.werbebanner10.com", "kategorie10")                     
      );
      ?>
      <table id="example" class="display" style="width:100%">
      <thead>
          <tr>
              <th>Name</th>
              <th>Kategorie</th>
              <th>URL</th>
          </tr>
      </thead>
      <tbody>
      <?php
          foreach($arbeiter as $arb) {
              echo '<tr>';
              echo '<td>' . $arb[0] . '</td>';
              echo '<td>' . $arb[2] . '</td>';
              echo '<td><a href="' . $arb[1] . '">Link</a></td>';
              echo '</tr>';
          }
      ?>
     </tbody>
  </table>
<script>

$('#example').DataTable( {
    "processing": true,
    "paging":   false,
    "info":     false,
    "ordering": false,
    "searching": false,
} );

</script>
(Um es schnell testen zu können, habe ich einfach das $arbeiter von früher genommen.)
 

klausi89

Erfahrenes Mitglied
#3
hallo und danke für die schnelle und vorallem einfachere antwort, das einzige was ich nun noch habe
kann man das noch aufteilen...meinetwegen 5 links auf der ersten tabellenseite und 5 dann auf der nächsten.
(Pagnitation) oder muss man dafür je eine extra seite machen

ich frage weil wenn die linkliste größer wird wären dann noch mehrere seiten hilfreich
 

Sempervivum

Erfahrenes Mitglied
#4
Das ist kein Problem, Paging ist Standard bei Datatables, Du hast es nur mit dieser Option ausgeschaltet:
"paging": false,Setze den Wert auf true und das Paging wird eingeschaltet.