INSERT INTO een ARRAY

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jurgen B

Jurgen B

09/03/2008 21:07:00
Quote Anchor link
Dag mensen,

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)
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
<?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';
  }

?>
 
PHP hulp

PHP hulp

04/12/2024 09:54:18
 

09/03/2008 21:12:00
Quote Anchor link
waarom moet het persee een array zijn, kan je die items niet gewoon los toevoegen? Wat bedoel je pressies, moet je de array (al die waardes) in een tabel proppen? of moeten er losse velden zijn voor elke array? of moet je soms 5x hetzelfde, maar dan alleen met andere waardes van de array toevoegen?

Koen
 
- -

- -

09/03/2008 21:26:00
Quote Anchor link
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:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
website | techniek
25      | 3
25      | 10
25      | 16


Op deze manier kun je vervolgens met JOINs en dergelijken eenvoudig websites met bepaalde technieken gaan selecteren.
 
Jurgen B

Jurgen B

09/03/2008 21:33:00
Quote Anchor link
Dag,

Ik heb de volgende database structuur:
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
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 ;



Dit is overigens de hele php pagina die ik momenteel heb om het te versturen naar de database:
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
<?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>
<?
  }
?>


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
 
Frank -

Frank -

09/03/2008 22:49:00
Quote Anchor link
Offtopic: addslashes() gebruik je om je data naar de klote te helpen, zeer onwenselijke slashes zijn het resultaat... Ga de boel slim escapen met bv. mysql_real_escape_string(), dan komen er ook geen gore slashes in je database te staan. Desondanks zullen queries niet stuk lopen op SQL-injection of quotes '. Gevolg: Je hoeft je data ook niet meer met stripslashes() op te schonen, scheelt dus weer een overbodige actie.

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.
 



Overzicht Reageren

 
 

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.