Pittige reguliere expressie (of niet?)
Code (php)
1
||((vraag_id))ABCDEFGHIJKLMNOP||||((vraag_id))ABCDEFGHIJKLMNOP||||((vraag_id))ABCDEFGHIJKLMNOP||||((vraag_id))ABCDEFGHIJKLMNOP||||((vraag_id))ABCDEFGHIJKLMNOP||||((vraag_id))ABCDEFGHIJKLMNOP||
Tabel: Tickets
id, formulier_id, data
De bovenstaande code wordt opgeslagen in de column data en bevat dus meerdere gegevens, nu moet ik deze dus dmv een reguliere expressie gaan uitlezen maar ik vind dit nogal abracadabra. Is hier iemand die mij zou willen helpen met een reguliere expressie schrijven om deze data goed uit te lezen.
SQL dump van de huidige tabellen (tickets ontbreekt)
Code (php)
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
-- phpMyAdmin SQL Dump
-- version 3.4.9
-- http://www.phpmyadmin.net
--
-- Machine: localhost
-- Genereertijd: 07 feb 2012 om 11:56
-- Serverversie: 5.1.61
-- PHP-Versie: 5.3.10
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
--
-- Database: `spi_db`
--
-- --------------------------------------------------------
--
-- Tabelstructuur voor tabel `categorie`
--
CREATE TABLE IF NOT EXISTS `categorie` (
`id` int(4) unsigned NOT NULL AUTO_INCREMENT,
`naam` varchar(100) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
--
-- Gegevens worden uitgevoerd voor tabel `categorie`
--
INSERT INTO `categorie` (`id`, `naam`) VALUES
(1, 'Netwerk'),
(2, 'Telefonie');
-- --------------------------------------------------------
--
-- Tabelstructuur voor tabel `formulieren`
--
CREATE TABLE IF NOT EXISTS `formulieren` (
`id` int(8) unsigned NOT NULL AUTO_INCREMENT,
`naam` varchar(100) NOT NULL,
`categorie_id` int(4) unsigned NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
--
-- Gegevens worden uitgevoerd voor tabel `formulieren`
--
INSERT INTO `formulieren` (`id`, `naam`, `categorie_id`) VALUES
(1, 'Problemen met draadloze printer', 1),
(2, 'Problemen met SIM kaart', 2);
-- --------------------------------------------------------
--
-- Tabelstructuur voor tabel `vragen`
--
CREATE TABLE IF NOT EXISTS `vragen` (
`id` int(8) unsigned NOT NULL AUTO_INCREMENT,
`formulier_id` int(8) unsigned NOT NULL,
`vraag` varchar(255) NOT NULL,
`toelichting` text NOT NULL,
`type` enum('text','memo','dropdown') NOT NULL,
`verplicht` enum('ja','nee') NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;
--
-- Gegevens worden uitgevoerd voor tabel `vragen`
--
INSERT INTO `vragen` (`id`, `formulier_id`, `vraag`, `toelichting`, `type`, `verplicht`) VALUES
(1, 1, 'Sinds wanneer heeft u dit probleem?', 'Het liefst een exacte datum als dit bekend is!', 'text', 'ja'),
(2, 1, 'Dit is nog een vraag?', '', 'text', 'ja'),
(3, 2, 'Heeft u vaker problemen met uw telefoon?', '', 'text', 'ja');
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
-- version 3.4.9
-- http://www.phpmyadmin.net
--
-- Machine: localhost
-- Genereertijd: 07 feb 2012 om 11:56
-- Serverversie: 5.1.61
-- PHP-Versie: 5.3.10
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
--
-- Database: `spi_db`
--
-- --------------------------------------------------------
--
-- Tabelstructuur voor tabel `categorie`
--
CREATE TABLE IF NOT EXISTS `categorie` (
`id` int(4) unsigned NOT NULL AUTO_INCREMENT,
`naam` varchar(100) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
--
-- Gegevens worden uitgevoerd voor tabel `categorie`
--
INSERT INTO `categorie` (`id`, `naam`) VALUES
(1, 'Netwerk'),
(2, 'Telefonie');
-- --------------------------------------------------------
--
-- Tabelstructuur voor tabel `formulieren`
--
CREATE TABLE IF NOT EXISTS `formulieren` (
`id` int(8) unsigned NOT NULL AUTO_INCREMENT,
`naam` varchar(100) NOT NULL,
`categorie_id` int(4) unsigned NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
--
-- Gegevens worden uitgevoerd voor tabel `formulieren`
--
INSERT INTO `formulieren` (`id`, `naam`, `categorie_id`) VALUES
(1, 'Problemen met draadloze printer', 1),
(2, 'Problemen met SIM kaart', 2);
-- --------------------------------------------------------
--
-- Tabelstructuur voor tabel `vragen`
--
CREATE TABLE IF NOT EXISTS `vragen` (
`id` int(8) unsigned NOT NULL AUTO_INCREMENT,
`formulier_id` int(8) unsigned NOT NULL,
`vraag` varchar(255) NOT NULL,
`toelichting` text NOT NULL,
`type` enum('text','memo','dropdown') NOT NULL,
`verplicht` enum('ja','nee') NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;
--
-- Gegevens worden uitgevoerd voor tabel `vragen`
--
INSERT INTO `vragen` (`id`, `formulier_id`, `vraag`, `toelichting`, `type`, `verplicht`) VALUES
(1, 1, 'Sinds wanneer heeft u dit probleem?', 'Het liefst een exacte datum als dit bekend is!', 'text', 'ja'),
(2, 1, 'Dit is nog een vraag?', '', 'text', 'ja'),
(3, 2, 'Heeft u vaker problemen met uw telefoon?', '', 'text', 'ja');
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
Ik denk namelijk dat je data in de tabel tickets kunt opsplitsen naar een nieuwe tabel met koppeling naar de tickets.
@TJVB, ik zou inderdaad een tabel kunnen maken, maar als er dan 8 vragen per formulier zijn dan krijg ik dus ook voor dat formulier 8 records in die tabel.. Als er dan 10.000 ingevulde tickets zijn, zijn er 80.000 rows (als ieder formulier 8 vragen heeft). Is dit niet overkill? Ik weet dat een reguliere expressie in dit geval niet de mooiste oplossing is, maar vooral omdat ik de data met base64 wil verkleinen zal dit behoorlijk wat schelen qua grootte.
Daarnaast is 80 000 rows in principe niet veel.
Oké, erg stom van me dat ik dacht dat base64 het verkort! Ik ga aan de slag met meerdere tabellen en laat het idee om een reguliere expressie te gebruiken achterwege, ondanks dat ik met explode al bijna een oplossing had, bedankt voor je wijsheid ;)