Ik ben bezig met een news submit-scriptje. Ik wil ook de mogelijkheid hebben om meerdere plaatjes in te voegen. De namen van de plaatjes voeg ik met javascript in in de textarea, waarna ik met een php script de files ga uploaden. Het probleem waar ik nu ff mee zit is echter, hoe kan ik een bestand uploaden, zonder dat daarbij het ingevulde form gereset wordt ? Ik zat aan sessions te denken, die ik aanmaak voordat ik naar het upload script ga, en waarmee ik daarna het form weer invul, maar het moet toch wel makkelijker kunnen dacht ik. Iemand een goed idee ?
Verwijderd
Ik kan je geen php specifieke oplossing geven, maar volgens mij kun je het form submitten naar een hidden frame? Dan nlijft het form zelf staan en kun je in het hidden frame je uploads afhandelen. (dat werkt althans met asp prima) Of na het submitten de querystring weer in je html inserten en het form weer opnieuw opbouwen.
Verwijderd
Het lijkt misschien een beetje op jouw sessions-optie, maar je zou ook in de php-code van je formulier kunnen werwerken dat als het form gesubmit wordt, de file geüpload wordt. Vervolgens vul je als value van je textboxen $_POST['veldnaam'] in. Is volgens mij ietsje makkelijker als dat je met sessions werk.
Gewoon een hidden iframe aanmaken en daar je submit naar toe sturen. Vervolgens de rest met JavaScript & php afhandelen. sim-pel.
een hidden frame is wel een goed idee idd, maar wat me dan leuker lijkt is om een popup window te maken, die geopend wordt als ik op de uploadknop klik, waarin upload.php met een animated gifje, en dat sluit als de upload klaar is, dat moet ook niet moeilijk te maken zijn denk ik, maar kan ik uberhaupt wel een action uitvoeren in een ander window ? gewoon met <form target="window"> ofzo ?
dat zijn dus dingen die leuk zijn om zelf uit te zoeken
*hint* stuur eens een e-mailtje met attachments via hotmail.....
*hint* stuur eens een e-mailtje met attachments via hotmail.....
Kheb het nu een heel eindje werkend, maar het uiteindelijke uploadscript werkt niet. Dis het form dat het plaatje moet uploaden:
Dit werkt echter niet. Ik krijg in het popupje de php-foutmelding 'PHP Notice: Undefined index: file', wanneer ik ipv action="javascript:open('upload.php','uploadwindow');" action="upload.php" doe, dan werkt het echter wel.
Dit is mn php uploadscriptje:
Waar zit de fout ?
code:
1
2
3
4
5
6
| <form name="image" enctype="multipart/form-data" method="post" action="javascript:open('upload.php','uploadwindow');"> <p>Foto plaatsen</p> <input type="file" name="file" accept="image/gif, image/jpeg" > <input type="submit" name="submit" value="ok" /><br /> </form> </div> |
Dit werkt echter niet. Ik krijg in het popupje de php-foutmelding 'PHP Notice: Undefined index: file', wanneer ik ipv action="javascript:open('upload.php','uploadwindow');" action="upload.php" doe, dan werkt het echter wel.
Dit is mn php uploadscriptje:
PHP:
1
2
3
4
5
| <?php $file = $_FILES['file']['name']; $path = "./images/upload/".$file; move_uploaded_file($_FILES['file']['tmp_name'],$path); ?> |
Waar zit de fout ?
Hoezo post ik mn data fout ? Zoals ik zei, als ik de form-action verander in 'upload.php' werkt het prima.
bij action moet je alleen een link geven naar de pagina die de form verwerkt. Er kan dus geen javascript in staan die uitgevoerd wordt bij het submitten.
edit:
Ik heb het een keer opgelost door gewoon een linkje bv. upload op de pagina te zetten die dan een popup opent met daarin een ander formulier waarmee je kunt uploaden. Als je die dan verzendt dan blijft je 'hoofd' venster gewoon staan. En je kunt die ook weer berijken via bv. opener.document.form.textinput.value = ''; als je dat eventueel nodig zou hebben.
edit:
Ik heb het een keer opgelost door gewoon een linkje bv. upload op de pagina te zetten die dan een popup opent met daarin een ander formulier waarmee je kunt uploaden. Als je die dan verzendt dan blijft je 'hoofd' venster gewoon staan. En je kunt die ook weer berijken via bv. opener.document.form.textinput.value = ''; als je dat eventueel nodig zou hebben.
[ Voor 55% gewijzigd door Michali op 02-02-2003 16:48 ]
Pagina: 1