Avatar billede bremer Nybegynder
18. maj 2010 - 21:03 Der er 7 kommentarer og
1 løsning

Dynamisk Dropmenu - selected virker ikke!

Hej Venner,

Hvorfor virker min form ikke!?

Det som jeg prøver på, hvis "?kat=0" (i min URL) skal "ALLE" være aktiv i selected'en. Men er den "?kat=1" skal id'et fra DB'en være aktiv.
 
lige nu bliver selected ikke aktiv :(

Håber i kan hjælp!

MIN KODE:
---------------


<form name="changeContent" method="post" action="">
                <select ONCHANGE="location = this.options[this.selectedIndex].value;">
                <option value="">Alle</option>
                <?php
               
                $result_q = mysql_query("SELECT * FROM ft_kategori ORDER BY kat_name", $connection);
                    if (!$result_q) {
                        die("Database query failed: " . mysql_error());
                }
               
                while ($row_q = mysql_fetch_array($result_q)) {
                  if ($_REQUEST['kat'] == $row_q["id"]) {
                    $aktiv = "selected='selected'";
                  } else {
                    $aktiv = "";
                  }
                    print "<option value='?kat=".$row_q[id]."'".$aktiv.">".$row_q[kat_name]."</option> \n";
                }
                    ?>               
                </select>
            </form>
Avatar billede RexReptiles Nybegynder
19. maj 2010 - 03:59 #1
jeg ville nok gøre sådan her :

<select name="form">
<option <? if ($row['1'] == "1") { ?>selected="selected" <? } ?>  value="1">1</option>

<option <? if ($row['2'] == "2") { ?>selected="selected" <? } ?> value="2">2</option>
</select>
Avatar billede cpfrande Nybegynder
19. maj 2010 - 09:25 #2
Halløjsa,

RexReptiles: Først og fremmest er den kode, som du foreslår jo ikke særlig dynamisk. Det kræver han laver en option i koden fremfor koden danner hans options ud fra databasen.

Til bremer:
Ud fra den kode, som du angiver, ville jeg nok ændre den til:

<?php
$result_q = mysql_query("SELECT * FROM ft_kategori ORDER BY kat_name", $connection);
if (!$result_q)
    die("Database query failed: " . mysql_error());
               
while ($row_q = mysql_fetch_array($result_q))
{
    $aktiv = "";
    if ($_GET['kat'] == $row_q['id'])
        $aktiv = " selected='selected'";
       
    echo "<option value='?kat=" . $row_q['id'] . "'" . $aktiv . ">" . $row_q['kat_name'] . "</option>\n";
}
?>

Det burde virke (har dog ikke testet det).

Jeg har brug $_GET['kat'] fremfor $_REQUEST['kat'] da det jvf. din stump kode altid kommer som en GET-variabel.

Ligeledes har jeg fjernet { og } nogle steder, hvor der kun er en linje i mellem { og }. Det kan man godt i PHP - den tager så den næste linje som værende inden for IF-sætningens "scope".

Se om det ikke virker :-)
Avatar billede bremer Nybegynder
19. maj 2010 - 12:57 #3
@cpfrande = Kærlighed til dig! Det virker sgu, Thanx!
Avatar billede cpfrande Nybegynder
19. maj 2010 - 13:41 #4
Det lyder godt :-)

Held og lykke med det - og tak for points!
Avatar billede RexReptiles Nybegynder
20. maj 2010 - 16:42 #5
hva snakker du om dynamisk? - skal jeg sidde og skrive noget så simpelt som en while? og en $_GET - det er sku da logik for burhøns.

der blev spurgt om et check om aktiv.

min metode er langt mindre kode også forbundet med en while.

men det finder i bare selv ud af.
Avatar billede cpfrande Nybegynder
21. maj 2010 - 07:57 #6
Dit eksempel som du har angivet er ikke dynamisk. Det er det, som jeg snakker om.

Du skriver to linjer med et option i hver, hvor du så har PHP-kode i hver, der skal tjekke om hver linje skal være selected eller ej. Det er ikke dynamisk. Samtidig tjekker du mod konstanter fremfor variabler i din IF-sætning. Det gør netop eksemplet mindre dynamisk igen.

Det dynamiske i bremers eksempel er netop at det er forbundet til en database. Så kan man ligeså godt lave sin kode-stump ud fra det. Specielt når vi snakker så få linjer, som vi gør.

At jeg så derudover ikke er tilhænger af, at koden som du angav er adskilt med PHP så mange gange er så en anden side af sagen. Så er det sku nemmere at samle hele linjen i en stor echo, fremfor at lave <?php og ?> flere gange i linjen.

Så det er sådan set det jeg mener med at din kode ikke var dynamisk. Når det så er sagt - så virker du lidt indebrændt over det :-)
Avatar billede RexReptiles Nybegynder
21. maj 2010 - 21:35 #7
ikke indebrændt - syntes måske bare din metode er åndsvag - og igen snakker du om din while og nu snakker du også echo.

prøv lige tænk over hvordan den her lille bitte linie ville fungere i den while :

<option <? if ($_GET['kat'] == $row_q['id']) { ?>selected="selected" <? } ?>  value="?kat=<?=$row_q['id']?>"><?=$row_q['kat_name']?></option>

jeg syntes bare ik manden lærer noget af den måde du vælger at bære dig ad.

derfor smider jeg ik resultatet med det samme, folk skal lære og ikke ha copy paste klart materiale.

og hvis du da havde en lille smule ide om php kunne du nok ha set fra start hvad min kode var istedet for at sige "dur ik"

hvis du derimod havde lavet en funktion havde jeg bøjet mig og sagt din metode var bedre.. men desværre.
Avatar billede cpfrande Nybegynder
25. maj 2010 - 09:37 #8
RexReptiles:
Nu gider jeg ikke til at starte en større diskution fordi... det er der simpelthen ingen grund til.

Men ja, jeg mener helt bestemt at min måde er betydelig nemmere læselig end din linje, hvor du har <?php og ?> op til flere steder i samme linje.

Ja, jeg mener at:

echo "Hej med dig, " . $navn . ". Du er " . $alder . " år gammel."

er noget nemmere at læse end:

Hej med dig, <?php echo $navn; ?>. Du er <?php echo $alder; ?> år gammel.

Jo flere variabler, der skal udskrives, jo pænere og nemmere er det i min verden at bruge en echo eller en print til at få det ud.

Du mener derudover ikke, at han lærer noget af, at jeg modificere hans kode og derefter skriver den til ham. Fair nok. Det er jo en holdning, som du har til det. Jeg mener på den anden side heller ikke, at han lærer noget ud af den stump kode, som du angav ham. Om ikke andet kunne du nævne hvorledes han skulle bruge det i relation til hans egen kode - det gør du ikke.

Din kode er i min verden forstået således at du ville have ham til at danne linjerne hardcoded i php-filen og lave tjekkene derfra. Af samme årsag hægter du også - i min verden - databasen-delen helt væk og gør ikke koden dynamisk, som jo egentlig er ønsket ud fra det oprindelige post.

Af ovennævnte årsager vælger jeg heller ikke at trække mit udsagn om, at din kode-stump ikke dur. Jeg ved udemærket godt, at den fint kan virke, men det kræver en "større" omkodning. Desuden viser den oprindelig kode at brugeren kender til PHP (er ikke helt newbie), men har i stedet måske en lidt dum fejl, der gør, at han ikke kan komme videre.

Havde det været et problem for bremers forståelse at lave din stump kode ud fra hans kode og derved bruge hans variabler fremfor at bruge konstanter, som ingen sammenhæng har til databasen?

Men lad os lade den ligge her - der er ingen grund til en diskution over en så lille og latterlig ting som dette.
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