insert multiple foreign keys in dezelfde tabel

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Paul prive

paul prive

15/08/2011 10:59:16
Quote Anchor link
Ik heb aangaande deze 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
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
92
93
94
95
96
97
-- phpMyAdmin SQL Dump
-- version 3.3.10deb1
-- http://www.phpmyadmin.net
--
-- Host: localhost
-- Generation Time: Aug 15, 2011 at 10:39 AM
-- Server version: 5.1.54
-- PHP Version: 5.3.5-1ubuntu7.2

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";


/*!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: `test`
--

-- --------------------------------------------------------

--
-- Table structure for table `adressen`
--

CREATE TABLE IF NOT EXISTS `adressen` (
  `adres_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `gebruiker_id` int(10) unsigned NOT NULL,
  `plaats` varchar(40) NOT NULL,
  `country_id` int(11) NOT NULL,
  PRIMARY KEY (`adres_id`),
  KEY `gebruiker_id` (`gebruiker_id`),
  KEY `country_id` (`country_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;

--
-- Dumping data for table `adressen`
--

INSERT INTO `adressen` (`adres_id`, `gebruiker_id`, `plaats`, `country_id`) VALUES
(1, 1, 'Amsterdam', 5);

-- --------------------------------------------------------

--
-- Table structure for table `country`
--

CREATE TABLE IF NOT EXISTS `country` (
  `country_id` int(11) NOT NULL AUTO_INCREMENT,
  `country` varchar(80) COLLATE latin1_general_ci NOT NULL,
  PRIMARY KEY (`country_id`),
  KEY `country_id` (`country_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=6 ;

--
-- Dumping data for table `country`
--

INSERT INTO `country` (`country_id`, `country`) VALUES
(1, 'Belgium'),
(2, 'France'),
(3, 'Germany'),
(4, 'Austria'),
(5, 'Netherlands');

-- --------------------------------------------------------

--
-- Table structure for table `gebruikers`
--

CREATE TABLE IF NOT EXISTS `gebruikers` (
  `gebruiker_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `naam` varchar(20) NOT NULL,
  PRIMARY KEY (`gebruiker_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;

--
-- Dumping data for table `gebruikers`
--

INSERT INTO `gebruikers` (`gebruiker_id`, `naam`) VALUES
(1, 'Jan');

--
-- Constraints for dumped tables
--

--
-- Constraints for table `adressen`
--
ALTER TABLE `adressen`
  ADD CONSTRAINT `adressen_ibfk_1` FOREIGN KEY (`country_id`) REFERENCES `country` (`country_id`) ON DELETE CASCADE ON UPDATE CASCADE,
  ADD CONSTRAINT `adressen_fk` FOREIGN KEY (`gebruiker_id`) REFERENCES `gebruikers` (`gebruiker_id`) ON DELETE CASCADE ON UPDATE CASCADE;


Zoals je ziet heb ik in het tabel adressen 2 foreignkeys, ik kan middels onderstaande code
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
<?php

// verbind met de database
$objMysqli = new mysqli( 'host', 'user', 'pass', 'db' );

// start transactie
$objMysqli->query( "START TRANSACTION" );

// voeg de gebruiker toe
if ( $objMysqli->query( "INSERT INTO gebruikers (naam) VALUES ('Jan')" ) )
{

    // de query is gelukt, voeg het adres toe
    $strQuery = sprintf(
        "INSERT INTO adressen (gebruiker_id, plaats) VALUES (%d, 'Amsterdam')",
        $objMysqli->insert_id
    );
    
    if ( $objMysqli->query( $strQuery ) )
    {

        // beide queries zijn gelukt, voltooi de transactie
        $objMysqli->query( "COMMIT" );
        echo 'De gebruiker is toegevoegd';
    }

    else
    {
        // de adresquery is mislukt, maak de transactie ongedaan
        $objMysqli->query( "ROLLBACK" );
        echo 'De gebruiker is niet toegevoegd, het adres kon niet worden opgeslagen';
    }
}

else
{
    // de adresquery is mislukt, beëindig de transactie
    echo 'De gebruiker is niet toegevoegd aan de tabel gebruikers';
    $objMysqli->query( "ROLLBACK" );
}


// sluit de verbinding
$objMysqli->close();
?>


de gebruikers id toevoegen maar ik zou niet weten hoe ik de gegevens van de tabel country hieraan kan toevoegen zodat de country id ook op de juiste manier wordt toegevoegd?
voor country werk ik met een dropdownlist.

Toevoeging op 15/08/2011 12:25:36:

heeft iemand een idee?

Toevoeging op 15/08/2011 22:27:46:

of een link naar een tutorial/howto?
 
Er zijn nog geen reacties op dit bericht.



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.