Avatar billede xpresand Nybegynder
06. juli 2012 - 21:05 Der er 21 kommentarer og
1 løsning

tage antal af kategorier til dropdown

Hej alle!

Jeg skal have fundet ud af hvilken måde at man nemmeste gør dette på.
Det jeg skal bruge hjælp til er, at jeg har en liste med kategorier, og dem skal man kunne give et nummer, så at 1 er den første, 2 den anden ovs - således at man kan bestemme rækkefølgen af dem.

Det skal selvfølgelig gøres i en dropdown - det jeg så vil vide er, når jeg nu ved at der f.eks. er 20 kategorier, hvordan gør jeg det så nemmest at der i dropdown menuen vises tallene fra 1 til 20 fx?

Tak på forhånd.
Avatar billede majbom Novice
06. juli 2012 - 21:34 #1
hvor kommer den "liste" med kategorier fra?
en tabel?
Avatar billede xpresand Nybegynder
06. juli 2012 - 21:42 #2
Ja, de er gemt i en tabel.
Avatar billede olebole Juniormester
06. juli 2012 - 21:44 #3
<ole>

Det bliver vist en lang quiz! Forklar lidt bedre, hvad det er, du skal bruge. Vi aner intet om, hvordan din applikation er opbygget  =)

/mvh
</bole>
Avatar billede majbom Novice
06. juli 2012 - 21:51 #4
skal du bare fylde dine kategorier i en select?
Avatar billede xpresand Nybegynder
06. juli 2012 - 21:52 #5
Det er bygget op i PHP
Jeg har en tabel med nogle kategorier fx:

Sol
Sommer
Vand
Strand


Dem skal jeg så kunne give en rækkefølge ved at jeg har en dropdown ved hver kategori.
Nu er der jo 4 kategorier, derfor skal der i dropdown være nr:
1
2
3
4

fordi der er 4 kategorier. Det er det jeg vil vide hvordan man nemmest gør at der er samme antal <option></option> som der er af kategorier.
Avatar billede olebole Juniormester
06. juli 2012 - 21:59 #6
Du laver et kald til databasen, som afgør, hvormange kategorier, der er. Derefter udskriver du options udfra de data
Avatar billede xpresand Nybegynder
06. juli 2012 - 22:01 #7
Så jeg laver en der tæller hvor mange der er, som så vil komme med outputtet 4, men hvordan ved den så at der skal være 4 options med tallene 1 - 4?

Det er det der er min problem ;)
Avatar billede majbom Novice
06. juli 2012 - 22:03 #8
hent de kategorier ud du vil og løb dem igennem - for hver kategori "genererer" du en <option>
Avatar billede xpresand Nybegynder
06. juli 2012 - 22:08 #9
Men der skal være en option ved hver kategori der indeholder det antal option der er kategorier:

Sol                [dropdown: 1,2,3,4]
Sommer        [dropdown: 1,2,3,4]
Vand              [dropdown: 1,2,3,4]
Strand            [dropdown: 1,2,3,4]

Og så er det er jo meningen at man vælge mellem 1-4 for at bestemme rækkefølgen ;)

Det kan da ikke gøres som du beskriver, kan det?
Avatar billede olebole Juniormester
06. juli 2012 - 22:49 #10
Jeg tror ikke, der er nogen af os, der forstår, hvad det er, du vil lave. Fortæl helt fra begyndelsen, hvad du skal bruge det til, hvordan og hvorfor
Avatar billede xpresand Nybegynder
06. juli 2012 - 23:04 #11
Har lavet et billede af hvordan det ser ud:
http://cl.ly/2b1q1m3U1K2D2f0Y1T42

Ved hver kategori, er der en drop down med det antal numre som det er kategorier. På billedet er der 6 kategorier, derfor skal der i hver dropdown være numrene:
1
2
3
4
5
6


Hvis der f.eks. var 20 kategorier, skulle der være fra nr 1-20 i hver drop down. Så der skal være det antal options i hver dropdown som der er kategorier.

Det skal bruges så man kan bestemme rækkefølgen på kategorierne.
Avatar billede olebole Juniormester
06. juli 2012 - 23:18 #12
Vent lige lidt. Det får du en langt mere elegant løsning på om 10-15 minutter  =)
Avatar billede olebole Juniormester
07. juli 2012 - 00:07 #13
Prøv dette HTML-dokument:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Untitled Document</title>
<style type="text/css">
body {
    margin: 0;
    padding: 0;
    font: 12px verdana, arial, sans-serif;
}
#categories {
    margin: 0;
    padding: 0;
    list-style: none;
}
</style>
<script type="text/javascript">
function catClick(event) {
    var elmSrc = event.target||event.srcElement,
    sSrc = elmSrc.getAttribute("src");
    if (!sSrc||sSrc==="") return;
    var elmPar = elmSrc.parentNode,
    sId = elmPar.getAttribute("id");
    (/_([a-z]+)\.png$/).test(sSrc);
           
    switch (RegExp.$1) {
        case "up":
            if (elmPar.previousSibling) elmPar.parentNode.insertBefore(elmPar, elmPar.previousSibling);
        break;
        case "down":
            if (elmPar.nextSibling.nextSibling) elmPar.parentNode.insertBefore(elmPar, elmPar.nextSibling.nextSibling);
        break;
        case "edit":
            alert("Edit: "+sId);
        break;
        case "delete":
            alert("Delete: "+sId);
        break;
    }
}
function saveOrder(elmForm) {
    var a = [], aLI = elmForm.getElementsByTagName('li');
    for (var i=0,j=aLI.length; i<j; i++) a[i] = aLI[i].getAttribute("id");
    elmForm.showlist.value = a.join(",");
}
</script>
</head>
<body>

<form action="" method="post" onsubmit="saveOrder(this)">
<input name="showlist" type="hidden">
<ul id="categories" onclick="catClick(event)">
    <li id="item_1">Item #1<img src="icn_up.png"><img src="icn_down.png"><img src="icn_edit.png"><img src="icn_delete.png"></li><li
        id="item_2">Item #2<img src="icn_up.png"><img src="icn_down.png"><img src="icn_edit.png"><img src="icn_delete.png"></li><li
        id="item_3">Item #3<img src="icn_up.png"><img src="icn_down.png"><img src="icn_edit.png"><img src="icn_delete.png"></li><li
        id="item_4">Item #4<img src="icn_up.png"><img src="icn_down.png"><img src="icn_edit.png"><img src="icn_delete.png"></li><li
        id="item_5">Item #5<img src="icn_up.png"><img src="icn_down.png"><img src="icn_edit.png"><img src="icn_delete.png"></li>
</ul>
<p>
    <button type="submit">Update</button>
</p>
</form>

</body>
</html>

Det kræver to nye ikoner: en pil op og en pil ned.

Bemærk den lidt sjove måde, jeg har skrevet LI elementerne på. For at holde DOM-koden simpel, må der ikke være white-space mellem LI elementerne. Da du formodentlig udskriver posterne dynamisk, burde dette ikke være et problem
Avatar billede olebole Juniormester
07. juli 2012 - 00:09 #14
- og man kunne også lave en drag/drop løsning, men det bliver en del mere kompliceret. Hvis du har lyst til at skrive det selv, skal du dog være mere end velkommen  =)
Avatar billede olebole Juniormester
07. juli 2012 - 00:12 #15
PS: På serveren henter du række følgen med:

$order = explode(',', $_POST['showlist']);

Så har du et array med LI elementernes ID'er i ønsket rækkefølge
Avatar billede xpresand Nybegynder
07. juli 2012 - 11:14 #16
Det virker! Super.. dog har jeg nu det problem, mit array ser jo sådan her ud:

$order = explode(',', $_POST['showlist']);
echo "$order[0]";
echo "$order[1]";
echo "$order[2]";
echo "$order[3]";
echo "$order[4]";
echo "$order[5]";

Og det fungerer, men jeg har jo selv tilføjet array nr 0-5 - og hvis jeg nu opretter en ny kategori, således at der er 7 i stedet for 6 skal jeg jo selv manuelt gå ind og tilføje $order[6] - er der en måde at den kan gøre det automatisk, hvis man ved hvor mange kategorier man har?
Avatar billede xpresand Nybegynder
07. juli 2012 - 11:27 #17
Eftersom min kode ser således ud, er det også lidt svært at implementere dit system desværre, det vil kræve at jeg laver det hele om, hvilket jeg ikke har tid til - det var derfor at jeg søgte den anden løsning, der vil være nemt at implementere.

<table width="100%" class="content">
<tr>
<td>
<h3>MINE KATEGORIER</h3>
</td>
<td width="20">
<b>REDIGER</b>
</td>
<td width="40">
<b><center>SLET</center></b>
</td>

<?
include 'connect.php';

$kategorier = mysql_query("SELECT * FROM lh_kategori WHERE katid='' ORDER BY navn") or die(mysql_error());
while($w = mysql_fetch_assoc($kategorier)){
$navn = $w[navn];
$id = $w[Id];

echo"
<tr>
<td class='list'>
<div onMouseOver=\"this.style.background='#F3f3f3'\" onMouseOut=\"this.style.background=''\" onclick=\"location.href='kategori.php?id=$id';\" style=\"cursor:pointer;\" width='100%'>  $navn</div>
</td>
<td class='list'>
<center>
<a href='edit.php?id=$id' rel='facebox'><img src='edit.png' alt='edit' border='0'></a><
/center>
</td>
<td class='list'>
<center>
<a href='delete.php?id=$id' rel='facebox'>x</a>
</center>
</td>
</tr> 
";
} ?>

</table>
Avatar billede xpresand Nybegynder
07. juli 2012 - 11:28 #18
Har fået et svar på løsningen her:
http://codefinder.dk/forumtraad/87

Evt. efterlad et svar Ole, så får du point alligevel :)
Avatar billede olebole Juniormester
07. juli 2012 - 19:18 #19
Det kan godt være, du ikke mener at have tid til at skrive god kode, men jeg vil ikke undlade at pointere det uhensigtsmæssige i at spilde sit liv på dårlig kode  =)
Avatar billede xpresand Nybegynder
07. juli 2012 - 23:48 #20
Ole, nu må du tage dig sammen - jeg gider ikke tage den diskussion igen, og man burde tro at af en voksen at være, at du bare lod det ligge. Bare fordi jeg vælger en anden løsning og koder lidt anderledes en måske du, betyder det da ikke det er dårligt kode! Du får ikke noget ud af livet ved kun at rakke ned på folk.

Fremover, vil jeg gerne bede dig om, at hvis du har en løsning på problemet så hjælp gerne, ellers bliv ude af samtalen!

Hvorfår gå så meget op i hvad andre gør - bare hjælp, så kan du være ligeglad med resten.

Desuden:
http://validator.w3.org/check?uri=http%3A%2F%2Flars.gixmo.dk%2Fadmin%2Findex2.php&charset=%28detect+automatically%29&doctype=Inline&group=0

Så er der vidst ikke så meget at komme efter!!
Avatar billede olebole Juniormester
08. juli 2012 - 00:40 #21
Sorry, jeg fik lagt denne kommentar i en anden tråd, end jeg troede  =)

Sammenlign endelig ikke dette med den diskussion, vi før har haft. I den forrige tråd var du jo fuldstændig i hegnet ... men det er da fint, du om ikke andet fik en mulighed for at komme af med lidt af pigesurheden  *o)
Avatar billede xpresand Nybegynder
16. august 2012 - 20:00 #22
lukker:)
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