Generic Table Generator

Door Jan Koehoorn, 15 jaar geleden, 3.990x bekeken

In de praktijk komt het vaak voor dat je een aantal velden uit een MySQL tabel in een HTML tabel wilt laten zien. Het is dan extra handig als je op de kolomkoppen kunt klikken om op het betreffende veld te sorteren. Als je twee keer na elkaar op dezelfde kolomkop klikt, wordt de sorteervolgorde omgedraaid.

Bonus: in dit script zit de kortste manier verwerkt om tabelrijen om en om te kleuren ;-)))

nJoy!

groeten, Jan Koehoorn

p.s. voor de oudgedienden: ja, ik weet dat ik al eens een tabelgenereer-script heb gemaakt. Dit is gewoon de nieuwste versie, met wat OOP erin verwerkt zodat beginners kunnen zien hoe dat in zijn werk gaat ;-)

p.s.s. FireFox gebruikers kunnen dit script (en alle andere scripts op PHPhulp) een rating geven. Volg de instructies op deze pagina op.

Voorbeeld: http://www.jankoehoorn.nl/generic_table_generator.php

Gesponsorde koppelingen

PHP script bestanden

  1. generic-table-generator

 

Er zijn 32 reacties op 'Generic table generator'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
- -
- -
15 jaar geleden
 
0 +1 -0 -1
Mooi, alleen één dingetje: zorg dat als ie bijv op website is gesorteerd, en ik op naam klik, dattie asc is, ipv desc.
Jan Koehoorn
Jan Koehoorn
15 jaar geleden
 
0 +1 -0 -1
@ Jonathan: goed punt. Gaat op de todo lijst.
Edit:
Is inmiddels verwerkt. Als je op een nieuwe kolom klikt, begint hij altijd met ASC. Als je op dezelfde kolom klikt, wisselt hij.
The Beeding Clown
The Beeding Clown
15 jaar geleden
 
0 +1 -0 -1
sorry, maar vind het maar een beetje mager script.
Voor de beginners is het misschien idd wel leerzaam, maar verder zie ik de meerwaarde er niet echt van in.
Robert Deiman
Robert Deiman
15 jaar geleden
 
0 +1 -0 -1
Leuk gedaan Jan, wel jammer van die array die je op moet geven met de velden, kan je niet een query "uit elkaar trekken" waarbij je de gegevens tussen SELECT en FROM eruit haalt? Dat zou het systeem nog efficienter maken.

Verder vind ik het leuk dat je een script maakt waarbij die ook zelf de links aanmaakt voor sorteren enzo. Dit wordt vaak nog "met de hand" gedaan.

@nano
Heb je ook tips voor aanpassingen waardoor het wel meerwaarde heeft?
Jan Koehoorn
Jan Koehoorn
15 jaar geleden
 
0 +1 -0 -1
@ nano: alleen zeggen dat je iets niet goed vindt, daar heb ik niet zoveel aan natuurlijk. Ik mis de onderbouwing en tips voor verbetering.

@ Robert: jammer van die array? Dat is juist voor de flexibiliteit gedaan! Nu kun je precies de velden opgeven die je wilt. Je weet immers altijd welke velden je in je MySQL tabel hebt.
Jelmer -
Jelmer -
15 jaar geleden
 
0 +1 -0 -1
Misschien nog een idee om van de array met velden een associative array te maken, met als key de veldnamen zoals in de database, en als value de veldnaam zoals je hem zou willen weergeven.

Klein vraagje nog, waarom heb je je database gegevens opgeslagen in je Database-klasse? Je gebruikt ze later toch niet meer?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
$this->db_host = '*****';
            $this->db_user = '*****';
            $this->db_pass = '*****';
            $this->db_name = '*****';
Marvin S
Marvin S
15 jaar geleden
 
0 +1 -0 -1
Alsof je wist dat ik dit nodig had..
haha.. komt goed van pas.. mooi script jan!
bedankt voor het delen..
Robert Deiman
Robert Deiman
15 jaar geleden
 
0 +1 -0 -1
@Jan
Klopt, ik had niet goed gekeken, ik had ff vergeten dat je die SQL string meeneemt in je query. (die je uit je array genereerd). Ik moet mijn opmerking herzien, en gewoon zeggen dat ik het een mooi script vind :)
Jan geen
Jan geen
15 jaar geleden
 
0 +1 -0 -1
prima scriptje hoor, kan hier wel wat mee. bedankt
Marcel K
Marcel K
15 jaar geleden
 
0 +1 -0 -1
Leuk gedaan Jan !
Steven Hack
Steven Hack
15 jaar geleden
 
0 +1 -0 -1
hmm heb ik weer... bij mij werkt hij niet :p maar ik neem aan dat je ergens je naam, wachtwoord en database moet invoeren right? ik kan alleen niet ontdekken waar. Zou iemand me even een zetje kunnen geven?

edit:
ik probeer hem om mijn eigen site, waar mijn database stevow_msl is en mijn table is members en die ziet er zo uit: id username password email gender birthday startdate

Nu heb ik al gevonden dat ik bij $tabelnaam =members; moet invoeren en dan zal ik bij $db = stevow_msl; moeten invoeren als ik me niet vergis. dan krijg ik:

$db = stevow_msl;
$tabelnaam = 'members';

Correct me when i'm wrong.

edit2: Hmm volgens mij moet ik de connectie er zelf bij plakken?
Jan geen
Jan geen
15 jaar geleden
 
0 +1 -0 -1
je moet gewoon al die 3 bestanden gebruiken. in de database class kun je je database gegevens invoeren:
$this->db_host = '*****';
$this->db_user = '*****';
$this->db_pass = '*****';
$this->db_name = '*****';

sterretjes veranderen en dan zou ie al wat moeten doen. succes ermee
Jan Koehoorn
Jan Koehoorn
15 jaar geleden
 
0 +1 -0 -1
@ Jelmer: ja, die kunnen ook gewoon in de constructor.

@ De rest: thanks!

@ aapjuh

Inderdaad de waarden op de sterretjes invullen. En zorgen dat deze verwijzingen kloppen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
    require 'classes/class.core.php';
    require 'classes/class.database.php';
?>

p.s. Het OOP gedeelte gaat uit van PHP5 he!
Steven Hack
Steven Hack
15 jaar geleden
 
0 +1 -0 -1
Het verloopt hier niet soepel, helaas want het is een mooi script. Bij de 2 require's heb ik classes weghaald want ze staan in de zelfde map als generic_table_generator.php die ik information.php heb genoemd. Ook heb ik de sterretjes veranderd in mijn persoonlijke gegevens maar nu krijg ik:

Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /home/stevow/public_html/statistics/class.core.php on line 3

Hopelijk kun je me helpen, heb het script letterlijk gekoppieerd. Hoop niet dat het te maken heeft met het feit dat ik niet bekend ben met OOP

edit: ik zie nu net dat mijn server php 4.4.4 heeft, helaas voor mij :(
sorry voor de tijd.

edit2: nu keek ik hier wat rond en ik las dat OOP ook in 4.4.4 kan? maar ik neem aan dat je dan andere codes moet gebruiken, heeft iemand van deze OOP toevallig een 4.4.4 versie? ik neem aan(hoop ik) dat ik niet de enige ben die geen PHP 5 heeft? want ik zou het script van Jan heel graag willen gebruiken (heb wat tekst uit mijn eerste bericht weggehaald anders wordt het zo lang :p)
Jan Koehoorn
Jan Koehoorn
15 jaar geleden
 
0 +1 -0 -1
Om er PHP4 OOP van te maken, doe je het volgende:

In generic_table_generator.php
Verander regel 3 in:
error_reporting (E_ALL);

In class.core.php:
Verander het eerste stukje in:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
    class core {
        var
$errs;
        var
$msgs;
        
        /*
        * constructor
        */

        function core () {
            $this->errs = array ();
            $this->msgs = array ();
        }

?>


In class.database.php
Verander het eerste stukje in:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php
    class database extends core {
        var
$db_host;
        var
$db_user;
        var
$db_pass;
        var
$db_name;
        
        var
$res;
        var
$num_rows;
        
        /*
        * constructor
        */

        function database () {
            parent::core ();
            $this->db_host = '*****';
            $this->db_user = '*****';
            $this->db_pass = '*****';
            $this->db_name = '*****';
            if (!mysql_connect ($this->db_host, $this->db_user, $this->db_pass)) {
                array_push ($this->errs, '<p>Connectie met DB is mislukt.</p>');
            }

            if (!mysql_select_db ($this->db_name)) {
                array_push ($this->errs, '<p>Fout bij het selecteren van de database</p>');
            }
        }

?>
Steven Hack
Steven Hack
15 jaar geleden
 
0 +1 -0 -1
heel erg bedankt Jan, echt tof. Hij werkt nu, geniaal gewoon. Mooi script hoor, mijn complimenten.
The Beeding Clown
The Beeding Clown
15 jaar geleden
 
0 +1 -0 -1
Ik heb niet gezegd dat ik het script niet goed vond.. Maar het een beetje magertjes vond.. Het uit een database halen van data en het door een while gooien is beetje basic stuff.. Het had leuk geweest als je hier een class van gemaakt had oid zodat je het makkelijk in een bestaand script kan hangen.

Verder nog een tip :
De ternary style is een verkorte if / else statement. Deze kan je gemakkelijk uitbreiden..

Dit zou ik bijvoorbeeld doen, scheelt weer de extra if / else statements na de ternary statements
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php

    // kijken of $_GET['sort_by'] geset is. Zoniet: eerste arrayelement van $velden pakken
    $sort_by = isset($_GET['sort_by']) && in_array($_GET['sort_by'], $velden) ? $_GET['sort_by'] : $velden[0];

    // kijken of $_GET['sort_order'] geset is. Zoniet: 'ASC' pakken
    $sort_order = isset($_GET['sort_order']) && ($_GET['sort_order'] == 'ASC' || $_GET['sort_order'] == 'DESC') ? $_GET['sort_order'] : 'ASC';

?>
Joeri
Joeri
15 jaar geleden
 
0 +1 -0 -1
Mooi, handig en leerzaam scriptje voor de beginnende php'er, zoals we van je gewoon zijn he Jan.

Grtz;
Pim Vernooij
Pim Vernooij
15 jaar geleden
 
0 +1 -0 -1
Leuk scriptje, alleen een opmerking over je klassen. Je geeft je properties wel een scope mee (protected), maar je methods niet. Die zouden ook public/private of protected moeten zijn.
Paul K
Paul K
15 jaar geleden
 
0 +1 -0 -1
Geweldig ^^
;PEen dingetje, hint: html valid

@Greasemonkey ding xD
Vet gedaan!
Jan Koehoorn
Jan Koehoorn
15 jaar geleden
 
0 +1 -0 -1
Update: de HTML is nu valid en de class method krijgen een scope mee.
Crispijn -
Crispijn -
15 jaar geleden
 
0 +1 -0 -1
Hey Jan,

Briljant script! Dit is vele malen eenvoudiger dan steeds een nieuwe pagina te klussen...

Is het niet super om het helemaal compleet te maken met een paginatie? Of heb je tips over hoe ik dit eenvoudig kan klussen? Ik ben nl niet zo'n OOP kunstenaar...

Cris
Jan Koehoorn
Jan Koehoorn
15 jaar geleden
 
0 +1 -0 -1
Hoi Crispijn,

ja, die paginatie, daar had ik ook al over zitten denken. Ik zit momenteel midden in een verhuizing, maar ik vind het een goede aanvulling.
Steven Hack
Steven Hack
14 jaar geleden
 
0 +1 -0 -1
Hey,

Ik had het script al eens af. Maar me host is er mee opgehouden en zo dom als ik was had ik geen back-up. Nu wil ik hem opnieuw, heb hem ook al aangepast aan php 4 maar hij geeft nog steeds de error:
Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /home/jonkos/public_html/class.core.php on line 17

Als ik op google zoek vind ik alleen me eigen paste, dus dat schiet ook niet op.

Mijn core ziet er nu zo uit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<?php
    class core {
        var
$errs;
        var
$msgs;
        
        /*
        * constructor
        */

        function core () {
            $this->errs = array ();
            $this->msgs = array ();
        }

        
        /*
        * setters
        */

        public function set_err ($err) {
            array_push ($this->errs, $err);
        }


        public function set_msg ($msg) {
            array_push ($this->msgs, $msg);
        }

        
        /*
        * getters
        */

        public function get_errs () {
            return $this->errs;
        }


        public function get_msgs () {
            return $this->msgs;
        }

        
        /*
        * return the number of messages, if any
        * @return int
        */

        public function has_msgs () {
            return count ($this->msgss);
        }

        
        /*
        * return the number of errors, if any
        * @return int
        */

        public function has_errs () {
            return count ($this->errs);
        }
    }

?>
Jan Koehoorn
Jan Koehoorn
14 jaar geleden
 
0 +1 -0 -1
PHP4 kent het keyword public niet. Die moet je dus overal weghalen voor de functions.
Steven Hack
Steven Hack
14 jaar geleden
 
0 +1 -0 -1
Hij geeft nog steeds dezelfde error.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<?php
    class core {
        var
$errs;
        var
$msgs;
        
        /*
        * constructor
        */

        function core () {
            $this->errs = array ();
            $this->msgs = array ();
        }

        
        /*
        * setters
        */

        function set_err ($err) {
            array_push ($this->errs, $err);
        }

        function
set_msg ($msg) {
            array_push ($this->msgs, $msg);
        }

        
        /*
        * getters
        */

        function get_errs () {
            return $this->errs;
        }

        function
get_msgs () {
            return $this->msgs;
        }

        
        /*
        * return the number of messages, if any
        * @return int
        */

        function has_msgs () {
            return count ($this->msgss);
        }

        
        /*
        * return the number of errors, if any
        * @return int
        */

        function has_errs () {
            return count ($this->errs);
        }
    }

?>
Jan Koehoorn
Jan Koehoorn
14 jaar geleden
 
0 +1 -0 -1
Hier zit ook nog een fout:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
    function has_msgs () {
        return count ($this->msgss);
    }

?>
Steven Hack
Steven Hack
14 jaar geleden
 
0 +1 -0 -1
Dat moet msgs zijn ipv msgS bedoel je?

zoja, krijg ik nog steeds: Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /home/jonkos/public_html/class.core.php on line 17
Steven Hack
Steven Hack
14 jaar geleden
 
0 +1 -0 -1
:o *bump* :(
Jan Koehoorn
Jan Koehoorn
14 jaar geleden
 
0 +1 -0 -1
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
    function has_msgs () {
        return count ($this->msgss);
    }

?>

moet zijn:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
    function has_msgs () {
        return count ($this->msgs);
    }

?>
Steven Hack
Steven Hack
14 jaar geleden
 
0 +1 -0 -1
Oke thnx Jan hij werkt nu, bedankt voor de moeite.
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Steven Hack
Steven Hack
14 jaar geleden
 
0 +1 -0 -1
Heey Jan,

Deze keer heb ik een Tip voor je :p Hij werkt bij mij nu goed.

Als je bijvoorbeeld 100, 90, 80 en 70 hebt. Dan zet hij die in de tabel als 100 - 70 - 80 - 90. Misschien iets om aan te passen als je nog eens tijd had.

groetjes,

aapjuh

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. generic-table-generator

Labels

  • Geen tags toegevoegd.

Navigatie

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.