Avatar billede tanzaweb Nybegynder
08. oktober 2005 - 00:33 Der er 4 kommentarer og
1 løsning

Dynamisk insert sætning

hej jeg har en formular hvor der kommer nogle forskellige dataer fra men der kun er noget af det som skal bruges alt efter hvad katId er.

Her ser i select boksene:

<script type="text/javascript">
        function showSelect(sel){
          var x = 1;
            while(sel.form.elements["billedeId" + x]){
                sel.form.elements["billedeId" + x].style.display = 'none';
                x++;
              }
            if(sel.form.elements["billedeId" + sel.value])
                sel.form.elements["billedeId" + sel.value].style.display = 'inline';
                }
        </script>

        <select name="KatId" onchange="showSelect(this);">
        <option value="0">Vælg Billede kategori</option>
                <option value="1">Musikere</option>
                <option value="3">Albums</option>
                <option value="4">Skuespillere</option>
                <option value="5">Film</option>
                </select><br />
       
                <select name="billedeId4" style="display:none;" >
                        <option value="95">Angelia Jolie</option>
                <option value="96">Arnold Schwarzenegger</option>
                <option value="104">Benjamin Bratt</option>
                <option value="98">Courtney Love</option>
                <option value="99">Harrison Ford</option>
                <option value="100">Matt Damon</option>
                <option value="101">Pierce Brosnan</option>
                <option value="102">Rene Zellweger</option>
                <option value="103">Tori Spelling</option>
                </select>
                <select name="billedeId1" style="display:none;" >
                        <option value="97">Britney Spears</option>
                </select>

og min insert ser således ud i øjeblikket: problemmet er jo så at hvis man laver nogle flere kategorier i name="KatId" så skal man tilføje dem manuelt til INSERT scripter og katId numret er jo nødvendig vis ikke fortløbende hvis man har slettet en kategori, og oprettet en anden.

Så hvordan kan man lige løse det?

if ($KatId=='1'){
       
        mysql_query("INSERT INTO new(news_type_id,news_head,news_body,news_date,news_writer,KatId,billede_Id)
        VALUES ('{$_POST['news_type_id']}','{$_POST['news_head']}','{$_POST['news_body']}',NOW(),'{$_POST['news_writer']}','{$_POST['KatId']}','{$_POST['billedeId1']}')") or die(mysql_error());

           
        }
        elseif ($KatId=='2'){
       
        mysql_query("INSERT INTO new(news_type_id,news_head,news_body,news_date,news_writer,KatId,billede_Id)
        VALUES ('{$_POST['news_type_id']}','{$_POST['news_head']}','{$_POST['news_body']}',NOW(),'{$_POST['news_writer']}','{$_POST['KatId']}','{$_POST['billedeId2']}')") or die(mysql_error());

        }
       
          elseif ($KatId=='3'){
       
        mysql_query("INSERT INTO new(news_type_id,news_head,news_body,news_date,news_writer,KatId,billede_Id)
        VALUES ('{$_POST['news_type_id']}','{$_POST['news_head']}','{$_POST['news_body']}',NOW(),'{$_POST['news_writer']}','{$_POST['KatId']}','{$_POST['billedeId3']}')") or die(mysql_error());

        }
       
        elseif ($KatId=='4'){
       
        mysql_query("INSERT INTO new(news_type_id,news_head,news_body,news_date,news_writer,KatId,billede_Id)
        VALUES ('{$_POST['news_type_id']}','{$_POST['news_head']}','{$_POST['news_body']}',NOW(),'{$_POST['news_writer']}','{$_POST['KatId']}','{$_POST['billedeId4']}')") or die(mysql_error());

        }
?>
Avatar billede pidgeot Nybegynder
08. oktober 2005 - 00:39 #1
Drop alle de if/elseif og brug følgende query:

  mysql_query("INSERT INTO new(news_type_id,news_head,news_body,news_date,news_writer,KatId,billede_Id)
        VALUES ('{$_POST['news_type_id']}','{$_POST['news_head']}','{$_POST['news_body']}',NOW(),'{$_POST['news_writer']}','{$_POST['KatId']}','{$_POST['billedeId$KatId']}')") or die(mysql_error());

Du skal muligvis sætte den pågældende variabel udenfor din streng, altså:

  mysql_query("INSERT INTO new(news_type_id,news_head,news_body,news_date,news_writer,KatId,billede_Id)
        VALUES ('{$_POST['news_type_id']}','{$_POST['news_head']}','{$_POST['news_body']}',NOW(),'{$_POST['news_writer']}','{$_POST['KatId']}','" . $_POST["billedeId$KatId"] . "')") or die(mysql_error());
Avatar billede nielle Nybegynder
08. oktober 2005 - 00:44 #2
$BilledeID = 'billedeId'.KatId;
mysql_query("INSERT INTO new (news_type_id, news_head, news_body, news_date, news_writer, KatId, billede_Id) VALUES ('" . $_POST['news_type_id'] . "', '" . $_POST['news_head'] . "', '" . $_POST['news_body'] . "', NOW(), '" . $_POST['news_writer'] . "', '" . $_POST['KatId'] . "', '" . $_POST[$BilledeID] . "')") or die(mysql_error());
Avatar billede nielle Nybegynder
08. oktober 2005 - 00:45 #3
$BilledeID = 'billedeId' . $KatId;
Avatar billede tanzaweb Nybegynder
08. oktober 2005 - 23:43 #4
nielle nu fik jeg ikke lige prøvet din løsning for Pidgeot virkede perfekt, så send lige et svar til pointene.
Avatar billede pidgeot Nybegynder
08. oktober 2005 - 23:44 #5
Principielt er det præcis det samme nielles løsning gør, han placerer bare tingene en lille smule anderledes :)
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