Versio

Pittige reguliere expressie (of niet?)

Overzicht Reageren

Dylan Onowerp

Dylan Onowerp

07/02/2012 12:09:34
Quote Anchor link
Ik ben bezig met een ticket systeem, een soort helpdesk. Nu heb ik 3 tabellen, namelijk: categorie, formulieren, vragen. Nu ben ik aan een vierde tabel bezig waarin alle ingevulde formulieren worden opgeslagen (die ga ik tabel tickets noemen). Nu zat ik te denken hoe ik deze informatie ga opslaan, en ik kwam op het volgende uit.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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)
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
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 */;
 
PHP hulp

PHP hulp

25/05/2012 11:18:14
Gesponsorde koppelingen:
BHosted Hosting al vanaf € 1,- per maand

Controleer nu gratis jouw domeinnaam:

  
 
TJVB tvb

TJVB tvb

07/02/2012 12:20:08
Quote Anchor link
Ga eens zoeken op normaliseren.
Ik denk namelijk dat je data in de tabel tickets kunt opsplitsen naar een nieuwe tabel met koppeling naar de tickets.
 
Dylan Onowerp

Dylan Onowerp

07/02/2012 12:25:41
Quote Anchor link
@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.
 
TJVB tvb

TJVB tvb

07/02/2012 12:30:20
Quote Anchor link
Base64 maakt het juist met 1/3 groter en niet kleiner.
Daarnaast is 80 000 rows in principe niet veel.
 
Dylan Onowerp

Dylan Onowerp

07/02/2012 12:43:49
Quote Anchor link
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 ;)
 



Overzicht Reageren