[PHP, SQL, jQuery] Datatables Server-side processing

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Matthijz98
  • Registratie: Januari 2013
  • Laatst online: 03-07 13:18
Beste tweakers.

Ik voor een project wil ik gebruik maken van DataTables Data Manager om een editable tabel te maken.
Alleen krijg ik niet werkend.
Om een tabel bewerkbaar te maken moet ik eerst een tabel hebben deze moet je maken met jquery datatables.
Maar zelfs dat lukt me al niet.
Ik ben uitgegaaan van dit artikel
Dit is wat ik nu heb.
serverside.php
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// DB table to use
$table = 'wedstrijden';
 
// Table's primary key
$primaryKey = 'ID';
 
// Array of database columns which should be read and sent back to DataTables.
// The `db` parameter represents the column name in the database, while the `dt`
// parameter represents the DataTables column identifier. In this case simple
// indexes
$columns = array(
    array( 'db' => 'Team_1', 'dt' => 0 ),
    array( 'db' => 'Team_2',  'dt' => 1 ),
    array( 'db' => 'Punten_Team_1',   'dt' => 2 ),
    array( 'db' => 'Punten_Team_2',     'dt' => 3 ),
);
 
// SQL server connection information
$sql_details = array(
    'user' => 'root',
    'pass' => 'usbw',
    'db'   => 'volleyball',
    'host' => 'localhost'
);

Dit werkt.

Tabel.php
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<head>
    <?php
    include "serverside.php";
    ?>
    <script src="//code.jquery.com/jquery-1.11.3.min.js"></script>
    <script src="https://cdn.datatables.net/1.10.10/js/jquery.dataTables.min.js"></script>

</head>
<body>
<script>
$(document).ready(function() {
    $('test').DataTable( {
        "processing": true,
        "serverSide": true,
        "ajax": "serverside.php"
    } );
} );
</script>
</body>

Maar helaas geeft dit een lege pagina.
Zou iemand mij kunnen helpen door te vertellen wat ik fout doe _/-\o_ _/-\o_

Alvast bedankt

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Ik mis sowieso een element in je HTML waar je de datatable op probeert toe te passen ("test"; sowieso zou ik daar een #test of .test verwachten). In je gelinkte artikel, tabje "HTML" is dat <table id="example".... Ook snap ik je include "serverside.php"; niet; je echo't toch hopelijk niet die zaken naar de client? Ook mis ik in de serverside.php het daadwerkelijk uitvoeren van de query en de output van de resultset als JSON naar de client. Dus lang verhaal kort: ben je zéker dat je begrijpt hoe een AJAX call werkt en hoe dit geheel in elkaar zou moeten steken?

[ Voor 69% gewijzigd door RobIII op 06-01-2016 15:19 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Matthijz98
  • Registratie: Januari 2013
  • Laatst online: 03-07 13:18
Bedankt voor de snelle reactie.
RobIII schreef op woensdag 06 januari 2016 @ 15:15:
Ik mis sowieso een element in je HTML waar je de datatable op probeert toe te passen ("test"; sowieso zou ik daar een #test of .test verwachten). In je gelinkte artikel, tabje "HTML" is dat <table id="example"....
Ik dacht dat het meer een soort optie was dat je ook gegevens uit een html tabel editable kan maken. Maar ik moet dus eerst een tabel maken met kolommen die gelijk zijn aan de kolommen van mijn sql tabel??
RobIII schreef op woensdag 06 januari 2016 @ 15:15:
Ook snap ik je include "serverside.php"; niet; je echo't toch hopelijk niet die zaken naar de client?
Je hebt gelijk had hem er in gezet tijdens het debuggen.
RobIII schreef op woensdag 06 januari 2016 @ 15:15:
Ook mis ik in de serverside.php het daadwerkelijk uitvoeren van de query en de output van de resultset als JSON naar de client. Dus lang verhaal kort: ben je zéker dat je begrijpt hoe een AJAX call werkt en hoe dit geheel in elkaar zou moeten steken?
Dat was mij ook opgevallen maar ga er van uit dat de plug-in dat voor zijn rekening neemt.
RobIII schreef op woensdag 06 januari 2016 @ 15:15:
Dus lang verhaal kort: ben je zéker dat je begrijpt hoe een AJAX call werkt en hoe dit geheel in elkaar zou moeten steken?
Mijn docent is er nooit in geslaag het helemaal uit te leggen maar het principe is duidelijk.

Acties:
  • 0 Henk 'm!

  • Erkel
  • Registratie: Mei 2006
  • Laatst online: 11-07 09:45
Volgens mij ben je wat dingen vergeten:
  • Er is geen element 'test', je zou dus iets een class of id moeten geven met de naam test.
  • [code=html] <div id="test"></div> <div class="test"></div> [/code]
  • Je PHP geeft geen JSON terug, dit zie je bij het voorbeeld onder het tabje AJAX.
  • Je mist de SSP class die in het voorbeeld blijkbaar wordt gebruikt om de data op te bouwen aan de hand van de gegevens.

[ Voor 48% gewijzigd door Erkel op 06-01-2016 15:53 ]

C2D E6600 - 2048MB Kingston - Sapphire HD2900XT - 200Gb Samsung - Asus P5B-E


Acties:
  • 0 Henk 'm!

  • Matthijs B
  • Registratie: Oktober 2006
  • Laatst online: 15:29
Matthijz98 schreef op woensdag 06 januari 2016 @ 15:40:
Dat was mij ook opgevallen maar ga er van uit dat de plug-in dat voor zijn rekening neemt.
De plugin kan nooit de query uitvoeren en de data returnen aangezien het een jquery (dus client-side) plugin is terwijl je database operaties server-side (dus in php) moeten worden uitgevoerd

Acties:
  • 0 Henk 'm!

  • BlueZero
  • Registratie: Mei 2007
  • Laatst online: 11:56
Een Ajax-call bestaat uit twee onderdelen een Cliënt-side en een Server-side die met elkaar communiceren.
De client-side is jouw browser bijvoorbeeld waarin javascript staat. De Server-side is een PHP script wat iets doet.

In jouw geval moet je een server hebben die data uit een database haalt en die vervolgens terug geeft naar je browser. De plugin zet die data netjes in een tabel die op je scherm wordt gezet.

De datatable tabel geeft bepaalde zaken aan de server mee bijvoorbeeld:
- Op welke pagina zit je
- Is er ergens op gezocht
- Is er ergens op gesorteerd.

Je server moet dit verwerken in een SQL query. Echter dit zijn een hoop regels code. Je example include een bestand dat dit voor je kan doen, dat bestand kun je hier vinden: https://github.com/DataTa...ide/scripts/ssp.class.php

Acties:
  • 0 Henk 'm!

  • Ghandi
  • Registratie: Oktober 2003
  • Laatst online: 24-06 15:51
Speelt dit nog steeds?

Als je serverside.php aanroept, moet je een json request terug krijgen.

[{"id":"17","title":"Dinges op donderdag 10.00","name":"Belangrijk op donderdag 10.00","resourceId":7,"start":"2015-10-15T08:00:00.000Z","end":"2015-10-15T09:00:00.000Z","valid":true,"color":"green","url":"/activity_schedules/14"}]

is een voorbeeld van een .json resultaat.

Dit moet je in je webbrowser kunnen openen als je serverside.php in typt.

Het is sowieso '.test' of '#test', afhankelijk of je een id of een class aanmaakt waaraan je je table hangt.

Stap 1 is kijken of je datatabel daadwerkelijk uitgevoerd wordt. Voeg gewoon ergens "console.log ("tekstje"); toe
of een mooie alert.
Stap 2 is of er überhaupt een request naar je server binnen komt (maar waarschijnlijk krijg je andere foutmeldingen met datatables.)

Zet het anders online, dan kunnen vast meerdere mensen je verder helpen.

Zelf ben ik ruby on rails ontwikkelaar, maar gebruik datatables (met editor) tegenwoordig best wel vaak.

Suc6.
Pagina: 1