Avatar billede zorkmontana Nybegynder
16. oktober 2004 - 16:33 Der er 23 kommentarer og
4 løsninger

variabel dropdown menu

hey alle i kloge mennesker ;D

jeg er løbet ind i et problem, jeg skal have lavet en variabel dropdown menu...
sådan skal den funke:
jeg vil have mulighede for at gå ind og ændre et produkt fra en mysql database. der vil blive tilføjet mange nye produkter hele tiden og der skal eventuelt rettes i nogle produkters information. jeg vil have at når jeg vælger et produkt og trykker på en knap kommer alle felterne frem så jeg kan ændre dette produkt...! hvordan gør jeg dette?
Avatar billede baitianlong Nybegynder
16. oktober 2004 - 17:22 #1
Noget i den her stil:

<?php
$funktion = $_GET['funktion'];
$produktnavn = $_POST['produkt'];

switch($funktion) {
  case "gem":
    $felt1 = $_POST['felt1'];
    $felt2 = $_POST['felt2'];
    mysql_connect("localhost", "user", "pass");
    mysql_select_db("database");
    mysql_query("UPDATE produkter SET felt1='$felt1', felt2='$felt2' WHERE produkt='$produktnavn'");
    mysql_connect("localhost", "user", "pass");
    mysql_select_db("database");
    break;
  case "hent":
    mysql_connect("localhost", "user", "pass");
    mysql_select_db("database");
    $query = mysql_query("SELECT * FROM produkter WHERE produkt ='$produktnavn'");
    if($prow = mysql_fetch_assoc($query)) {
        $felt1 = $prow['felt1'];
        $felt2 = $prow['felt2'];
    }
    mysql_connect("localhost", "user", "pass");
    mysql_select_db("database");
    break;
  default:
    $produkter = array();
    $result = mysql_query("SELECT produkt FROM produkter");
    while($row = mysql_fetch_assoc($result)) {
      array_push($produkter, $row['produkt']);
    }
}
?>
<html>
<form action="<?= $_SERVER['PHP_SELF'] ?>?funktion=hent" onSubmit="this.produkt.value=this.produkter.value" method="post">
<input type="hidden" name="produkt" value="">
<select name="produkter" size="1">
<?php
foreach($produkter as $produkt) {
  print("<option value=\"$produkt\">$produkt</option>");
}
?>
</select><br>
<input type="submit" value="Hent";>
</form>

<form action="<?= $_SERVER['PHP_SELF'] ?>?funktion=gem" method="post">
<input type="hidden" name="produkt" value="<?= $produktnavn ?>">
<input type="text" size="50" name="felt1" value="<?= $felt1 ?>"><br>
<input type="text" size="50" name="felt2" value="<?= $felt2 ?>"><br>
<input type="submit" value="Gem">
</form>
</html>


:)
    $query = mysql_query("SELECT * FROM produkter WHERE produkt ='$produktnavn'");
    if($prow = mysql_fetch_assoc($query)) {
        $felt1 = $prow['felt1'];
        $felt2 = $prow['felt2'];
    }
    break;
  default:
    $produkter = array();
    $result = mysql_query("SELECT produkt FROM produkter");
    while($row = mysql_fetch_assoc($result)) {
      array_push($produkter, $row['produkt']);
    }
}
?>
<html>
<form action="<?= $_SERVER['PHP_SELF'] ?>?funktion=hent" onSubmit="this.produkt.value=this.produkter.value" method="post">
<input type="hidden" name="produkt" value="">
<select name="produkter" size="1">
<?php
foreach($produkter as $produkt) {
  print("<option value=\"$produkt\">$produkt</option>");
}
?>
</select><br>
<input type="submit" value="Hent";>
</form>

<form action="<?= $_SERVER['PHP_SELF'] ?>?funktion=gem" method="post">
<input type="hidden" name="produkt" value="<?= $produktnavn ?>">
<input type="text" size="50" name="felt1" value="<?= $felt1 ?>"><br>
<input type="text" size="50" name="felt2" value="<?= $felt2 ?>"><br>
<input type="submit" value="Gem">
</form>
</html>
Avatar billede sostack Nybegynder
16. oktober 2004 - 17:44 #2
Tjah, eller:
<?php
include("db_forbindelse.inc"); //forbind til MySQL og vælg DB her
$tabel = "produkter";
$qry_hente = "SELECT `produkt` FROM $tabel";
$res_hente = mysql_query($qry_hente) OR DIE(mysql_error());
echo "<form action='" . $_SERVER["PHP_SELF"] . "' method='POST'>\n";
echo "<SELECT name='produkt'>\n";
WHILE(FALSE != $produkt = mysql_fetch_row($res_hente))
{
    echo "<OPTION value='$produkt'>$produkt</OPTION>\n";
}
echo "</SELECT>";
echo "<input type='submit' name='knap' value='Hent'>\n";
echo "</form>
if(isset($_REQUEST["knap"]) && isset($_REQUEST["produkt"]))
{
    if("Hent" == $_REQUEST["knap"])
    {
        $qry_produkt = "SELECT * FROM $tabel WHERE `produkt`='" . $_REQUEST["produkt"] . "'";
        $res_produkt = mysql_query($qry_produkt);
        $produktet = mysql_fetch_assoc($res_produkt);
        echo "<form action='" . $_SERVER["PHP_SELF"] . "' method='POST'>\n";
        foreach($produktet AS $feltnavn => $vaerdi)
        {
            echo "$feltnavn:<input type='text' name='$feltnavn' value='$vaerdi'><br />\n";
        }
        echo "<input type='submit' name='knap' value='Opdater'>\n";
    } elseif("Opdater" == $_REQUEST["knap"])
    {
        $opdatering = "";
        $qry_opdater = "UPDATE $tabel SET ";
        foreach($_REQUEST AS $felt => $feltvaerdi)
        {
            if("knap" != $felt && "produkt" != $felt)
            {
                if("" == $opdatering)
                {
                    $opdatering = "`$felt`='$feltvaerdi'";
                } else {
                    $opdatering .= ", `$felt`='$feltvaerdi'";
                }
            }
        }
        mysql_query($qry_opdater . $opdatering . " WHERE `produkt`='" . $_REQUEST["produkt"] . "'") OR DIE(mysql_error());
    }
}
?>

//sostack
Avatar billede zorkmontana Nybegynder
16. oktober 2004 - 17:53 #3
yes... det var lige sådanne svar jeg skulle have... kigger lige på dem og skriver tilbage... ved ikke helt om jeg bliver færdig før aftensmad ;-) ...
Avatar billede zorkmontana Nybegynder
16. oktober 2004 - 18:55 #4
legende.dk --->
:)
    $query = mysql_query("SELECT * FROM produkter WHERE produkt ='$produktnavn'");
    if($prow = mysql_fetch_assoc($query)) {
        $felt1 = $prow['felt1'];
        $felt2 = $prow['felt2'];
    }
    break;
  default:
    $produkter = array();
    $result = mysql_query("SELECT produkt FROM produkter");
    while($row = mysql_fetch_assoc($result)) {
      array_push($produkter, $row['produkt']);
    }
}

er der ikke en fejl her.. kan ikke fixe den...!


jeg kigger på begge eksempler ;)
Avatar billede baitianlong Nybegynder
16. oktober 2004 - 18:57 #5
Får du en fejl-melding. i så fald hvad ?
Avatar billede zorkmontana Nybegynder
16. oktober 2004 - 21:00 #6
jeg får nemlig ikke nogen fejl... min server er lidt for tollerent :D
Avatar billede zorkmontana Nybegynder
16. oktober 2004 - 21:01 #7
men det ser ud som om du vil starte noget med ":)" i starten med er ikke sikker på hvad...
og der kommer ikke noget når jeg starter...
Avatar billede sostack Nybegynder
16. oktober 2004 - 21:03 #8
skal være <?php

//sostack
Avatar billede baitianlong Nybegynder
16. oktober 2004 - 21:05 #9
Tabellen skal jo sættes op, eller rettere, mit script skal rettes til... JEg ved jo ikke hvad dine felter i tabellen hedder, derfor har jeg bare skrevet felt1 og felt2 og produkter.

Det kunne vel være: pris og leveringstid, eller hvad ved jeg :)
Avatar billede zorkmontana Nybegynder
16. oktober 2004 - 21:06 #10
legende.dk ---> det er heller ikke problemet tror jeg ... sidder og isolere mig frem :D...
Avatar billede sostack Nybegynder
16. oktober 2004 - 21:07 #11
:) skal være <?php

//sostack
Avatar billede baitianlong Nybegynder
16. oktober 2004 - 21:08 #12
Nårh ja.. JEg kan godt se mit indlæg er lidt syret. Jeg er kommet til at kopiere koden ind to gange... eller knap nok. Det må du undskylde.

Bare glem alt fra :) og nedefter
Avatar billede zorkmontana Nybegynder
16. oktober 2004 - 21:09 #13
sostack --> jep... sorry jeg ikke lige svarede...
Avatar billede zorkmontana Nybegynder
16. oktober 2004 - 21:16 #14
hehe... ;) hvad der kan ske..!

men kan ikke lige få den til at vise noget i dropdown menuen..?
poster lige min kode!
Avatar billede zorkmontana Nybegynder
16. oktober 2004 - 21:18 #15
<?php
$funktion = $_GET['funktion'];
$produktnavn = $_POST['produkt'];

switch($funktion) {
  case "gem":
    $felt1 = $_POST['felt1'];
    $felt2 = $_POST['felt2'];
    mysql_connect("localhost", "user", "pass");
    mysql_select_db("db");
    mysql_query("UPDATE produkter SET felt1='$felt1', felt2='$felt2' WHERE produkt='$produktnavn'");
    mysql_connect("localhost", "user", "pass");
    mysql_select_db("produkter");
    break;
  case "hent":
    mysql_connect("localhost", "user", "pass");
    mysql_select_db("produkter");
    $query = mysql_query("SELECT * FROM produkter WHERE produkt ='$produktnavn'");
    if($prow = mysql_fetch_assoc($query)) {
        $felt1 = $prow['felt1'];
        $felt2 = $prow['felt2'];
    }
    mysql_connect("localhost", "user", "pass");
    mysql_select_db("produkter");
    break;
  default:
    $produkter = array();
    $result = mysql_query("SELECT produkt FROM produkter");
    while($row = mysql_fetch_assoc($result)) {
      array_push($produkter, $row['produkt']);
    }
}
?>
<html>
<form action="<?= $_SERVER['PHP_SELF'] ?>?funktion=hent" onSubmit="this.produkt.value=this.produkter.value" method="post">
<input type="hidden" name="produkt" value="">
<select name="produkter" size="1">
<?php
foreach($produkter as $produkt) {
  print("<option value=\"$produkt\">$produkt</option>");
}
?>
</select><br>
<input type="submit" value="Hent";>
</form>

<form action="<?= $_SERVER['PHP_SELF'] ?>?funktion=gem" method="post">
<input type="hidden" name="produkt" value="<?= $produktnavn ?>">
<input type="text" size="50" name="felt1" value="<?= $felt1 ?>"><br>
<input type="text" size="50" name="felt2" value="<?= $felt2 ?>"><br>
<input type="submit" value="Gem">
</form>
</html>
Avatar billede sostack Nybegynder
16. oktober 2004 - 21:23 #16
Jeg synes du skal prøve denne:
<?php
mysql_connect("localhost", "user", "pass");
mysql_select_db("produkter");
$tabel = "produkt";
$qry_hente = "SELECT `produkt` FROM $tabel";
$res_hente = mysql_query($qry_hente) OR DIE(mysql_error());
echo "<form action='" . $_SERVER["PHP_SELF"] . "' method='POST'>\n";
echo "<SELECT name='produkt'>\n";
WHILE(FALSE != $produkt = mysql_fetch_row($res_hente))
{
    echo "<OPTION value='$produkt'>$produkt</OPTION>\n";
}
echo "</SELECT>";
echo "<input type='submit' name='knap' value='Hent'>\n";
echo "</form>
if(isset($_REQUEST["knap"]) && isset($_REQUEST["produkt"]))
{
    if("Hent" == $_REQUEST["knap"])
    {
        $qry_produkt = "SELECT * FROM $tabel WHERE `produkt`='" . $_REQUEST["produkt"] . "'";
        $res_produkt = mysql_query($qry_produkt);
        $produktet = mysql_fetch_assoc($res_produkt);
        echo "<form action='" . $_SERVER["PHP_SELF"] . "' method='POST'>\n";
        foreach($produktet AS $feltnavn => $vaerdi)
        {
            echo "$feltnavn:<input type='text' name='$feltnavn' value='$vaerdi'><br />\n";
        }
        echo "<input type='submit' name='knap' value='Opdater'>\n";
    } elseif("Opdater" == $_REQUEST["knap"])
    {
        $opdatering = "";
        $qry_opdater = "UPDATE $tabel SET ";
        foreach($_REQUEST AS $felt => $feltvaerdi)
        {
            if("knap" != $felt && "produkt" != $felt)
            {
                if("" == $opdatering)
                {
                    $opdatering = "`$felt`='$feltvaerdi'";
                } else {
                    $opdatering .= ", `$felt`='$feltvaerdi'";
                }
            }
        }
        mysql_query($qry_opdater . $opdatering . " WHERE `produkt`='" . $_REQUEST["produkt"] . "'") OR DIE(mysql_error());
    }
}
?>

//sostack
Avatar billede zorkmontana Nybegynder
16. oktober 2004 - 21:34 #17
hmmm... er ikke helt sikker på den ter sig lidt underligt...!

http://vsm.firedrake.lir.dk/administration/test2.php
Avatar billede zorkmontana Nybegynder
16. oktober 2004 - 21:36 #18
der er sostack's model...!
Avatar billede baitianlong Nybegynder
16. oktober 2004 - 22:07 #19
OK; min havde nogle bugs... Men jeg har fikset og testet den nu:

http://www.legende.dk/produkter.php?funktion=hent

Nu ser koden således ud:

<?php
$funktion = $_GET['funktion'];
$produktnavn = $_POST['produkt'];

switch($funktion) {
  case "gem":
    $felt1 = $_POST['felt1'];
    $felt2 = $_POST['felt2'];
    mysql_connect("localhost", "legende_dk", "MFCLgiz5");
    mysql_select_db("legende_dk");
    mysql_query("UPDATE produkter SET felt1='$felt1', felt2='$felt2' WHERE produkt='$produktnavn'");
    print("Oplysninger gemt !");
    $produkter = array();
    $result = mysql_query("SELECT produkt FROM produkter");
    while($row = mysql_fetch_assoc($result)) {
      array_push($produkter, $row['produkt']);
    }
    break;
  case "hent":
    mysql_connect("localhost", "legende_dk", "MFCLgiz5");
    mysql_select_db("legende_dk");
    $query = mysql_query("SELECT * FROM produkter WHERE produkt ='$produktnavn'");
    if($prow = mysql_fetch_assoc($query)) {
        $felt1 = $prow['felt1'];
        $felt2 = $prow['felt2'];
    }
    $produkter = array();
    $result = mysql_query("SELECT produkt FROM produkter");
    while($row = mysql_fetch_assoc($result)) {
      array_push($produkter, $row['produkt']);
    }
    break;
  default:
    $produkter = array();
    mysql_connect("localhost", "legende_dk", "MFCLgiz5");
    mysql_select_db("legende_dk");
    $result = mysql_query("SELECT produkt FROM produkter");
    while($row = mysql_fetch_assoc($result)) {
      array_push($produkter, $row['produkt']);
    }
}
?>
<html>
<form action="<?= $_SERVER['PHP_SELF'] ?>?funktion=hent" onSubmit="this.produkt.value=this.produkter.value" method="post">
<input type="hidden" name="produkt" value="">
<select name="produkter" size="1">
<?php
foreach($produkter as $produkt) {
  print("<option value=\"$produkt\">$produkt</option>");
}
?>
</select><br>
<input type="submit" value="Hent";>
</form>

<form action="<?= $_SERVER['PHP_SELF'] ?>?funktion=gem" method="post">
<input type="hidden" name="produkt" value="<?= $produktnavn ?>">
<input type="text" size="50" name="felt1" value="<?= $felt1 ?>"><br>
<input type="text" size="50" name="felt2" value="<?= $felt2 ?>"><br>
<input type="submit" value="Gem">
</form>
</html>


Den virker perfekt... Beklager de andre ikke testede forslag :) Den her er smuk nu !
Avatar billede baitianlong Nybegynder
16. oktober 2004 - 22:10 #20
Eller bare: http://www.legende.dk/produkter.php

Den kan hente, gemme osv. som ønsket :)
Avatar billede zorkmontana Nybegynder
16. oktober 2004 - 22:15 #21
Weee... det virkede....
min accepterede så bare ikke lige linien :

print("<option value=\"$produkt\">$produkt</option>");

den skulle se sådan ud:

print"<option value=\"$produkt\">$produkt</option>";

yes...!
Avatar billede baitianlong Nybegynder
16. oktober 2004 - 22:19 #22
Tidligere skrev jeg altid bare print "hva så der"; Men så fik jeg en PHP bog, og bemærkede at alle print-lines så sådan ud print("hva så der"); Så nu er jeg begyndt på det... Jeg kan ikke forklare noget om det, og ... who cares :P

Det glæder mig dog at det virker fint nu :)
Avatar billede zorkmontana Nybegynder
18. oktober 2004 - 02:01 #23
legende.dk onSubmit="this.produkt.value=this.produkter.value"
jeg er begyndt at optimere til browsere... og er løbet ind i at den mest brugte browser ikke understøtter den funktion ... altså IExplore :(
Avatar billede baitianlong Nybegynder
18. oktober 2004 - 02:08 #24
Det er den jeg bruger, og det virker fint her !?

Hvis du checker min version på mit link, har jeg allerede slettet tabellen fra databasen, men vil gerne oprette den igen. Hvis det er din egen version, fatter jeg ikke hvorfor det ikke virker ! onSubmit er gammel og smuk !!! Den virker fint :) Hvis ikke, kan vi fikse det med

this.action += "&produkt="+this.produkter.value;

øhh, eller noget :)
Avatar billede zorkmontana Nybegynder
18. oktober 2004 - 02:09 #25
nu har jeg mixet din version sammen med sostack og nu virker det :D

this.produkt.value=this.produkter.value det er den den ikke kunne lide...!
Avatar billede baitianlong Nybegynder
18. oktober 2004 - 02:17 #26
Det forstår jeg ikke, men det er godt at det virker nu :)
Avatar billede zorkmontana Nybegynder
27. oktober 2004 - 08:47 #27
yes yes... nu køre det optimalt på de fleste browsere... ;D jeg deler point mellem jer...
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