WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Hur kopplar man ihop två st formulär? (https://www.wn.se/forum/showthread.php?t=12366)

Milad 2006-02-13 08:00

Vet någon hur man kan koppla ihop två st formulär?

Ex. Om man vill lägga till en nyhet med bild så har man byggt upp nyheterna i en databas och att bilder ska laddas upp på servern. Att lägga till en nyhet använder ett formulär och att ladda upp en bild ett annat formulär.

Nu vill man alltså koppla ihop de.

Kihlbom 2006-02-13 08:08

Du vill alltså ladda upp en bild till en tabell och ett bildnamn till ett annat plus att den ska sparas på servern? Förstår inte riktigt ovan nämligen.

wiggin 2006-02-13 12:52

Du använder ett formulär istället.

Milad 2006-02-13 13:27

Citat:

Originally posted by wiggin@Feb 13 2006, 13:52
Du använder ett formulär istället.


Men formulären ska ju göra olika saker. Den ena ska ju ladda upp bilden på servern och den andra ska skriva in nyheten i databasen.

Henrik 2006-02-13 13:48

Citat:

Ursprungligen postat av Milad
Citat:

Ursprungligen postat av wiggin
Du använder ett formulär istället.


Men formulären ska ju göra olika saker. Den ena ska ju ladda upp bilden på servern och den andra ska skriva in nyheten i databasen.

Du kan ändå göra båda saker på samma gång. Alternativt så kan du, för att ha två formulär, först lägga in nyheten och ta ut det id som nyheten får. Sedan i det andra formuläret där du laddar upp bilden, så skickas detta id med, så att du vet vilken nyhet som bilden ska höra ihop med.

Robert 2006-02-13 14:13

Lägg in en dropdownbox i bildformuläret där du listar upp alla nyheter (med id't som value). Välj nyhet i dropdownboxen, välj bild[namn] och vipps, så har du ju det data du behöver i en och samma form post.

elofsson 2006-02-13 17:11

Jag skulle löst det med två submit-buttons i formuläret där den ena även tar med bilduppladdningen. Du namnger dessa knappar olika i "name"-taggen och kollar på så vis vilken användaren klickade på.
Klickar användaren på knappen som hör till bilduppladdningen kör du både bilduppladdningsscriptet och nyhetsscriptet. Den andra knappen enbart nyhetsscriptet.

Om jag nu förstod det hela rätt.

zoran 2006-02-13 18:49

Citat:

Originally posted by Robert@Feb 13 2006, 15:13
Lägg in en dropdownbox i bildformuläret där du listar upp alla nyheter (med id't som value). Välj nyhet i dropdownboxen, välj bild[namn] och vipps, så har du ju det data du behöver i en och samma form post.
Gud så krångligt man vill skapa det.

Det du säger är ju att man ska FÖRST posta och spara nyheten och sen tilldela nyheten en bild. Det är TVÅ steg, inte ett.

Jag förstår inte var problemet ligger att parsa en multipart-request och sortera ut data och eventuella filer. Det är inte svårare än så här:

Formen ska vara multipart innehållande minst två fält:
input type text med nyheten,
och input type file med din eventuella fil.

I din "uppladdare" kontrollerar du enkelt ifall filfältet är "null" dvs ingen fil har postats.

Om den är null, lägger du in datat.

Om den INTE är null, stoppar du in datat och tar vara på ett nyskapat id.
Spara bilden. Om allt går bra så kan du även uppdatera datatabellen med att bekräfta att bilden är uppladdad.


Hur du EXAKT bär dig åt, beror på språket. I php har man rätt bra verktyg för sånt. Själv använder jag java och har skrivit en utökning av HttpServletRequest som hanterar multipart-requests på samma sätt som PHP gör.

/Z

zoran 2006-02-13 18:51

Citat:

Ursprungligen postat av Milad
Citat:

Ursprungligen postat av wiggin
Du använder ett formulär istället.



Men formulären ska ju göra olika saker. Den ena ska ju ladda upp bilden på servern och den andra ska skriva in nyheten i databasen.

Nej det ska den inte. Formulären ska skicka ditt data till servern. Punkt. Ditt skript på servern ska ha intelligens att lista ut huruvida en fil finns med och hur den ska hantera ifall både data och fil finns.

Du vinner absolut inget med att ha två formulärer.

Robert 2006-02-13 22:32

Citat:

Ursprungligen postat av zoran
Citat:

Ursprungligen postat av Robert
Lägg in en dropdownbox i bildformuläret där du listar upp alla nyheter (med id't som value). Välj nyhet i dropdownboxen, välj bild[namn] och vipps, så har du ju det data du behöver i en och samma form post.

Gud så krångligt man vill skapa det.

Det du säger är ju att man ska FÖRST posta och spara nyheten och sen tilldela nyheten en bild. Det är TVÅ steg, inte ett.

Jag beskrev väl kanske en editering, inget nyupplägg. Jag skrev dock att allt data fanns att tillgå i samma formulär.

zoran 2006-02-13 22:57

Citat:

Originally posted by Robert@Feb 13 2006, 23:32
Jag beskrev väl kanske en editering, inget nyupplägg. Jag skrev dock att allt data fanns att tillgå i samma formulär.
Jag tror inte du förstår riktigt. Att ha "data tillgängligt i samma formulär" löser ju inte direkt problemet som Milad har. Han har idag två formulär. En för en nyhet och en för en fil som tillhör nyheten.

Om man nu ska köra på din metod, måste man ändå ha två formulär. En där man först matar in nyheter, för att de ska sen bli tillgängliga i din droppdown lista, och sen den med droppdownlistan som man använder för att assignera nyheten en bild.

Det jag säger är att man i enlighet med Milads önskemål, inte har några som helst anledningar att inte göra den saken i ett enda svep.

Milad 2006-02-14 08:20

Tack för svaren grabbar.....ska prova Zorans metod :-)

Robert 2006-02-14 09:45

Citat:

Ursprungligen postat av zoran
Citat:

Ursprungligen postat av Robert
Jag beskrev väl kanske en editering, inget nyupplägg. Jag skrev dock att allt data fanns att tillgå i samma formulär.

Jag tror inte du förstår riktigt. Att ha "data tillgängligt i samma formulär" löser ju inte direkt problemet som Milad har. Han har idag två formulär. En för en nyhet och en för en fil som tillhör nyheten.

Om man nu ska köra på din metod, måste man ändå ha två formulär. En där man först matar in nyheter, för att de ska sen bli tillgängliga i din droppdown lista, och sen den med droppdownlistan som man använder för att assignera nyheten en bild.

Det jag säger är att man i enlighet med Milads önskemål, inte har några som helst anledningar att inte göra den saken i ett enda svep.

Nej nej, jag skrev att datat kan finnas i samma formulär (i motsats till att de måste finnas i 2 st). Om det är filen + 1 dropdown eller en textbox eller vad som helst tror jag ni alla förstår att det inte gör någon skillnad, därav jag ursäktade att jag i mitt exempel nämnde att det skulle finnas en drop, det kan givetvis lika gärna vara en textmassa + filen.

Jag skrev däremot inte hur man benade ut datat på serversidan vilket är 99% av hela jobbet, därav kanske mitt svar inte bidrog så mycket till diskussionen. För detta ber jag om ursäkt! ;)

zoran 2006-02-14 10:21

Citat:

Originally posted by Robert@Feb 14 2006, 10:45
Nej nej, jag skrev att datat kan finnas i samma formulär (i motsats till att de måste finnas i 2 st). Om det är filen + 1 dropdown eller en textbox eller vad som helst tror jag ni alla förstår att det inte gör någon skillnad, därav jag ursäktade att jag i mitt exempel nämnde att det skulle finnas en drop, det kan givetvis lika gärna vara en textmassa + filen.

Jag skrev däremot inte hur man benade ut datat på serversidan vilket är 99% av hela jobbet, därav kanske mitt svar inte bidrog så mycket till diskussionen. För detta ber jag om ursäkt! ;)

Nja, bidrar gör man inte alltid så du behöver inte ursäkta dig för det :).

Det jag oponerar mot är att det visst finns en skillnad i förfarandet. (Antigen förstår jag inte riktigt vad du menar eller tvärtom).

Om man kör på dropdown metoden, så måste man göra det i några steg. För att möjligheten att en nyhetsstory ska finnas med i droppdownen så måste den finnas med när sidan genereras. OK?

Så, det innebär att man måste spara nyheten _först_. Sen ska man låta sidan med dropdownen att genereras. Då har man nyheten i sin droppdown. Då kan man ladda upp filen.

Det innebär att du måste posta 2 gånger för att uppnå samma sak som med min metod.

Min metod med textruta innebär att du matar in din story, väljer fil, och skickar alltihop i en och samma request (klick).

Robert 2006-02-14 11:57

Citat:

Originally posted by zoran@Feb 14 2006, 11:21
[klipp]
(Antigen förstår jag inte riktigt vad du menar eller tvärtom).

Om man kör på dropdown metoden, så måste man göra det i några steg. För att möjligheten att en nyhetsstory ska finnas med i droppdownen så måste den finnas med när sidan genereras. OK?

Ja, ett missförstånd.

Att ha en dropdown med nyheter blir då som jag sa en editering av befintlig post, till skillnad mot ett nyupplägg av en post. Båda scenariona innehåller dock formdata beståendes av fil samt data. Om datat nu är en dropdown med exempelvis ett nyhetsid som value eller om det är själva nyhetstexten spelar mindre roll i en teknisk synvinkel. Skillnaden ligger snarare i den bakomliggande sql-syntaxen än i förfarandet att ta emot ett formulär istället för två, alltså ursprungsfrågan. :)

zoran 2006-02-14 19:34

Citat:

Originally posted by Robert@Feb 14 2006, 12:57
Ja, ett missförstånd.

Att ha en dropdown med nyheter blir då som jag sa en editering av befintlig post, till skillnad mot ett nyupplägg av en post. Båda scenariona innehåller dock formdata beståendes av fil samt data. Om datat nu är en dropdown med exempelvis ett nyhetsid som value eller om det är själva nyhetstexten spelar mindre roll i en teknisk synvinkel. Skillnaden ligger snarare i den bakomliggande sql-syntaxen än i förfarandet att ta emot ett formulär istället för två, alltså ursprungsfrågan. :)

Lol, du har en förmåga att förmulera dig så att jag inte förstår ett dyft.

Alltså, editering av befintlig post förstår jag att man kan ha i en droppdown meny. So far so good. Men om "nyinsättning" av data ska skötas av en formulär som är multipart och har en textarea för nyhetstext och en input för en fil, så måste man ha en egen form för editering av formulärdata om man nu prompt vill ha den med en droppdown-lista.

Jag har ett liknande upplägg dock inte med "nyheter".

På en sida listas alla "objekt" (kan vara nyheter eller vad det nu kan vara för data). Längst ner på sidan finns en länk lägg till. Klickar man på den får man se en form där man matar in datat och eventuellt lägger till en fil. När det postas, läser i mitt fall en servlet av requesten för att se vad som finns med. Om både data och fil finns med, startas en transaction. Data läggs in och ID tas hand om. Filen sparas med id som filnamn. Datat uppdateras med binärvärde som talar om att bilden finns. Transaction commitas.

Om bara data finns, skapas det en databaspost med binärvärde som säger att ingen fil lades till.

När man går sedan till "huvudsidan" ser man alla objekt. Klickar man på ett av objekten får man se samma form som man ser när man skapar, bara den här gången med alla uppgifter ifyllda (förutom filen förstås). Om några filer finns uppladdade för just det objektet syns dem längst ner på sidan.

Man kan då ändra uppgifter och spara, eller välja en ny fil och spara.

Servleten ser att man editerar en befintlig post och plockar upp ID-t och uppdaterar posten i databasen, eller kopierar över den gamla filen.

/Z

Robert 2006-02-14 21:55

Citat:

Ursprungligen postat av zoran
Citat:

Ursprungligen postat av Robert
Ja, ett missförstånd.

Att ha en dropdown med nyheter blir då som jag sa en editering av befintlig post, till skillnad mot ett nyupplägg av en post. Båda scenariona innehåller dock formdata beståendes av fil samt data. Om datat nu är en dropdown med exempelvis ett nyhetsid som value eller om det är själva nyhetstexten spelar mindre roll i en teknisk synvinkel. Skillnaden ligger snarare i den bakomliggande sql-syntaxen än i förfarandet att ta emot ett formulär istället för två, alltså ursprungsfrågan. :)

Lol, du har en förmåga att förmulera dig så att jag inte förstår ett dyft.

Alltså, editering av befintlig post förstår jag att man kan ha i en droppdown meny. So far so good. Men om "nyinsättning" av data ska skötas av en formulär som är multipart och har en textarea för nyhetstext och en input för en fil, så måste man ha en egen form för editering av formulärdata om man nu prompt vill ha den med en droppdown-lista.

Jag har ett liknande upplägg dock inte med "nyheter".

På en sida listas alla "objekt" (kan vara nyheter eller vad det nu kan vara för data). Längst ner på sidan finns en länk lägg till. Klickar man på den får man se en form där man matar in datat och eventuellt lägger till en fil. När det postas, läser i mitt fall en servlet av requesten för att se vad som finns med. Om både data och fil finns med, startas en transaction. Data läggs in och ID tas hand om. Filen sparas med id som filnamn. Datat uppdateras med binärvärde som talar om att bilden finns. Transaction commitas.

Om bara data finns, skapas det en databaspost med binärvärde som säger att ingen fil lades till.

När man går sedan till "huvudsidan" ser man alla objekt. Klickar man på ett av objekten får man se samma form som man ser när man skapar, bara den här gången med alla uppgifter ifyllda (förutom filen förstås). Om några filer finns uppladdade för just det objektet syns dem längst ner på sidan.

Man kan då ändra uppgifter och spara, eller välja en ny fil och spara.

Servleten ser att man editerar en befintlig post och plockar upp ID-t och uppdaterar posten i databasen, eller kopierar över den gamla filen.

/Z

Vad jag försökte förklara var att det var bara 1 formulär i min beskrivning. Skit i att jag skrev dropdown...det spelar ingen egentlig roll om problemet var att det fanns 2 formulär.

Nåja, skit i det. :)

Milad; du kan även, som ett tillägg till Zorans sista post, välja mellan att döpa om filen exempelvis till det id som posten får eller ha kvar filnamnet och skriva in det i tabellen (dock med problemet att du kan få en krock om du laddar upp filer med samma namn som en befintlig fil).
Du kan även göra en hybrid av de båda ovanstående; att lägga in filnamnet i databasen samt döpa om filen till exempelvis det id posten i databasen fick. På så sätt får du ett mer "användarvänligt" namn på filen (om du plockar fram namnet ur tabellen) samtidigt som du kan ha filer med, till synes, "samma" namn i samma folder.

Nu vet jag inte vilken plattform du kör på Milad, men för .Net så är det väldigt enkelt att fixa uppladdning av filer samt data. Jag har en egen uploadkomponent för detta om du vill ha (om du kör .Net då förståss). :)

Milad 2006-02-15 07:02

Tack Robert för din engagemang :-)

Milad kör ren asp alltså inte .NET och sedan så kör Milad med access databas.


Alla tider är GMT +2. Klockan är nu 08:41.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson