11. november 2002 - 07:57Der 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')"); }
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 :-)
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?
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 ..
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.
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
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.
Synes godt om
Ny brugerNybegynder
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.