INSERT INTO een ARRAY
Ik ben bezig met een klein portfolioscript. Ik heb een zeer complete tutorial (+100 A4'tjes) gevolgd. Nu wil ik iets gaan proberen wat niet in de tutorial staat en snap iets niet.
Ik wil een scriptje maken wat de gegevens uit een formulier versturen naar de database. Nou zijn de gewone velden niet zo'n probleem, maar het probleem zit hem in de array die ik wil versturen.
Nou is mijn vraag hoe ik dit aan moet pakken.
Ik heb nu dit:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
include 'db_connect.php';
if(isset($_POST['verzenden']))
{
$sTitel = addslashes($_POST['titel']);
$sOpdrachtgever = addslashes($_POST['opdrachtgever']);
$sWebsite = addslashes($_POST['website']);
$sOmschrijving = addslashes($_POST['omschrijving']);
$iJaar = addslashes($_POST['jaar']);
$iCategorie = addslashes($_POST['categorie']);
$aTechniek = array('Pro.CMS', 'SEO', 'Webshop', 'Clickstream', 'Usability');
mysql_query("INSERT INTO portfolio (titel, opdrachtgever, website, omschrijving, jaar) VALUES ('".$sTitel."', '".$sOpdrachtgever."', '".$sWebsite."', '".$sOmschrijving."', '".$iJaar."', '".$iCategorie."')") or die (mysql_error());
echo 'Je gegevens zijn succesvol in de database geplaatst';
}
?>
include 'db_connect.php';
if(isset($_POST['verzenden']))
{
$sTitel = addslashes($_POST['titel']);
$sOpdrachtgever = addslashes($_POST['opdrachtgever']);
$sWebsite = addslashes($_POST['website']);
$sOmschrijving = addslashes($_POST['omschrijving']);
$iJaar = addslashes($_POST['jaar']);
$iCategorie = addslashes($_POST['categorie']);
$aTechniek = array('Pro.CMS', 'SEO', 'Webshop', 'Clickstream', 'Usability');
mysql_query("INSERT INTO portfolio (titel, opdrachtgever, website, omschrijving, jaar) VALUES ('".$sTitel."', '".$sOpdrachtgever."', '".$sWebsite."', '".$sOmschrijving."', '".$iJaar."', '".$iCategorie."')") or die (mysql_error());
echo 'Je gegevens zijn succesvol in de database geplaatst';
}
?>
Koen
serialize
De vraag is alleen: wil je dit écht? Hoe ga je straks efficiënt een lijst maken van websites die één bepaalde techniek in zich hebben?
Je kunt beter een aparte tabel met technieken maken. Daarin zet je alle mogelijke technieken: SEO, CMS, webshop, noem maar op. Elke techniek krijgt een eigen ID.
Vervolgens maak je een koppeltabel, die de rijen in de tabel met websites koppelt aan de rijen in de tabel met technieken.
Stel: ik heb een website met ID 25. Ik wil daaraan de technieken met ID's 3, 10 en 16 koppelen. Dan krijg ik in de koppeltabel dus drie rijen:
Op deze manier kun je vervolgens met JOINs en dergelijken eenvoudig websites met bepaalde technieken gaan selecteren.
De vraag is alleen: wil je dit écht? Hoe ga je straks efficiënt een lijst maken van websites die één bepaalde techniek in zich hebben?
Je kunt beter een aparte tabel met technieken maken. Daarin zet je alle mogelijke technieken: SEO, CMS, webshop, noem maar op. Elke techniek krijgt een eigen ID.
Vervolgens maak je een koppeltabel, die de rijen in de tabel met websites koppelt aan de rijen in de tabel met technieken.
Stel: ik heb een website met ID 25. Ik wil daaraan de technieken met ID's 3, 10 en 16 koppelen. Dan krijg ik in de koppeltabel dus drie rijen:
Op deze manier kun je vervolgens met JOINs en dergelijken eenvoudig websites met bepaalde technieken gaan selecteren.
Ik heb de volgende database structuur:
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
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
CREATE TABLE `categorie` (
`id` int(5) NOT NULL auto_increment,
`categorie` varchar(225) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=11 ;
--
-- Gegevens worden uitgevoerd voor tabel `categorie`
--
INSERT INTO `categorie` (`id`, `categorie`) VALUES
(1, 'Websites'),
(2, 'Vindbaarheid'),
(3, 'Hosting'),
(4, 'Webshop'),
(5, 'Clickstream'),
(6, 'Usability'),
(7, 'Huisstijlontwerp'),
(8, 'Visitekaartjes'),
(9, 'Brochures'),
(10, 'Briefpapier');
-- --------------------------------------------------------
--
-- Tabel structuur voor tabel `portfolio`
--
CREATE TABLE `portfolio` (
`id` int(4) NOT NULL auto_increment,
`titel` varchar(225) NOT NULL,
`opdrachtgever` varchar(225) NOT NULL,
`technieken` varchar(225) NOT NULL,
`website` varchar(225) NOT NULL,
`omschrijving` varchar(225) NOT NULL,
`jaar` date NOT NULL,
`categorie_id` int(4) NOT NULL,
PRIMARY KEY (`id`),
KEY `categorie_id` (`categorie_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
`id` int(5) NOT NULL auto_increment,
`categorie` varchar(225) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=11 ;
--
-- Gegevens worden uitgevoerd voor tabel `categorie`
--
INSERT INTO `categorie` (`id`, `categorie`) VALUES
(1, 'Websites'),
(2, 'Vindbaarheid'),
(3, 'Hosting'),
(4, 'Webshop'),
(5, 'Clickstream'),
(6, 'Usability'),
(7, 'Huisstijlontwerp'),
(8, 'Visitekaartjes'),
(9, 'Brochures'),
(10, 'Briefpapier');
-- --------------------------------------------------------
--
-- Tabel structuur voor tabel `portfolio`
--
CREATE TABLE `portfolio` (
`id` int(4) NOT NULL auto_increment,
`titel` varchar(225) NOT NULL,
`opdrachtgever` varchar(225) NOT NULL,
`technieken` varchar(225) NOT NULL,
`website` varchar(225) NOT NULL,
`omschrijving` varchar(225) NOT NULL,
`jaar` date NOT NULL,
`categorie_id` int(4) NOT NULL,
PRIMARY KEY (`id`),
KEY `categorie_id` (`categorie_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
Dit is overigens de hele php pagina die ik momenteel heb om het te versturen naar de database:
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
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
<?php
include 'db_connect.php';
if(isset($_POST['verzenden']))
{
$sTitel = addslashes($_POST['titel']);
$sOpdrachtgever = addslashes($_POST['opdrachtgever']);
$sWebsite = addslashes($_POST['website']);
$sOmschrijving = addslashes($_POST['omschrijving']);
$iJaar = addslashes($_POST['jaar']);
$iCategorie = addslashes($_POST['categorie']);
$aTechniek = array('Pro.CMS', 'SEO', 'Webshop', 'Clickstream', 'Usability');
mysql_query("INSERT INTO portfolio (titel, opdrachtgever, website, omschrijving, jaar) VALUES ('".$sTitel."', '".$sOpdrachtgever."', '".$sWebsite."', '".$sOmschrijving."', '".$iJaar."', '".$iCategorie."')") or die (mysql_error());
echo 'Je gegevens zijn succesvol in de database geplaatst';
}
else
{
?>
<form action=" <?=$_SERVER['PHP_SELF']?> " method="POST">
Titel: <input type="text" name="titel" /><br />
Opdrachtgever: <input type="text" name="opdrachtgever" /><br />
Website: <input type="text" name="website" /><br />
Omschrijving: <input type="text" name="omschrijving" /><br />
Jaar: <input type="text" name="jaar" /><br />
Categorie:
<select name="categorie" id="categorie">
<option>Pro.CMS</option>
<option>SEO</option>
<option>Webshop</option>
<option>Clickstream</option>
<option>Usability</option>
</select>
<input type="submit" name="verzenden" value="verzenden" />
</form>
<?
}
?>
include 'db_connect.php';
if(isset($_POST['verzenden']))
{
$sTitel = addslashes($_POST['titel']);
$sOpdrachtgever = addslashes($_POST['opdrachtgever']);
$sWebsite = addslashes($_POST['website']);
$sOmschrijving = addslashes($_POST['omschrijving']);
$iJaar = addslashes($_POST['jaar']);
$iCategorie = addslashes($_POST['categorie']);
$aTechniek = array('Pro.CMS', 'SEO', 'Webshop', 'Clickstream', 'Usability');
mysql_query("INSERT INTO portfolio (titel, opdrachtgever, website, omschrijving, jaar) VALUES ('".$sTitel."', '".$sOpdrachtgever."', '".$sWebsite."', '".$sOmschrijving."', '".$iJaar."', '".$iCategorie."')") or die (mysql_error());
echo 'Je gegevens zijn succesvol in de database geplaatst';
}
else
{
?>
<form action=" <?=$_SERVER['PHP_SELF']?> " method="POST">
Titel: <input type="text" name="titel" /><br />
Opdrachtgever: <input type="text" name="opdrachtgever" /><br />
Website: <input type="text" name="website" /><br />
Omschrijving: <input type="text" name="omschrijving" /><br />
Jaar: <input type="text" name="jaar" /><br />
Categorie:
<select name="categorie" id="categorie">
<option>Pro.CMS</option>
<option>SEO</option>
<option>Webshop</option>
<option>Clickstream</option>
<option>Usability</option>
</select>
<input type="submit" name="verzenden" value="verzenden" />
</form>
<?
}
?>
Eigenlijk zijn er dan dus 2 vragen.
1. Klopt het zoals ik het nu heb?
2. Hoe kan ik die array ook versturen in het formulier? Hoe krijg ik die array in het formulier?
*** EDIT .. Ik weet niet of dit wel de beste oplossing is hoor. Misschien is er wel een betere en makkelijkere oplossing.
Gewijzigd op 01/01/1970 01:00:00 door Jurgen B
Met <?= word je erg afhankelijk van serverinstellingen, alleen op een dedicated server zou ik hier heel misschien over nadenken. In alle gevallen kun je hier problemen mee verwachten. Gebruik gewoon <?php echo $var ?>, dan weet je zeker dat het nooit fout gaat.