Avatar billede learner Praktikant
15. august 2004 - 16:20 Der er 15 kommentarer og
1 løsning

jeg vil poste et array hvordan gør jeg det?

Hej, lad os sige at jeg har skabt et array (array[]), som nu skal sendes gennem nogle sider før det igen skal pakkes ud.

Kan jeg så sende array'et i en form sådan cirka som her:
<input name="array[]" value="<?php echo $array[]; ?>">

Nej, det kan jeg nok ik vel?
Hvordan skal jeg så gøre det?

Og hvordan kan jeg lave en som simpelthen bare sender array'et videre??
jeg tænker noget lign:
<input name="array[]" type="hidden" value="<?php echo $_POST['array[]']; ?>">

Men det går jo nok heller ik :o)
Hvordan skal jeg så gøre det?
Avatar billede dennismp Nybegynder
15. august 2004 - 16:22 #1
<?php
foreach($_POST['array'] as $value) {
?>
<input name="array[]" type="hidden" value="<?=$value?>">
<?php } ?>
Avatar billede dennismp Nybegynder
15. august 2004 - 16:24 #2
ellers kan du jo bruge $_SESSION til det.

Alternativ kan du bruge de/serialize:

// når det encodes
<input name="array" type="hidden" value="<?php serialize($value);?>">

// når det skal dekodes
$array = unserialize($_POST['array']);
Avatar billede onkel_satan Nybegynder
15. august 2004 - 16:27 #3
Du skal serialize($tekst) dit array foerst, hvilket laver dit array om til en lang tekststreng som du kan sende via. en form.
Nar det så kommer til modtagersiden skal du unserialize($tekst) og du har nu dit array som du kan bruge.
Avatar billede learner Praktikant
15. august 2004 - 16:33 #4
ok det er fordi jeg har en masse checkboxe og jeg har tænkt om man evt kan give dem samme navn feks name="country_array[]" og så kommer de vel alle i $_POST['country_array'] - er det korrekt?

For så kunne jeg skære en masse linier kode væk, som fylder uendeligt og er svært at overskue for mig :-)

Jeg tror jeg vil benytte serialize() og unserialize() det lyder fantastisk nemt og smart!

Tak for det!
Avatar billede dennismp Nybegynder
15. august 2004 - 16:37 #5
Jep.

Du kan også bruge;
name="checkbox['newsletter']";

så vil du kunne hente værdien i arrayet
$_POST['checkbox']..

fx: $_POST['checkbox']['newsletter']
Avatar billede learner Praktikant
15. august 2004 - 16:44 #6
Jeg har lige et spørgsmål i forbindelse med det her. Jeg ved godt jeg bør skrive det i javascript spørgsmål :-), men det kan jo være en af jer kan svare på:

Jeg tjekker om der er valgt nogle checkboxe med javascript og hvis jeg nu laver flere checkboxe med samme navn (name="") som før omtalt. hvad skal jeg så skrive i denne linie?

her er den linie som jeg ik ved hvad jeg skal skrive i:

var text = document.form.array.value;
eller skal jeg skrive:
var array = document.form.array[].value;

Altså hvis det overhovedet kan lade sig gøre :-)

Tusind takker
Avatar billede dennismp Nybegynder
15. august 2004 - 16:51 #7
Jeg undgår javascript helt. Det er *meget* sjældent at jeg gør brug af det - så jeg er ikke den rette til at spørge.

Men, jeg mener jeg havde samme problem..

Du kan ikke skrive:
document.form.array[].value;

fordi elementet hedder array[] - men js tror det er en syntaksfejl (hvilket den har ret i). Jeg løste det ved at give mine input-elementer et id (id=26) .. og så bruge

document.form.getElementByID(26).value.. så vidt jeg husker.

Men jeg har ikke engang koden mere..
Avatar billede learner Praktikant
15. august 2004 - 16:52 #8
dennismp skrev:
Du kan også bruge;
name="checkbox['newsletter']";

så vil du kunne hente værdien i arrayet
$_POST['checkbox']..

fx: $_POST['checkbox']['newsletter']
-----------------------------------------

Kanont, det ser spændende ud, lige hvad jeg har brug for :-)

kan jeg så os:
serialize($_POST['checkbox'])
...eller skal jeg:
serialize($_POST['checkbox']['newsletter'])
...hvis jeg vil videresende som vi talte om før?

Har du evt et forslag til hvor jeg kan læse mere om den metode?

mange tak! ;o}
Avatar billede learner Praktikant
15. august 2004 - 16:59 #9
jamen nu bliver jeg lidt nysgerrig! :-) bruger du så ikke javascript til at evaluere om felterne er udfyldt? Jeg laver godtnok sådan at php kan gøre det, men alligevel laver jeg os en javascript-evaluering mange steder... Er det åndsvagt? Det er det måske! jeg bruger ihvertfald meget tid på at lave alt det halløj :-)

Jeg har lavet det sådan mest fordi jeg har en ide om at det er med at undgå en masse unødig trafik til databasen, men er det bare noget jeg bilder mig ind? :-)

i øvrigt har min hjemmeside en masse steder hvor javascripts ordner forskellige ting ved feks onclick osv... Er det letsindigt af mig? og er der nogen/mange der ikke kan bruge siden så?

Jeg er kanonglad for din hjælp ;-)
Avatar billede dennismp Nybegynder
15. august 2004 - 17:01 #10
Du kan gøre begge dele. Men det giver mest mening at bruge: serialize($_POST['checkbox']).

Jeg bruger kun php.net som manual. Så prøv: http://dk.php.net/serialize


Hvis du har rigtig mange checkboxe (newsletter, reklamer .. etc) .. så kan du jo udnytte at du har samlet det i et array.

fx.

foreach($_POST['checkbox'] as $navn => $value) {
  print "$navn har værdi $value";
}

så vil den vise:
newsletter har værdi: on (eller hvad du har sat den til)
reklamer  har værdi: on (eller hvad du har sat den til)
..

Det vil så være det samme som at skrive:

print "newsletter har værdi: " . $_POST['checkbox']['newsletter'];
print "reklamer  har værdi: " . $_POST['checkbox']['reklamer'];
..

men hvis du har fx 20 checkboxe så kan man udnytte dette på det groveste, uden at få voldsomt mere kode :)
Avatar billede onkel_satan Nybegynder
15. august 2004 - 17:07 #11
Har lavet noget ligende (bare ude java). Det fede ved java er jo at det sker på client siden og derfor kan validere inden du sender din form. Så hvis du finder en løsning i java er det jo klart at fortrække.
Men hvis du vil køre det hele i php kan du jo bare lave en kontrol på modtagersiden der lige ser om variablen er tom eller ej. Er den tom kan du evt. linke tilbage til sender siden. Lidt bøvlet ?? måske,. men det virker i hvert fald efter hensigt.
Avatar billede dennismp Nybegynder
15. august 2004 - 17:11 #12
Altså; betragt dit javascript-kode som optional. Du kan ikke være sikker på at brugeren udfører det. Og du kan heller ikke være sikker på at de værdier du modtager fra brugeren er det de "bør" være. Så dit php skal alligevel tjekke alt igennem før du accepterer det (eller i det mindste tage højde for at det kan være ondsindet input du modtager). På sin vis overflødeliggøre du så javascriptet (du få dobbeltcheck - først javascript der efter php) - men for brugeren (den gode, ham der også bruger javascript) vil det nok være rart at han få fejlen "med det samme" (uden at submitte). Så din side kan, med javascript, blive mere brugervenlig.

Jeg syntes personligt, at sider ikke må være afhængig af javascript (og slet ikke i disse tider, hvor flere enheder kommer på nettet - webtv, mobiltelefoner, pda - etc).
Avatar billede dennismp Nybegynder
15. august 2004 - 17:12 #13
onkel_satan; Mener du ikke javascript ?
Avatar billede onkel_satan Nybegynder
15. august 2004 - 17:25 #14
jo, sry. ;-)
Avatar billede learner Praktikant
15. august 2004 - 17:35 #15
Dennismp skrev:
Jeg syntes personligt, at sider ikke må være afhængig af javascript...

Min side har nogle steder som er afhængig af javascript... men det er fordi ellers kunne jeg ikke lave det :-(

Hvem kan så ikke bruge min side?
Og kan jeg evt lave et script på forsiden, som evaluerer om browseren kan handle min side? Findes der evt nogle jeg kan nuppe et sted og lave så den passer til min side? :-)

ps jeg har lige skrevet en lille hilsen til dig dennismp ;-)

Takker allesammen!

Point'ene går til dennismp
Avatar billede dennismp Nybegynder
15. august 2004 - 17:42 #16
>> Hvem kan så ikke bruge min side?

Folk der har en browser som enten har disabled javascript, eller ikke understøtter det ordenligt (fx at dit javascript ikke virker).

Men langt de fleste bruger javascript og bruger een browser, så det er fåtal man lukker ude. Jeg syntes bare, principielt set, at alle der har lyst, må se min hjemmeside :).

>>Og kan jeg evt lave et script på forsiden, som evaluerer om browseren kan handle min side? Findes der evt nogle jeg kan nuppe et sted og lave så den passer til min side? :-)

Det er ret nemt. Selvom jeg ikke kan lige koden så er ideen meget simpel. Du laver din index.php (eller hvad den nu er) - på siden står der at din browser ikke understøtter javascript (eller lign). Men øverst oppe på siden (i <head>?) bruger du javascript til at redirect'e til en anden side. Alle de folk der kommer til side 2, har javascript. Resten har ikke.

Jeg har fået din hilsen, tak :-). Du får en mail når vi har spist.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester