25. juli 2005 - 16:00Der er
25 kommentarer og 1 løsning
Menu baseret på database
Hej Jeg har lavet en simpel menu i en tabel. Denne skal styres fra en database (slut med det simple for mig:)
Databasen:
Tabel varer: titel tekst emne ølglas blabla glas tekande blabla porcelæn osv...
("glas" og "porcelæn" bliver slået op i en tabel "emner")
Det færdige resultat skal se nogenlunde sådan ud:
Emner: Porcelæn [2] Glas [6] mønter [13] belysning [4] osv...
Hvis vi f.eks. kigger nærmere på punktet Glas, så er "Glas" skrevet som HTML. [6] skal være en sammentælling af antallet af poster, hvori der står "Glas", under feltet "emne"
Hvis der ikke findes nogle poster der har "glas" som emne , Så skal menupunktet "glas" ikke vises. (må være noget med en if sætning, ved bare ikke hvordan)
"Glas [6]" skal være et link der viderefører alle poster hvor emne = Glas.
Side 2 skal fange de data der bliver sendt med. Hvis id=glas lister den alle glasgenstande op. Hvis id=porcelæn listes alle porcelænsgenstande op. (kan man det?)
Er der nogen der kan hjælpe mig med denne (for mig) komplicerede kodning?
Danmark vil mindske afhængigheden af globale techgiganter, men det kræver mere end politiske formuleringer og strategier, understreger PROSA’s formand Niels Bertelsen.
Du skal ud i noget med at joine og tælle. Det kunne være noget i stil med:
SELECT V.Titel, Count(E.emne) AS AntalEmner FROM Varer AS V INNER JOIN Emner AS E ON V.emne = E.ID GROUP BY V.titel
Dette skulle give et resultat med flg. felter: Titel AntalEmner
Jeg antager i dette eksempel at du har flg. tabeller: Varer = titel (som er f.eks. ølglas) + emne (som er en fremmednøgle der peger på primærnøglen i emner) + tekst
Emner = ID (som er primærnøgle) + emne (som er teksten for emnet)
Desuden forventes det at du benytter Access (ellers skal du fjerne AS efter tabelnavnene i JOIN-udtrykket).
Hej softspot, og tak for din hurtige respons. jeg bruger Access
I tabellen "emner" har jeg kun feltet emne, da de alligevel er unikke for den tabel. Derfor har jeg så udskiftet E.ID med E.emne
Når jeg bruger din sql sætning, så skriver den alle poster ud, og ved AntalEmner, skriver den 1 ud for hver, men den tæller dem ikke sammen. Når jeg laver en <%=(RSantik.Fields.Item("AntalEmner").Value)%> Står der således bare [1], men på den anden side, fortæller den streng jeg laver jo heller ikke hvilket emne den skal tælle sammen...
Står teksten til et emne på selve varen, altså er nøglen den faktiske tekst (f.eks. "glas"), for så behøver du ikke lave en join, så burde du bare kunne gruppere på emne i varetabellen...
Nå, det lader til at jeg har fået startet på det forkerte udtræk - undskyld. Du skal jo bruge emneteksten og antallet af gange det er brugt. Det må være således:
SELECT emne, COUNT(emne) AS antalEmner FROM varer GROUP BY emne
Ja tredje gang var lykkens gang :), det virker med at tælle antallet af emner. Hvordan får jeg den så til at skrive ud? Som sagt, når jeg bruger <%=(RSantik.Fields.Item("AntalEmner").Value)%> Tager den vel bare den første og bedste post og skriver ud...
Du er ihvertfald sikker på halvdelen af pointene, for det du har givet mig, virker 100%. Jeg må dog lige vente med at give dig dine points, indtil nogen har hjulpet mig med 2. halvdel af spørgsmålet(linkfunktionen), ellers er der vist nogen der bliver tvære!
Du har blandet HTML og serverside script lidt sammen. Jeg tænker specielt på den del hvor du trækker rsantik("emne") ud til href i dit link. Enten så skal du lave inline script omkring det udtræk (se eksempel 1), ellers skal du gøre som jeg gjorde og lave det hele som script (det performer iflg. diverse kilder også bedre hvis man undgår at skifte mellem serverside script og HTML - se eksempel 2)
Eksempel 1: <table width="90%" border="0" align="right" cellpadding="0" cellspacing="0"> <% do while not rsantik.eof %> <tr> <td height="20" valign="bottom"> <div align="left" class="style12"><a href="side2.asp?id=<%= cstr(rsantik("emne")) %>"> <strong>• <%= cstr(rsantik("emne")) %></strong></a> [<%= cint(rsantik("antalEmner")) %>] </div></td> </tr> <% rsantik.movenext loop %> </table>
Hvis du er træt af alle de der dobbelte anførselstegn kan du bruge apostrof til attributværdierne i HTML - det bliver nok lidt lettere at overskue på den måde :)
Ja, man kan i mange tilfælde endda undlade apostrof/anførselstegn omkring attributter i HTML-kode (hvis det er en sammenhængende streng, dvs. ingen mellemrum).
Microsoft OLE DB Provider for ODBC Drivers fejl '80040e14'
[Microsoft][ODBC Microsoft Access-driver] Der er en syntaksfejl, fordi der mangler en operator. i forespørgselsudtrykket "emneFROM varer WHERE emne = ''".
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.