Avatar billede tlunde Nybegynder
25. august 2005 - 10:14 Der er 7 kommentarer og
1 løsning

Hente data fra database til dropdown?

Hejsa,
Jeg er ved at lave følgende form:
http://www.selvhjaelp.dk/idebank/idebank.php

I toppen har jeg 2 dropdowns, hvor jeg har fået den ene til at hente data fra databasen, det er bare den anden jeg ik lige kan finde ud af nu...

Hvis man i den første dropdown vælger "Ensomhed", så skal der i dropdown nedenunder kommer alle de emner som har "Ensomhed" som hovedkategori?

Forstår i?

Kunne meget godt lige bruge lidt hjælp her :)

Mvh.
Thomas
Avatar billede 13thsky Nybegynder
25. august 2005 - 10:39 #1
Hvis den får 'value' fra første drop down sednt via en form (method=POST), kan du bruge følgende...

<select name="underkategori">
<?
$hovedkategori = $_POST["hovedkategori"];
$i = 0;
db_con();
$forsp1 = mysql_query("SELECT underemne FROM WHERE hovedkategori = '$hovedkategori'");
while($forsp2 = mysql_fetch_row($forsp1))
{
echo "<option value='".$i."'>".$forsp2[0]."</option>";
}
?>
</select>
Avatar billede 13thsky Nybegynder
25. august 2005 - 10:51 #2
ok, forfra:



<select name="hovedkategori" id="hovedkategori" onChange="window.location.href = (this.options[this.selectedIndex].value);">
<?
db_con();
$query = mysql_query("SELECT * FROM hovedkategorier ORDER BY hovedkategorier ASC")
or die(mysql_error());

while($row = mysql_fetch_array($query))

echo "<option value='idebank.php?id=$row[hovedkategorier]'>$row[hovedkategorier]</option>";
}
?>
</select>


<select name="underkategori">
<?
$hovedkategori = $_GET["id"];
$i = 0;
db_con();
$forsp1 = mysql_query("SELECT underemne FROM WHERE hovedkategori = '$hovedkategori'");
while($forsp2 = mysql_fetch_row($forsp1))
{
echo "<option value='værdi_nr".$i."'>".$forsp2[0]."</option>";
$i++;
}
?>
</select>
Avatar billede krydset Nybegynder
25. august 2005 - 15:00 #3
Jeg sidder og følger denne tråd, da jeg prøver at lave noget ala det samme, og har et spm i den forbindelse... Kan man ikke få den til at gemme den første select værdi således den er valgt igen efter siden har reloaded.
Avatar billede tlunde Nybegynder
25. august 2005 - 15:08 #4
krydset:
Det er også det samme jeg har brug for, men ved ik helt hvordan det også skal gøres? Måske noget med at gemme den første værdi i en variabel?
Avatar billede krydset Nybegynder
25. august 2005 - 16:31 #5
Jeg har lavet det sådan her


<?php
$testRes = mysql_query("SELECT * FROM category WHERE CategoryId = '$_GET[categoryid]'") or die(mysql_error());
while($testRow = mysql_fetch_array($testRes)) {
    $_SESSION['categoryName'] = $testRow['CategoryName'];
}
?>
<form action="index.php?link=fragtAction.php" method="post">
    <table align="center" class="form" cellspacing="2" border="1">
        <tr>
            <td align="center" class="topBoks" colspan="3">OPRET VARE</td>
        </tr>
        <tr>
            <td class="helpText" colspan="3">
            At oprette en vare i dette system er let. Ganske enkelt udfyld nedestående form med de korrekte oplysninger.
            Hvis der er et felt du ikke forstår meningen af, så kan du føre muse makøren over ? tegnet til højre for hvert felt og få en
            forklaring
            </td>
        </tr>
       
        <tr>
            <td>Varenavn:</td>
            <td><input type="text" name="itemName" class="textField"></td>
            <td><img src="pic/quest.jpg" width="15px"></td>
        </tr>
        <tr>
            <td>Indledende text:</td>
            <td><input type="text" name="headerText" class="textField"></td>
            <td><img src="pic/quest.jpg" width="15px"></td>
        </tr>
        <tr>
            <td>Kategori valg</td>
            <td>
                <select name="subCategoryId" class="textField" onChange="window.location.href = (this.options[this.selectedIndex].value);">
                <?php
                //Henter her alle kategorier ud fra database
                $categoryRes = mysql_query("SELECT * FROM category ORDER BY CategoryName") or die(mysql_error());
                while($categoryRow = mysql_fetch_array($categoryRes)) {
                    $categoryName = ucfirst($categoryRow['CategoryName']);
                    echo("<option value='index.php?link=newitem.php&categoryid=$categoryRow[CategoryId]' ");
                    if($categoryRow['CategoryName'] == $_SESSION['categoryName']) {
                        echo " selected";
                    }
                    echo(">".$categoryRow['CategoryName']."</option>");
               
                }
                ?>
                </select>
            </td>
            <td><img src="pic/quest.jpg" width="15px"></td>
        </tr>
   
        <tr>
            <td>Varegruppevalg</td>
            <td>
                <select>
                    <?php
                    $subcategoryRes = mysql_query("SELECT * FROM subcategory WHERE categoryId = '$_GET[categoryid]'") or die(mysql_Error());
                    while($subcategoryRow = mysql_fetch_array($subcategoryRes)) {
                       
                        echo("<option value='$subcategoryRow[subCategoryId]'>$subcategoryRow[subCategoryName]</option>");
                       
                    }
                    ?>
                </select>
            </td>
        </tr>
    </table>
</form>
Avatar billede krydset Nybegynder
25. august 2005 - 16:34 #6
det øverste sætter så en session jeg bruger til at finde den sidstvalgte værdi i den første select, men dog er problemet bare at den ikke slætter session, men det sætter jeg den til når jeg på den næste fil skal indsætte i database så sletter jeg session så selecten er nulstillet igen næste gang jeg skal bruge den
Avatar billede 13thsky Nybegynder
25. august 2005 - 23:31 #7
Ikke det kønneste, men det fungerer...

<?
include("db.php");
$hovedkategori = $_GET["id"];
?>
<html>
<head>
<title>Untitled Document</title>
</head>

<body>
<select name="hovedkategori" id="hovedkategori"  onChange="window.location.href = (this.options[this.selectedIndex].value);">
<option value='test2.php?id='>Vælg her...</option>
<option value='test2.php?id=Sorg' <? if($hovedkategori=="Sorg") { echo "selected"; } ?> >Sorg</option>
<option value='test2.php?id=Familieproblemer' <? if($hovedkategori=="Familieproblemer") { echo "selected"; } ?>>Familieproblemer</option>";
<option value='test2.php?id=Sygdom' <? if($hovedkategori=="Sygdom") { echo "selected"; } ?>>Sygdom</option>";
<option value='test2.php?id=Misbrugsproblemer' <? if($hovedkategori=="Misbrugsproblemer") { echo "selected"; } ?>>Misbrugsproblemer</option>";
</select>
<?

if($hovedkategori<>NULL)
{
echo "<select name='underkategori'>";
$i = 0;
db_con();
$forsp1 = mysql_query("SELECT undermenu FROM kategorier WHERE hovedkategori = '$hovedkategori'");
while($forsp2 = mysql_fetch_row($forsp1))
{
echo "<option value='værdi_nr".$i."'>".$forsp2[0]."</option>";
$i++;
}
}
?>
</select>
</body>
</html>

/13
Avatar billede tlunde Nybegynder
26. august 2005 - 08:06 #8
Takker for hjælpen 13thsky...det virker sgu som det skal nu :)
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
Computerworld tilbyder specialiserede kurser i database-management

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