Generic table edit

Door Jan Koehoorn, 15 jaar geleden, 4.709x bekeken

Met dit script kun je een willekeurige tabel editen in bijvoorbeeld een CMS. In een kolom aan de linkerkant van je pagina heb je titels van je records. In het rechterdeel heb je een div met de details per record. Via een multi-array in config.php kun je aangeven welke velden je wilt zien.

De positie in de linkerkolom wordt onthouden dmv een combi van JavaScript en PHP. Het script maak gebruik van de mootools lib.

Voor de interactie met de database gebruik ik class.core.php en class.database.php. Voor de overzichtelijkheid heb ik die hier weggelaten.

Enjoy, en tips zijn natuurlijk welkom.

Groeten, Jan Koehoorn

Voorbeeld: http://www.jankoehoorn.nl/table_edit/

Gesponsorde koppelingen

PHP script bestanden

  1. generic-table-edit

 

Er zijn 33 reacties op 'Generic table edit'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Onbekend Onbekend
Onbekend Onbekend
15 jaar geleden
 
0 +1 -0 -1
K vind het wel cool!
Roeltje M
Roeltje M
15 jaar geleden
 
0 +1 -0 -1
bij mij doet hij het niet :(

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
Warning: main(../classes/class.core.php) [function.main]: failed to open stream: No such file or directory in /home/vhosts/design-xtr.nl/httpdocs/klanten/index.php on line 4

Warning: main(../classes/class.core.php) [function.main]: failed to open stream: No such file or directory in /home/vhosts/design-xtr.nl/httpdocs/klanten/index.php on line 4

Fatal error: main() [function.require]: Failed opening required '../classes/class.core.php' (include_path='.:/usr/share/pear') in /home/vhosts/design-xtr.nl/httpdocs/klanten/index.php on line 4
Jan Koehoorn
Jan Koehoorn
15 jaar geleden
 
0 +1 -0 -1
@ roel: ik quote mezelf even:
Quote:
Voor de interactie met de database gebruik ik class.core.php en class.database.php. Voor de overzichtelijkheid heb ik die hier weggelaten.
Storeman storeman
storeman storeman
15 jaar geleden
 
0 +1 -0 -1
Zelf heb ik ook iets dergelijks geboowd, alleen met behulp van een XML configuratie. Diverse types als int, password, bool worden ook ondersteund. Daarnaast kunnen relaties worden vastgelegd en extra voorwaarden aan gekoppeld. Zo kunnen relationele velden door middel van ajax of een select getoond worden en wordt het bijbehorende ID ingevuld.

Dit systeem is een leuk begin, ik zie dit soort dingen liever in een object vorm, maar das persoonlijk.

Leuk en leerzaam script!
Klaasjan Boven
Klaasjan Boven
15 jaar geleden
 
0 +1 -0 -1
leuk Jan, ik zou id echter wel laten zien maar dan disabled
Kumkwat Trender
Kumkwat Trender
15 jaar geleden
 
0 +1 -0 -1
Hihi, Ga is in naam5 ;) :P
Jan volgens mij moet je het nog XSS veilig maken! (alleen kan ik mijn script niet meer aanpassen op naam5...)
Jelmer -
Jelmer -
15 jaar geleden
 
0 +1 -0 -1
Ik heb hem wat aangepast, zodat hij PDO gebruikt in plaats van Jan's eigen databaseklasse. Daarbij heb ik hier en daar wat htmlentities toegevoegd.

Zie http://phphulp.ikhoefgeen.nl/scripts/1239/


15 jaar geleden
 
0 +1 -0 -1
Keurig Jan,
mooi werk en zeer handig. Ga ik zeker voor testdoeleinden gebruiken want ik vind PHPmyadmin vaak te lomp en langzaam.
Onbekend Onbekend
Onbekend Onbekend
15 jaar geleden
 
0 +1 -0 -1
Quote:
Hihi, Ga is in naam5 ;) :P
Jan volgens mij moet je het nog XSS veilig maken! (alleen kan ik mijn script niet meer aanpassen op naam5...)


Weer zo iemand die denk dat hij grappig is.
Kumkwat Trender
Kumkwat Trender
15 jaar geleden
 
0 +1 -0 -1
haha :P,

Wie heeft eigenlijk unlink erop gezet? (PHP WERKT NIET)

ik heb alleen een allert, document.href en een poort scanner toegevoegd :P
Ferdi R
Ferdi R
15 jaar geleden
 
0 +1 -0 -1
Als ik op lala klik wordt ik doorgestuurt naar google??
Wesley
Wesley
15 jaar geleden
 
0 +1 -0 -1
Het is wel zo handig om alles verplicht in te houden..
- -
- -
15 jaar geleden
 
0 +1 -0 -1
Zucht, XSS-kleuters... Heb ze maar ff weggegooid.
Onbekend Onbekend
Onbekend Onbekend
15 jaar geleden
 
0 +1 -0 -1
Quote:
haha :P,

Wie heeft eigenlijk unlink erop gezet? (PHP WERKT NIET)

ik heb alleen een allert, document.href en een poort scanner toegevoegd :P


Waarom ook niet proberen te hacken?
Wouter K
Wouter K
15 jaar geleden
 
0 +1 -0 -1
nice jan
Kumkwat Trender
Kumkwat Trender
15 jaar geleden
 
0 +1 -0 -1
@tommy wat wil je echt hacken met javascript??
Citroen Anoniem Graag
Citroen Anoniem Graag
15 jaar geleden
 
0 +1 -0 -1
Ziet er mooi uit! Alleen jammer dat hij geen valid html geeft =P

Hmm, wat miss nog een leuke uitbreiding is, is dat hij de velden automatisch uitleest. Dan krijg je een soort phpmyadmin, maar dan veel beperkter.
Jan Koehoorn
Jan Koehoorn
15 jaar geleden
 
0 +1 -0 -1
@ Freek: ik heb er een aantal fouten uitgehaald. De validator klaagt vooral over de ampersands in de url en die zet ik er met JavaScript in. Ga ik nog even naar kijken.

Automatisch uitlezen van de velden kan wel, maar dan moet het script ook alle veldtypes ondervangen. Dat lijkt me meer iets voor versie 2.0


15 jaar geleden
 
0 +1 -0 -1
Quote:
Jan Koehoorn schreef op 13.01.2008 09:43
@ roel: ik quote mezelf even:

Quote:
Voor de interactie met de database gebruik ik class.core.php en class.database.php. Voor de overzichtelijkheid heb ik die hier weggelaten.


:o maakt niet uit hoor Jan Koehoorn die mag je ook gerust erbij posten hoor beetje onoverzichtelijkheid maakt niet zoveel uit :^)
DJ Lars
DJ Lars
15 jaar geleden
 
0 +1 -0 -1
Zou idd wel makkelijk zijn als die erbij stonden, want ik kan op de rest van PHPhulp de database class van Jan niet vinden.
Jan Koehoorn
Jan Koehoorn
15 jaar geleden
 
0 +1 -0 -1
Vooruit maar weer:
class.core.php
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<?php
    class core {
        protected $errs;
        protected $msgs;
        
        /*
        * constructor
        */

        public function __construct () {
            $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_errs_html () {
            if ($this->has_errs ()) {
                $html = '<div class="errs">';
                foreach ($this->get_errs () as $err) {
                    $html .= $err;
                }

                $html .= '</div>';
            }

            else {
                $html = '';
            }

            return $html;
        }


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

        
        public function get_msgs_html () {
            if ($this->has_msgs ()) {
                $html = '<div class="msgs">';
                foreach ($this->get_msgs () as $msg) {
                    $html .= $msg;
                }

                $html .= '</div>';
            }

            else {
                $html = '';
            }

            return $html;
        }


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

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

?>

class.database.php
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
53
54
55
56
57
58
59
60
61
62
63
64
<?php
    class database extends core {
        private $db_host;
        private $db_user;
        private $db_pass;
        private $db_name;
        
        protected $res;
        protected $affected_rows;
        protected $num_rows;
        protected $insert_id;
        protected $records;
        
        public function __construct () {
            parent::__construct ();
            $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>');
            }

            $this->insert_id = 0;
            $this->records = array ();
        }

        
        public function query ($sql) {
            if (!$this->res = mysql_query ($sql)) {
                array_push ($this->errs, '<p>' . mysql_errno () . ': ' . mysql_error () . '</p>');
                array_push ($this->errs, '<pre>' . htmlentities (str_replace ("\t", '', $sql)) . '</pre>');
                return false;
            }

            else {
                $this->insert_id = mysql_insert_id ();
                return true;
            }
        }

        
        public function fetch () {
            return mysql_fetch_assoc ($this->res);
        }

        
        public function get_affected_rows () {
            $this->affected_rows = mysql_affected_rows ();
            return $this->affected_rows;
        }

        
        public function get_num_rows () {
            return mysql_num_rows ($this->res);
        }

        
        public function get_insert_id () {
            if (isset ($this->insert_id)) {
                return $this->insert_id;
            }

            else {
                return false;
            }
        }
    }

?>
DJ Lars
DJ Lars
15 jaar geleden
 
0 +1 -0 -1
Bedankt Jan!
Dit is een erg mooie uitbreiding op mijn bestaande "CMS" waar ik op dit moment alleen nog pagina's mee kan beheren. Hiermee kan ik nu ook zaken als mijn gastenboek en agenda beheren.
Roeltje M
Roeltje M
15 jaar geleden
 
0 +1 -0 -1
wat voor code moet ik aan mijn MYSQL server toevoegen voor tables etc?
Jan Koehoorn
Jan Koehoorn
15 jaar geleden
 
0 +1 -0 -1
@ roel: de volgende:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
    function maak_tables_etc () {
        $sql = "CREATE TABLES ETC";
    }

?>


Edit:
Geintje hoor. Maar je moet ff precies zeggen wat je wilt.
Roeltje M
Roeltje M
15 jaar geleden
 
0 +1 -0 -1
Je hebt van die SQL codes, die je bij phpmyadmin in moet voeren bij de database, en dat dan de tabellen en rijen etc er staan.
Roeltje M
Roeltje M
15 jaar geleden
 
0 +1 -0 -1
en hoe moeten de tabellen etc heten?
DJ Lars
DJ Lars
15 jaar geleden
 
0 +1 -0 -1
@roel:
Misschien verstandiger om je eerst wat te verdiepen in PHP.
Duidelijk heb je er nog zo goed als geen kaas van gegeten.
Frank -
Frank -
15 jaar geleden
 
0 +1 -0 -1
@Roel: Een beetje kennis over databases en SQL kan ook geen kwaad... Dit heeft verder niks met PHP te maken, SQL is een totaal andere taal met een totaal ander doel.

SQL is an Art!
Remco Leuven
Remco Leuven
15 jaar geleden
 
0 +1 -0 -1
Klopt het dat dit niet werkt met PHP4?
Frank -
Frank -
15 jaar geleden
 
0 +1 -0 -1
@Remco: Waarom zou je een stuk antiek als versie 4 willen gebruiken? Dat het niet werkt, komt door de gebruikte classe. Deze gebruikt een keurige constructor, dat wordt niet ondersteund in versie 4. Versie 4 kan nauwelijks uit de voeten met OOP...
Remco Leuven
Remco Leuven
15 jaar geleden
 
0 +1 -0 -1
Mijn host heeft PHP4 en nog geen upgrade naar PHP5. Vandaar dat ik daaraan ben gebonden. Is die makkelijk op te lossen?
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Jan Koehoorn
Jan Koehoorn
15 jaar geleden
 
0 +1 -0 -1
@ Remco: andere host zoeken ;-)

Je kunt de classes trouwens wel omzetten naar PHP 4 al vind ik het eigenlijk niks, maar goed. Code niet gecheckt dus er kunnen nog foutjes in zitten!
core.php
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<?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_errs_html () {
            if ($this->has_errs ()) {
                $html = '<div class="errs">';
                foreach ($this->get_errs () as $err) {
                    $html .= $err;
                }

                $html .= '</div>';
            }

            else {
                $html = '';
            }

            return $html;
        }

        function
get_msgs () {
            return $this->msgs;
        }
        
        function
get_msgs_html () {
            if ($this->has_msgs ()) {
                $html = '<div class="msgs">';
                foreach ($this->get_msgs () as $msg) {
                    $html .= $msg;
                }

                $html .= '</div>';
            }

            else {
                $html = '';
            }

            return $html;
        }

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

?>

class.database.php
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
53
54
55
56
57
58
59
60
61
62
63
64
<?php
    class database extends core {
        var
$db_host;
        var
$db_user;
        var
$db_pass;
        var
$db_name;
        
        var
$res;
        var
$affected_rows;
        var
$num_rows;
        var
$insert_id;
        var
$records;
        
        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>');
            }

            $this->insert_id = 0;
            $this->records = array ();
        }
        
        function
query ($sql) {
            if (!$this->res = mysql_query ($sql)) {
                array_push ($this->errs, '<p>' . mysql_errno () . ': ' . mysql_error () . '</p>');
                array_push ($this->errs, '<pre>' . htmlentities (str_replace ("\t", '', $sql)) . '</pre>');
                return false;
            }

            else {
                $this->insert_id = mysql_insert_id ();
                return true;
            }
        }
        
        function
fetch () {
            return mysql_fetch_assoc ($this->res);
        }
        
        function
get_affected_rows () {
            $this->affected_rows = mysql_affected_rows ();
            return $this->affected_rows;
        }
        
        function
get_num_rows () {
            return mysql_num_rows ($this->res);
        }
        
        function
get_insert_id () {
            if (isset ($this->insert_id)) {
                return $this->insert_id;
            }

            else {
                return false;
            }
        }
    }

?>

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

Inhoudsopgave

  1. generic-table-edit

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.