Avatar billede aske2 Nybegynder
11. november 2002 - 07:57 Der er 5 kommentarer og
1 løsning

Problemer med insert

Hej eksperter

Jeg har en form, hvorfra data skal lagres i forskellige tabeller i databasen, men jeg har et problem.
Jeg har en tabel kunde med primary key kundeid (auto_increment) og en tabel forespørgsel med foreign key kundeid. Spørgsmålet er så, hvordan håndteres dette, når der skal insertes i tabellen forespørgsel? Indtil videre ser en af mine inserts sådan ud, men hvordan får jeg sat kundeid ind?

if($_POST[t_drill_brochure] == "ok")
{
    mysql_query("INSERT INTO forespørgsel (fspid, dato, kontaktperson, type, statusid)
    VALUES('', now(), '$_POST[kontaktperson]', 'Brochure om T-Drill', '1')");
}
Avatar billede flse Nybegynder
11. november 2002 - 08:19 #1
kundeid indsætter du i "forespørgsel" som ethvert andet felt.

mysql_query("INSERT INTO forespørgsel (fspid, kundeid, dato, kontaktperson, type, statusid) VALUES('', $iKundeId, now(), '$_POST[kontaktperson]', 'Brochure om T-Drill', '1')");

Hvis du lige har oprettet en forekomst i "kunde", kan du finde det genererede kundeid ved:
$iKundeId = mysql_insert_id(); // mysql_insert_id returnere den sidste auto generede nøgle.

Iøvrigt behøves du ikke at angive auto generede felter i dine inserts, medmindre du ønsker at tildele en specifik værdi.
Såfremt fspid er din autogenerede nøgle for "forespørgsel", kan du benytte:

mysql_query("INSERT INTO forespørgsel (kundeid, dato, kontaktperson, type, statusid) VALUES($iKundeId, now(), '$_POST[kontaktperson]', 'Brochure om T-Drill', '1')");

Jeg foretrækker selv kun at have nødvendige felter med i INSERT og UPDATE, da jeg syntes de bliver lettere at læse, men det er jo smag og behag  :-)
Avatar billede aske2 Nybegynder
11. november 2002 - 08:42 #2
Det virker :-) Tak skal du have - også for tip om de autogenererede felter og mysql_insert_id(). Du skal straks få dine velfortjente point, men kan du ikke give mig 'opskriften' på en select, så jeg kan checke de forskellige relationer?
Avatar billede flse Nybegynder
11. november 2002 - 08:47 #3
tjaa... hvad med:

SELECT k.kundeid,k.kundenavn,f.dato,f.type,f.kontaktperson
FROM kunde k
JOIN forespørgsel f ON f.kundeid=k.kundeid;

Iøvrigt bør du ALDRIG benytte danske bogstaver i tabel og feltnavne, da det kan give nogle underlige resultater af og til ... hold dig til a-z, 0-9 og underscore .. og store bogstaver kan også give problemer, da MySQL skelner imellem Felt1 og felt1 ..
Avatar billede aske2 Nybegynder
11. november 2002 - 08:52 #4
Tak for det. Jeg har et møde nu, men forsøger med det, når jeg kommer tilbage. Vil i øvrigt også fjerne alle æ, ø, å osv. fra alle tabel- og feltnavne. Jeg vender tilbage om et par timer.
Avatar billede aske2 Nybegynder
11. november 2002 - 11:27 #5
Jeg kan ikke rigtigt finde ud af om det virker for jeg kan ikke finde ud af at skrive resultatet af selecten ud. Jeg har så prøvet at lave selecten i phpMyAdmin, men så får jeg følgende fejlmeddelelse:
You have an error in your SQL syntax near 'ON f.kundeid=k.kundeid LIMIT 0, 30' at line 1
Avatar billede flse Nybegynder
11. november 2002 - 13:00 #6
har du husket at skrive "FROM kunde k" og ikke bare "FROM kunde" ?  k'et efter kunde er et alias, som gør at k.kundeid betyder at det er kundeid fra kunde tabellen man mener, og ikke kundeid fra forespørgsel tabellen.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester