15. juli 2002 - 13:22Der er
3 kommentarer og 2 løsninger
Oprettelse af relaterede poster i db via 1 formular
Jeg skal til at lave et lille adminsystem hvor man fx kan oprette en bygning i en database. Til bygningen kan fx tilknyttes nogle pdf-filer (som ligger i en anden tabel og tilknyttes med en mellemliggende tabel). Det skulle være ok.
Hidtil når jeg løser sådan en opgave plejer jeg at lave sådan at bygningen skal oprettes først (i databasen) og derfor kan pdf-erne først tilknyttes bygningen når man vælger 'rediger'..
Hvad er den smarteste måde at lavet sådan noget som en 1-step løsning i stedet for en (for brugeren) ulogisk fremgangsmåde?
Jeg har nogenlunde styr på alm. asp vb.script og dhtml.. Vil bare gerne høre hvad mere erfarne vil foreslå- der kan jo smides noget i nogle hidden fields og sådan noget.. --- Lidt uddybning:
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Der findes (og anvendes) mange forskellige måder at løse dette problem på.
I dit tilfælde ville jeg nok anvende Kopitabeller til redigering og først overføre alle data samlet til de rigtige tabeller når brugeren er færdig med oprettelsen. Primær key (ID for bygning) under oprettelse skal være brugers session-ID. (Eller endnu bedre brugerID hvis det findes.)
Der skal dog oprettes et ekstra felt i kopitabellen med en dato, der jo skal sikre at man en gang i mellem kan slette halvfærdige oprettelser med en SQL-sætning. Det gælder dog ikke hvis man kan anvende brugerID da man således kan starte med at "rydde op" i kopitabellen når bruger opretter en ny.
Du kan også anvende de eksisterende tabeller og anvende brugerID med munis foran - men så skal du rundt andre steder og sikre at bygninger med negative ID ikke vises.
indsæt først dine pdf'er og gem id'et (der findes en "funktion" der gør at du kan finde det netop indsatte id) og gem id i en variabel - indsæt derefter bygningnavn (og gem ligeledes id i en variabel.
der bør ses TOTALT bort fra coltau's forslag. Det er jo at gøre grin med relationelle databaser!!!
Jeg går ud fra dine primære keys er autoincrement - ellers skal de være det. Så er det bare at smide en ny post ind for bygningen. Gemme det id databasen gi'r den (det kommer an på din DB, hvordan du gør det).
Så opretter du pdfer og samtidig en post i mange-til-mange-tabellen, for at knytte dem op på den relevante bygning.
PS: Hvis du bruge Access eller MSSQL, kan du lave en rs.open "select * from pdfer where id=0", conn, 1, 3 rs.addnew rs("pdfnavn") = "navn" rs.update intPdfID = rs("id") rs.close
Hvis du mangler en metode til at arbejde med flere tabeller (med eller uden relationer), hvor nedenstående krav skal være opfyldt så kan du jo anvende min metode eller en af de 100 andre jeg der findes.
1. Rettelserne må ikke kunne ses af andre brugere før man er helt færdig. 2. Sikkerhed for at rettelser der ikke færdiggøres fjernes igen. 3. Undgå belastning af hukommelsen på serveren.
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.