Vraag & Antwoord

Webprogrammeren & scripting

[PHP] Is het mogelijk om een array door te geven met $_POST

10 antwoorden
  • Ik heb een form en wil hier mee ook een array aan meegeven. Is dit mogelijk? (kon er niets over vinden in de php-manual) ps. het form roept zichzelf op als action...
  • Zie: http://php.nederland.net/manual/en/features.file-upload.multiple.php
  • Je kan imho nooit iets als array doorgeven via een post al was het alleen maar omdat het http protocol nog nooit van een array gehoord heeft. Het gaat er dus om dat je iets meegeeft wat "aan de andere kant van het lijntje" geinterpreteerd kan worden als een array. Een kommagescheiden reeks tekens kan je bijvoorbeeld in PHP makkelijk omzetten naar een array. Dus misschien dat dat een oplossing kan zijn voor je probleem. Als dat niet het geval is, geef dan eens aan wat je precies wil bereiken, dat maakt het makkelijker om mee te denken.
  • Een kommegescheiden reeks doe ik liever niet, aangezien deze zeer lang kan worden. Ik zal even uitleggen wat voor formulier ik gemaakt heb. Ik heb een factuurbestand (is een txt_bestand uit vaste regels, net zoals een logbestand), die ik wil importeren in MySQL. Ik heb hiervoor een pagina gemaakt dat bestaat uit drie stappen: 1. bij het openen van de pagina laat hij een form zien die vraagt om een factuurbestand. Bij het drukken op 'Sumit' verwijst de pagina naar zichzelf (naar stap 2). 2. De factuurbestand wordt nu gelezen en in een array gestopt. Op het scherm verschijnt nu weer een form met een weergave van de array (in tabelvorm) en vraagt om een bevestiging (of als de factuurbestand niet te lezen is een errormelding). Door hier weer op 'submit''(een andere dan in stap 1 natuurlijk :wink: ) kom je bij stap 3 (deze verwijst weer naar dezelfde pagina) 3. De array uit stap twee wordt in MySQL ge'insert' en er wordt een melding op het scherm gegeven dat het gelukt is (of niet). De array wil ik dus doorgeven van stap 2 naar stap 3. Ik zou natuurlijk weer een nieuwe array kunnen maken (vanuitgaande dat $_FILES zijn waarde blijft behouden(klopt dit? Nog niet geprobeert)), maar dit zorgt voor veel overhead aangezien een factuurbestand uit 50.000 regels kan bestaan. Ik had iets gelezen over $GLOBAL, maar dat krijg ik niet werkend (ik wil de array dus laten blijven bestaan, als de pagina opnieuw wordt geladen door een 'form-submit') Hopelijk weten jullie hier een oplossing voor...
  • 1) Die $_FILES heeft niets met jou probleem te maken, maar je ziet bij die link van mij wel hoe je die array kunt maken. 2) Globals zullen niet helpen, die werken alleen binnen één "verwerkings-ronde" van een script en na een post/get/etc zijn ze weer verdwenen en moeten ze opnieuw gezet worden. Je zou wel naar sessies kunnen kijken, maar ik heb geen idee hoeveel data je daar in kunt stoppen.
  • [quote:9951dbc189]1) ....maar je ziet bij die link van mij wel hoe je die array kunt maken. [/quote:9951dbc189] Ik zie even niet hoe het maken van een array van bestanden middels een form met mijn probleem te maken heeft (een array van strings doorgeven middels een form)? :roll: Of zie ik iets over het hoofd? :wink: Uit de antwoorden zie ik al dat het zeer moeilijk/onmogelijk is om dit voor elkaar te krijgen. Ik denk dat ik het anders op ga zetten, nl in stap 2 de factuurbestand lezen uit $_FILES en tonen op het scherm zonder een array te maken (dus direct de inhoud weergeven van het factuurbestand) en bij stap 3 opnieuw de file lezen uit $_FILES en dan de array maken en in MySQL zetten.
  • Als je nu iedere keer:[code:1:32cb99a9ed]<input name="flep[]" ...>[/code:1:32cb99a9ed] gebruikt en dat post, maakt PHP er weer een array van met (die dus flep heet in dit geval).
  • way way off... flep[] ??? :lol: is dit brabo-speak? t.
  • Misschien begrijp ik je probleem wel niet goed, maar is het geen idee om gewoon het factuur bestand te inserten in de database met een status [i:19438cb59a]"nog niet definitief"[/i:19438cb59a] en gekoppeld aan een unique identifier en een datum. Deze id stuur je in stap 2 naar de gebruiker. Na een submit van stap 3 zet je de status op "definitief". Je zal dan wel "vervuilde" data op moeten schonen voor personen die niet akkoord gaan na stap 3, ik noem maar wat: bijv. status="niet definitief" en datum ouder dan 1 dag. Evt. kan je er voor kiezen om "niet definitieve" data in een tijdelijke tabel op te slaan en bij definitief maken de data over te hevelen (zo hou je de data in de "productie" tabel altijd "schoon"). p.s. teacher: brabo??!?! er zijn oorlogen om minder begonnen ;)
  • Bill, Na het opnieuw doorlezen van je link en met de hint van jouw heb ik de volgende regel ingevoerd (Let op:Ik stop alle html in een variable, omdat ik met templates werk. De variable word aan het einde van de PHP-code geparst!): [code:1:c2e233fb83]$inhoud .= "<input name='".$records[]."' type='hidden'>"[/code:1:c2e233fb83] Ik krijg dan als melding: [b:c2e233fb83]Fatal error: Cannot use [] for reading in D:\Apache HTTP Server 2.0\htdocs\admin_upload_invoicefile.php on line 61[/b:c2e233fb83] Krijg jij dit wel werkend? Zo ja, wat doe ik dan fout? Of werkt dit niet als ik dit in de variabele [i:c2e233fb83]$inhoud[/i:c2e233fb83] stop? Annie, Jouw idee is ook een goeie (zo zie je maar weer, er leiden meer wegen naar rome :) ), die ik waarschijnlijk ook ga gebruiken, mocht ik de tip van Bill niet werkend krijgen.

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.