MySQL foreign key, PHP & Contact form help?

Hey guys!

I’m quite new to PHP, databases etc and i’m taking a course on the subject at school atm. The only problem is that my teacher is reaally bad :stuck_out_tongue: So we basicly have to figure out everything ourselves.

Here is the problem:
I got a task from my teacher to create a website on which users can contact the owners trough a form. This form is supposed to putt all the information in a MySQL Database. I took a backup from PHPmyAdmin to a .sql file and this its contents(some is in Norwegian :P, but the “code” itself is ofcourse english):

[code]-- phpMyAdmin SQL Dump
– version 3.4.10.1
http://www.phpmyadmin.net

– Vert: localhost
– Generert den: 11. Mar, 2012 08:16 AM
– Tjenerversjon: 5.1.60
– PHP-Versjon: 5.2.17

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: mjornsen_kontakt



– Tabellstruktur for tabell firma

DROP TABLE IF EXISTS firma;
CREATE TABLE IF NOT EXISTS firma (
firmaid int(5) NOT NULL AUTO_INCREMENT COMMENT ‘FK fra person’,
firmnavn varchar(50) NOT NULL COMMENT ‘firmanavn’,
PRIMARY KEY (firmaid)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;



– Tabellstruktur for tabell henvendelser

DROP TABLE IF EXISTS henvendelser;
CREATE TABLE IF NOT EXISTS henvendelser (
id int(5) NOT NULL,
melding text NOT NULL COMMENT ‘melding’,
date date NOT NULL,
henvdelsesid int(5) NOT NULL AUTO_INCREMENT COMMENT ‘PK for hendvendelser’,
PRIMARY KEY (henvdelsesid),
KEY id (id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=8 ;



– Tabellstruktur for tabell person

DROP TABLE IF EXISTS person;
CREATE TABLE IF NOT EXISTS person (
id int(5) NOT NULL AUTO_INCREMENT COMMENT ‘ID - Identifikator PK’,
fornavn varchar(35) NOT NULL COMMENT ‘Fornavn til kunde’,
etternavn varchar(35) NOT NULL COMMENT ‘Etternavn til kunde’,
email varchar(50) NOT NULL COMMENT ‘Email til kunde’,
firmaid int(5) DEFAULT NULL COMMENT ‘Firma til kunden’,
PRIMARY KEY (id),
KEY firmaid (firmaid)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT=‘person tabell’ AUTO_INCREMENT=12 ;


– Dataark for tabell person

INSERT INTO person (id, fornavn, etternavn, email, firmaid) VALUES
(1, ‘Mathias’, ‘Jørnsen’, ‘[email protected]’, NULL),
(2, ‘Petter’, ‘haga’, ‘phahga’, NULL),
(7, ‘Per’, ‘Ulv’, ‘[email protected]’, NULL),
(8, ‘Per’, ‘Ulv’, ‘[email protected]’, NULL),
(9, ‘Sol’, ‘NO’, ‘[email protected]’, NULL),
(10, ‘jsandiaj’, ‘dasbhdbahs’, ‘sdbahjsbdahj’, NULL),
(11, ‘bsdhs’, ‘sdahbashjbd’, ‘sadhbjashdb’, NULL);


– Begrensninger for dumpede tabeller


– Begrensninger for tabell henvendelser

ALTER TABLE henvendelser
ADD CONSTRAINT henvendelser_ibfk_2 FOREIGN KEY (id) REFERENCES person (id) ON DELETE NO ACTION ON UPDATE NO ACTION;


– Begrensninger for tabell person

ALTER TABLE person
ADD CONSTRAINT person_ibfk_2 FOREIGN KEY (firmaid) REFERENCES firma (firmaid) ON DELETE NO ACTION ON UPDATE NO ACTION;

/*!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 */;
[/code]

And this is the form:

[code]

                    <label>Fornavn:</label>
                    <input name="name"  id="name" type="text" class="form-poshytip" title="Skriv inn ditt fornavn" />
                    
                    <label>Etternavn:</label>
                    <input name="ename"  id="ename" type="text" class="form-poshytip grom" title="Skriv inn ditt etternavn" />
                
                    <label>E-mail:</label>
                    <input name="email"  id="email" type="text" class="form-poshytip" title="Skriv inn din e-mail" />
                
                    <label>Firma:</label>
                    <input name="firma"  id="firma" type="text" class="form-poshytip" title="Skriv inn ditt firmanavn" />
                
                    <div class="kommentar">
                    <label>Melding:</label>
                    <textarea  name="melding"  id="melding" rows="20" cols="5" class="form-poshytip-kommentar" title="Skriv inn din melding"></textarea>
                    
                <div class="send">
                <p><input type="submit" value="SEND" name="Submit" id="submit" /></p>
                </div>
                </div>
            </fieldset>
        </form>[/code]

And this is the PHP (kontakt.php):
[php]<?php

define(‘DB_NAME’, ‘mjornsen_kontakt’);
define(‘DB_USER’, ‘mjornsen_*****’);
define(‘DB_PASSWORD’, ‘*******’);
define(‘DB_HOST’, ‘localhost’);

$link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);

if (!$link) {
die('Could not connect: ’ . mysql_error());
}

$db_selected = mysql_select_db(DB_NAME, $link);

if (!$db_selected) {
die('Can’t use ’ . DB_NAME . ': ’ . mysql_error());
}

$value = $_POST[‘name’];
$value2 = $_POST[‘ename’];
$value3 = $_POST[‘email’];
$value4 = $_POST[‘firma’];
$value5 = $_POST[‘melding’];

$sql = “INSERT INTO person (fornavn, etternavn, email) VALUES (’$value’, ‘$value2’, ‘$value3’)”;

if (!mysql_query($sql)) {
die('Error: ’ . mysql_error());
}

$sql2 = “INSERT INTO henvendelser (melding) VALUES (’$value5’)”;

if (!mysql_query($sql2)) {
echo('Error: ’ . mysql_error());
}

$sql3 = “INSERT INTO firma (firmanavn) VALUES (’$value4’)”;

if (!mysql_query($sql3)) {
echo('Error: ’ . mysql_error());
}

mysql_close();
?>[/php]

When i put something in the form, it works for The the “person” table but both the others fail giving this error: “cannot add or update A child row. a foreign key constraint fails.”

Any advice? thanks :slight_smile:

Hmm, now i tried to allow null values for the foreign key “id” in table “henvendelser” and it wont let me, stating "#1067 - Invalid default value for ‘id’ "

Sponsor our Newsletter | Privacy Policy | Terms of Service