---
title: "hämta in \"halvt\" okända fält från ett form till php"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/116063-hämta-in-halvt-okända-fält-från-ett-form-till-php"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "Prime_66"
published: "2004-11-16T19:58:11.000Z"
updated: "2004-11-16T21:21:56.000Z"
replies: 13
views: 358
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/116063-hämta-in-halvt-okända-fält-från-ett-form-till-php"
---

# hämta in "halvt" okända fält från ett form till php

## #1 — Prime_66, 2004-11-16T19:58Z

Detta gäller PHP tillsammans med MySQL.

Jag har en sida med varierande antal \<select\> beroende på vem som är inloggad. Dessa \<select\> innehåler siffor från 1-5 och representerar en betygskala. Varje \<select\> måste vara knuten till checkboxen på samma rad. Checkboxen är av typen array och innehåller ett id-nummer. Enda sättet att få checkboxen och selecten att hänga ihop är väl att ange det i namnet på selecten. Alltså \<select name=betyg33\> ? Det sker ju med hjälp av php såklart. 

Då uppstår problem när jag ska hämta in värden på nästföljande php-sida från formen. För den kan ju inte veta vilken \<select\> det gäller om det inte finns med något id i namnet. Det innebär att ibland kommer \<select name"betyg12\> skickas och en annan gång kanske \<select name"betyg34\>. Det kanske blir enklast om jag skickar en \<select\> per gång. Alltså en egen form för varje \<select\>.

 I mitt php-script vill jag hämta in alla \<select\> som börjar med "betyg" i namnet. Går det? Tacksam för hjälp.

Permalänk: https://www.webforum.nu/p/116063

## #2 — Snakes, 2004-11-16T20:06Z

Om jag förstod dig rätt så... har du 5 select!
Enklaste sättet att göra det är att du lägger ett sällsynt tecken mellan 
betyg33 eller betyg12 så här till exempel
betyg3-3 och betyg1-2 och sen gör du en for som kör 5 gånger och på varje for så lägger du en explode....
Förstod jag dig fel så ignorerar du jag sagt och förklarar dig lite mer annars om jag förståt dig rätt men du vet inte hur du ska göra skriv det då!

Permalänk: https://www.webforum.nu/p/1485179

## #3 — Prime_66, 2004-11-16T20:13Z

Tja!

Nä jag var nog lite otydlig. Det är aldrig samma antal \<select\>. Det kan variera från 1 till hur många som helst typ beroende på vem som e inloggad. Det är alltså \<option\> som är 1 till 5 i varje \<select\>. Alltså man väljer i varje \<select\> det betyg som man vill sätta på varje rad. På varje rad finns en checkbox av typen array som gör att man vet vilken rad det sedan gäller i databasen. Men för att php-scriptet ska veta ifrån vilken rad man kom...då måste jag hu ha med något id i namnet på varje \<select\>. Hur ska php-scriptet annars veta vilken rad i databasen som den ska sätta in betyget (siffran från 1 till 5) på?

Permalänk: https://www.webforum.nu/p/1485184

## #4 — Snakes, 2004-11-16T20:26Z

Alltså finns det en for som skriver in alla select?
Då är problemet löst så här gör du:
detta lägger du FÖRE for:en
$antalselect=0;
detta lägger du I for:en
$antalselect=$antalselect+1
detta lägger du UTANFÖR for:en, men i samma form som selecterna
echo "\<input type=\\"hidden\\" name=\\"aselect\\" value=\\"$antalselect\\"\>
Och på andra sidan så kör du en for gånger antalet $\_POST\['aselect'\] i den nya for:en på mottagnings sidan skriver du:
$\_POST\['betyg'.$i.'1'\]
Om det är $i du körde med på for:en (for($i=0;$i\<$\_POST\['aselect'\];$i++)) men annars kör du med det du tog.

Juste.... visste du vad andra siffran vad från början? eller?

Säg till för att då skriver jag ett helt script.... orkar inte skriva mer små kodsnutar

Permalänk: https://www.webforum.nu/p/1485199

## #5 — Prime_66, 2004-11-16T20:44Z

Ja. det var ju bra tänkt. Enda problemet med det är att "raderna", checkboxens id, inte är numrerade från 1 och uppåt. De kan börja på 200 och sluta på 300 med olika hopp mellan varje id. Problem alltså.. :l 

Sriptet som behövs skulle kunnas beskrivas såhär:

Du har en mysql databas med 1000 rader. På varje rad finns info om en bild. Betyg bland annat.  Dessa raderna har id-nummer från 1 och 1000. 

HTML sidor genereras från databasen. En inloggad besökare får upp exempelvis 10 rader, där varje rad är info om en viss bild. Id på varje rad representeras av en checkbox-array med bild-id. Vi säger att en inloggad besökare får upp 10 bilder. Dessa 10 har blandade id:n mellan 1 till 1000. Det ska finnas möjlighet att betygsätta varje bild. Det ska göras genom att man väljer en siffra 1 till 5 i en select brevid bilden. Denna siffras ska sedan sättas in på rätt rad i databasen. Hur göra?

 :h

Permalänk: https://www.webforum.nu/p/1485208

## #6 — Snakes, 2004-11-16T20:51Z

nej nej gör bara så här betyg3-9 så fixar jag scriptet så länge

Permalänk: https://www.webforum.nu/p/1485211

## #7 — Snakes, 2004-11-16T21:02Z

Varför måste det heta betyg1 betyg2? kan det inte bara heta enligt sin checkbox? betyg299 betyg19 betyg4 fattar du?

Permalänk: https://www.webforum.nu/p/1485216

## #8 — Prime_66, 2004-11-16T21:04Z

JO, men precis. det är det ska göra. ska heta som sin checkbox

Permalänk: https://www.webforum.nu/p/1485217

## #9 — Snakes, 2004-11-16T21:06Z

Kommer du ihåg input:en jag snacka om lite tidigare.... lägg in id:n på billderna där.. så typ 
value="242;13;75;245;"
förstår du?

Permalänk: https://www.webforum.nu/p/1485222

## #10 — Prime_66, 2004-11-16T21:12Z

Hmm..nu har du hjälp mig att komma på en lösing. Jag kan ju göra så här:

Jag skapar en ny form för varje \<select\> i denna form finns ett hidden-field med id-numret. \<select\> heter samma sak i varje form. Och alla forms har samma action. När formet skickas finns det alltid bara två fält i det. Ett hidden-field som talar om vilken rad det gäller och då behöver man ju inte ha något id på select boxen nä. Var det så du tänkte med? Det känns ju lite onödigt med massa olika forms men det kommer ju funka iaf. Eller hur. :bire

Permalänk: https://www.webforum.nu/p/1485226

## #11 — Prime_66, 2004-11-16T21:14Z

Fast nu förstof jag precis hur du har tänkt. E ju ännu smartare ja..thanx

Permalänk: https://www.webforum.nu/p/1485227

## #12 — Snakes, 2004-11-16T21:17Z

detta lägger du **FÖRE** for:en
$olikaidn='';
detta lägger du **I** for:en
$olikaidn.=$ID //DETTA BYTER DU MOT ID STRINGEN
detta lägger du **UTANFÖR** for:en, men i samma form som selecterna
echo "\<input type=\\"hidden\\" name=\\"diffid\\" value=\\"$olikaidn\\"\>
Nu kör du så här

```php
$olikaid = explode(";",$_POST['diffid']);
$antalid = count($olikaid);
for($i=1;$i<$antalid;$i++){
$vilketid = "";
$vilketid = $olikaid[$i];
$_POST['betyg'.$vilketid]
```

VIPS PROBLEMET ÄR LÖST!

Permalänk: https://www.webforum.nu/p/1485229

## #13 — Prime_66, 2004-11-16T21:20Z

Japp! Tack som f\*n för hjälpen.  :)

Permalänk: https://www.webforum.nu/p/1485231

## #14 — Snakes, 2004-11-16T21:21Z

Inga problem  :e

Permalänk: https://www.webforum.nu/p/1485235

---

Tråden på webben: https://www.webforum.nu/amne/php/116063-hämta-in-halvt-okända-fält-från-ett-form-till-php
