Avatar billede nicocarlos Nybegynder
02. februar 2006 - 00:16 Der er 12 kommentarer og
2 løsninger

Dropdown menu hvor der skal opdages nedenunder

Hejsa.

Er der nogle der kan hjælpe mig med at at lave en drop down menu der henter nogle kategorier fra en mysql tabel. Der skal man så kunne vælge imellem de forskellige menuer fra mysqlen og når man så vælger har jeg samtidig. en anden tabel, hvor den så skal vise de information som hører under den valgte kategori.

Det skulle gerne være at drop down skal være ovenover de informationer der bliver vist nedenunder så snart man vælger kategori (man skal ikke submit noget den skal komme automatisk så snart de vælger i drop downen)

Håber at der er en som kan hjælpe.
Avatar billede nicocarlos Nybegynder
02. februar 2006 - 00:17 #1
"forskellige menuer" - forskellige kategorier.
Avatar billede whatever Nybegynder
02. februar 2006 - 00:48 #2
Jeg har prøvet at strikke et eksempel sammen. Data fra tabellen categories hentes ud i en select-box. Når man vælger en kategori i select-boxen submittes formen automatisk, og  det forsøges at hente information i tabellen infos ved det valgte kategori id. Findes der en post med info til den valgte kategori, vises informationen ellers vises en fejl-besked.

Eksempel:

<?php

    // Connect to mysql database
   
    // Choosen category id
    $ChoosenCategoryId = (isset($_GET['CategoryId']) && is_numeric($_GET['CategoryId']) && $_GET['CategoryId']) ? $_GET['CategoryId'] : 0;

    // Creating option tags with category data
    $Res = mysql_query("SELECT category_id, category_title FROM categories ORDER BY category_title");
    $Options = "";
    while (list($CategoryId,$CategoryTitle) = mysql_fetch_row($Res))
    {
        $Selected = ($CategoryId == $ChoosenCategoryId) ? " selected" : "";
        $Options .= "<option value=\"$CategoryId\"$Selected>".stripslashes($CategoryTitle)."</option>\n";
    }

    // If a category was choosen - the info for the category is selected in database
    if ($ChoosenCategoryId)
    {
        $Res = mysql_query("SELECT info_text FROM infos WHERE info_category_id = $ChoosenCategoryId");
        if (mysql_num_rows($Res) > 0)
            list($InfoText) = mysql_fetch_row($Res);
        else
            $InfoText = "No info where found!";
    }
    else
        $InfoText = "Choose a category first!";

?>

<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<title>-</title>
</head>
<body>
<h1>Choose a category:</h1>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="get" name="FormCategory">
  <select name="CategoryId" onchange="this.form.submit()">
    <option value="">---- Choose a category ----</option>
    <?php echo $Options; ?>
  </select>
</form>
<h1>Category information:</h1>
<?php echo stripslashes($InfoText); ?>
</body>
</html>

Husk at indsætte din database-connection i toppen, samt tilrette tabel- og feltnavne.
Avatar billede whatever Nybegynder
02. februar 2006 - 00:48 #3
Eksemplet er ikke testet!
Avatar billede nicocarlos Nybegynder
02. februar 2006 - 01:46 #4
Jeg tror evt at der mangler en while, fordi den udskriver kun den første i den valgte kategori
Avatar billede nicocarlos Nybegynder
02. februar 2006 - 02:19 #5
Og kan den udskrive mere en 1 info i den tabel, f.eks. Id og navn.
Avatar billede cronaldo Nybegynder
02. februar 2006 - 13:42 #6
<select name="kategori" style="font-family: tahoma,sans-serif; font-size:8pt; font-color: #65845E;">
                    <option>Vælg en kategori:</option>
                        <?php
                           
                        $foresp = mysql_query("SELECT * FROM tabel ORDER BY id ASC");
                        while ($data = mysql_fetch_assoc($foresp))
{
                        $catid = $data['id'];
                        $catnanv = $data['navn'];
                        ?>       

                <option value="<? echo $catid; ?>" <? if($kategori == $catid){ echo "selected"; } ?>><? echo $category; ?></option>
           
                <?php } ?>
            </select>   
<< det gøres såre simpelt :)
Avatar billede cronaldo Nybegynder
02. februar 2006 - 13:43 #7
og et svar hvis det kan bruges :)
Avatar billede nicocarlos Nybegynder
02. februar 2006 - 16:00 #8
Ja til dels kan den godt bruges, men det der skal vises er i en anden tabel.
Avatar billede nicocarlos Nybegynder
02. februar 2006 - 16:29 #9
Du mangler en del på det sidset cronaldo i forhold til det første script, det er det første jeg vil have det som, på nær at den kun udskriver den første i hver tabel, der skal den udskrive alle.
Avatar billede nicocarlos Nybegynder
02. februar 2006 - 16:33 #10
På scriptet fra whatever, vælger man først kategori, derefter viser den det er i en anden tabel som er under denne kategori og det virker helt fint, på nær at den kun viser den første under kategorien som bliver valgt og ikke alle de andre.
Avatar billede whatever Nybegynder
02. februar 2006 - 21:02 #11
Prøv dette:

<?php

    // Connect to mysql database
 
    // Choosen category id
    $ChoosenCategoryId = (isset($_GET['CategoryId']) && is_numeric($_GET['CategoryId']) && $_GET['CategoryId']) ? $_GET['CategoryId'] : 0;

    // Creating option tags with category data
    $Res = mysql_query("SELECT category_id, category_title FROM categories ORDER BY category_title");
    $Options = "";
    while (list($CategoryId,$CategoryTitle) = mysql_fetch_row($Res))
    {
        $Selected = ($CategoryId == $ChoosenCategoryId) ? " selected" : "";
        $Options .= "<option value=\"$CategoryId\"$Selected>".stripslashes($CategoryTitle)."</option>\n";
    }

    // If a category was choosen - the info for the category is selected in database
    if ($ChoosenCategoryId)
    {
        $Res = mysql_query("SELECT info_text FROM infos WHERE info_category_id = $ChoosenCategoryId");
        if (mysql_num_rows($Res) > 0)
        {
            $InfoText = "";
            $I = 1;
            while (list($InfoText) = mysql_fetch_row($Res))
                $InfoText .= "<b>Tekst ".$i++."</b><br />$InfoText<br /><br />";
        }
        else
            $InfoText = "No info where found!";
    }
    else
        $InfoText = "Choose a category first!";

?>
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<title>-</title>
</head>
<body>
<h1>Choose a category:</h1>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="get" name="FormCategory">
  <select name="CategoryId" onchange="this.form.submit()">
    <option value="">---- Choose a category ----</option>
    <?php echo $Options; ?>
  </select>
</form>
<h1>Category information:</h1>
<?php echo stripslashes($InfoText); ?>
</body>
</html>

Afhængig af hvordan du vil have infoen for en valgte kategori vist, kan det være det skal tilpasses.
Avatar billede nicocarlos Nybegynder
02. februar 2006 - 21:43 #12
Kan man ikke:
$Res = mysql_query("SELECT * FROM)

Og så $infotext[navn] etc, sådan så man kan vise mere en info_text
Avatar billede whatever Nybegynder
02. februar 2006 - 23:05 #13
Hvis du har flere felter i info-tabellen der skal ud, kan du f.eks. ændre det til:


    // If a category was choosen - the info for the category is selected in database
    $InfoArray= array();
    if ($ChoosenCategoryId)
    {
        $Res = mysql_query("SELECT * FROM infos WHERE info_category_id = $ChoosenCategoryId");
        if (mysql_num_rows($Res) > 0)
        {
            while ($Row = mysql_fetch_assoc($Res))
                $InfoArray[] = $Row;
        }
    }

Så får du et multidimensionelt array with alle felterne fra info-tabellen.

Når du så skal udskrive infoen laver du bare en løkke:

    if (is_array($InfoArray) && isset($InfoArray[0]))
    {
        while (list(,$InfoData) = @each($InfoArray))
        {
            // Udskriv din html-kode med infoen. Altså $InfoData['felt1'], $InfoData['felt2'] osv.
        }
    }
Avatar billede nicocarlos Nybegynder
02. februar 2006 - 23:23 #14
Det virker Jeg takker :D
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

Seneste spørgsmål Seneste aktivitet
I går 21:00 Libre Office Impress Af Frank i Andre styresystemer
I går 11:47 VB script Af Jenshentze i Word
I går 11:21 Popup ved opstart Af mort1 i Windows
04/0918:50 Slet lokal konto Af ErikHg i Windows
04/0916:05 Ændre tal i en celle Af xvid i Excel