Avatar billede 1409 Praktikant
20. marts 2006 - 11:20 Der er 2 kommentarer og
1 løsning

Parse variabler med samme "name" i form

Med en SELECT og et dobbelt loop udtrækker jeg en bunke emner som brugeren kan "hakke af", opdelt i katagorier:

$query = MYSQL_QUERY("SELECT e.emne_id, e.emne, e.kat_id, k.katagori FROM emner e ".
"LEFT JOIN katagorier k ON e.emne_id=k.kat_id ");

ECHO "<FORM ACTION=\"action.php\" METHOD=\"post\" ENCTYPE=\"multipart/form-data\">\n";

$r = MYSQL_FETCH_ARRAY($query);
//hente katagorier fra db
WHILE($r) {
    $kat_id = $r["kat_id"];
    $katagori = $r["katagori"];
   
    ECHO "<TR><TD COLSPAN=\"2\" ALIGN=\"CENTER\"><INPUT TYPE=\"checkbox\" NAME=\"katagori\" VALUE=\"$kat_id\"><SPAN CLASS=\"fed\">$katagori</SPAN></TD></TR>\n";
   
    $i = 0;
    ECHO "<TR>";
    //hente emner fra db
    WHILE($kat_id == $r["kat_id"]) {
        $emne_id = $r["emne_id"];
        $emne = $r["emne"];

        ECHO "<TD WIDTH=\"25%\"><INPUT TYPE=\"checkbox\" NAME=\"emne\" VALUE=\"$emne_id\">$emne</TD>";
        if($i == 1) {
            ECHO "</TR>\n<TR>";
            $i = 0;
        } ELSE {
            $i++;
        }

        $r = MYSQL_FETCH_ARRAY($query);
    }
//    ECHO "</TR>\n";
    ECHO "<TR><TD COLSPAN=\"2\"><BR></TD></TR>\n";
    $r = MYSQL_FETCH_ARRAY($query);
}
    ECHO "<TR><TD ALIGN=\"center\" COLSPAN=\"4\"><INPUT TYPE=\"submit\" NAME=\"select\" VALUE=\"- Næste -\"></TD></TR>\n";

Resultatet bliver noget ala det her:

Katagori1 <checkbox>
Emne 1 <checkbox> | Emne 2 <checkbox>
Emne 3 <checkbox> | Emne 4 <checkbox>
etc...

Katagori2 <checkbox>
Emne 1 <checkbox> | Emne 2 <checkbox>
Emne 3 <checkbox> | Emne 4 <checkbox>
etc...

Katagori3 <checkbox>
Emne 1 <checkbox> | Emne 2 <checkbox>
Emne 3 <checkbox> | Emne 4 <checkbox>
etc...

Problemet er, at det NAME, der er i hver checkbox ved "emne" jo er ens for dem alle. Hvordan kan jeg parse dem til en anden fil? Jeg formoder, at det er noget med et array...
Jeg vil gerne foretage en ny SQL SELECT med de pågældende variabler i den anden fil, men hvordan?

Jeg er totalt lost...
Avatar billede pidgeot Nybegynder
20. marts 2006 - 11:23 #1
Sæt [] efter boksenes navn, altså name="emne[]". Så får du dem i et array som du kan bruge.
Avatar billede 1409 Praktikant
22. marts 2006 - 11:28 #2
Ahhh...!

Først "opfanger" jeg selvfølgelig variablen med array'et:

$emne_id=$_POST['emne'];

Derefter laver jeg den om til en komma-separeret streng:

$separated = implode(",", $emne_id);

Og så smider jeg resultatet ind i min SQL:

SELECT emne FROM emner WHERE emne_id IN ($separated)

Hvis nogle kan bruge det... :-)
Avatar billede pidgeot Nybegynder
22. marts 2006 - 12:09 #3
Jeg tager det som en opfordring til at smide et svar.
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