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.
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å!
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å?
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
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?
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
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