Altså på venstre side har vi 3 udtræk, B = billede - Her har vi 3 udtræk med 3 billeder og teksten fra samme udtræk. Men 4,5 og 6 fortsætter ovre på højre side, hvor billede og passende tekst udskrives.
Er der altid kun de 6 udtræk, eller skal det være dynamisk, så der er flere der eller færre der kan vises?
Ellers kan du jo bare som du gør nu, trække de første 3 ud og vise dem i en tabel. Og så med et andet SQL statement, trække de næste 3 ud, og vise dem i en anden tabel ved siden af.
select * from x where id <> storId order by id desc limit 3,6
webweaver - order by id desc limit 3,6 Tager den så alle post's fra id 3 til 6?? Jeg har kunnet spare ufattelig meget tid hvis jeg havde vidst det!! :P
Tjens -> Korrekt. Eneste fejl er et Stor billede er øverst og under billedet er teksten. men de 6 små udtræk er korrekt opstilliet.
Og det er dynamisk. De alle 6 + den store skifter ca. hver dag. Jeg tilføjer flere posts, så den 6. vil forsvinde for hvert nyt indlæg.
Naah ikke helt. Men tæt på. Det betyder ikke decideret at den tager rækkerne med id 3, 4, 5 og 6. Men den bruges til at specificere hvilke rækker man vil have.
Det første tal betyder hvor den skal begynde at trække rækker ud fra, og det andet tal betyder hvor mange rækker den skal trække ud. Så 3,6 vil trække 4,5,6,7,8 og 9 ud.
Hvis du vil bruge den til dit ønske specielt, skal den hedde 3,3. Så viser den række 4, 5 og 6 sorteret efter id desc.
select * from x where id <> storId order by id desc limit 3,3
Og så kan jeg se at du skriver at de små skal være dynamiske. Så ville jeg lave noget med at tælle antal af små udtræk i databasen, dividere det med 2 og runde tallet op. Det tal du får der, er antallet du trækker ud i venstre side. Det resterende antal er tallet som du bruger til at trække dem ud i højre side.
I din limit sætter du så variabler inde med disse tal, istedet for at skrive 3,3. For det er ikke dynamisk.
Så det vil være noget ala,
<?php
// $query her.. Udtræk der trækker de små "rækker" ud.
Mit problem er bl.a. er netop hvordan jeg gør det. Jeg prøvede at opdele den store tabel, til 2 små inde i 1 tabel, som du skrev tidligere, også lagde jeg følgende kode i venstre tabel: sql = select * from x where id <> storId order by id desc
efter do until x.eof så skrev jeg: ikVisIgen = x("id")
i min tabel til højre skrev jeg så:
sql = select * from x where id <> ikVisIgen order by id desc
logisk set, så giver det mening, men problemet er, at sql nr. 2 kun "tager hvor id er alt andet end" det SENESTE id, og ikke ALLE de udskrevne ID.
Du skal kun køre 1 SQL, der udtrækker alle 7 records.
Derefter kan du skrive de 7 records ind i HTML-TABLE-designet, som skitseret i #8.
Opdelingen i spalter via en ekstra TABLE, gør at du kan forbruge de 7 records fra SQLen i den rækkefølge du får dem ind.
Når jeg skriver <% ASP: Læs record 0 felter %> i #8 betyder det at du skal gå frem til første record fra det resultset, som SQL'en har givet som svar, og ikke at der skal køres SQL igen.
Du må vise din ASP-kode til at udføre SQL og løbe igennem de records der kommer ind, hvis jeg skal gå i yderligere detailer.
For jeg har jo netop ikke noget SQL kode / ASP kode. Det dérfor jeg har oprettet spørgsmålet, for jeg kan ikke finde en løsning på det jeg vil have lavet her! :)
Problemet er, at efter den 3. (af de 6) bliver udskrevet, så skal den 4. vises i højre side. Det er dét jeg ikke kan få den til at gøre.
Jeg husker svagt jeg engang har haft leget med det, hvor det var noget med at tælle hvor mange den havde udskrevet, og if i > 3 then response.write "<td>" . - så det næste (ud af 6) bliver udskrevet på højre side.
Det derfor jeg skrev tilføj en ekstra td :) Men jeg kan ikk huske helt hvordan.
Et problem kan altid løses på flere forskellige måder.
Dit problem var, at få indlæst i rækkefølge Stor, 1, 4, 2, 5, 3, 6.
Min løsning har en helt anden strategi: Ombryd Table-design, så indlæsningen gerne må være den naturlige/nemme: Stor, 1, 2, 3, 4, 5, 6.
Kig på #8 igen, og bemærk at rækkefølgen i HTML-sourcen er den, som er nem at læse ind, samtidig med at rækkefølgen på linket i #8 er som du har bedt om. Dermed har du ikke brug for at udføre mere end 1 SQL.
Vedr. VBA kodningen: Jeg går ud fra at du godt kan udføre en sql, og derefter få fat i de enkelt records og deres felter. I mit løsningsforslag skal records bare ikke trækkes ud i et for-loop, men "hardkodet" i det faste TABLE-design.
Jeg har givet dig en løsning der kan virke. At den så er i PHP fordi at jeg ikke havde set at du har spurgt i ASP kategorien er noget andet :P Men kan skrives om til ASP.
Ellers når jeg laver lignende funktioner normalt, laver jeg den med regnefunktionen modulus. Så kan du få den til at bryde mønsteret om man må så at sige. Det kan være at du kan få det til at virke til det som du vil. Er dog ikke helt sikker, da jeg bruger den til at indsætte <tr> normalt (ikke at man kan indsætte andet), men fordi du vil bryde linien vertikalt istedet for horisontalt.
Igen, jeg roder ikke med ASP, så du får det i PHP. Det bør være nogenlunde til at omskrive for dig.
tjens, er problemet ikke at det skal være dynamisk? Som han/hun skriver, er der ikke altid 6 udtræk (foruden det store). Så det kan vel ikke hardcodes på den måde? (jeg er ikke kendt i ASP) Men det ser ud til at hun selv skal ind og lave tabellen manuelt? Se evt. #5
Ja, det kan selvfølgelig godt være at det er de samme 7 som bare skifter uden at antallet stiger eller falder. I såfald er det selvfølgelig bare at hardcode det som du viser :)
I det kode du skrev i #8, der er mit problem: Når du skriver: Læs record 5 f.eks.
Hvordan skal jeg læse præcis 5'eren??
Den hiver det ud fra databasen via et ID nummer.
Er der mange kan ID'et været 320983, er der få kan det være 15 - men det er korrekt, at der ALTID vil være 6 små og 1 stor uanset hvad. - derfor jeg tidligere skrev order by id desc, så den nyeste vises som nr 1 osv.
Øverst skriver du:
<% ASP: Læs de 7 records ind fra databasen %>
Det er det her du hentyder til "kun 1 sql", ikk?
select ... order by id desc limit 0,7
det er de 7 nyeste. hvad skriver jeg så ved record 5,6 eller 2'eren?
Det er vanskeligt at give eksempler, fordi du ikke har vist noget ASP-kode her i spørgsmålet, da databaser og SQL sikkert kan håndteres på flere måder afhængig af server og miljø. Og jeg kender heller ikke din tabels navn og dens feltnavne.
Efter udførsel af SQL med limit har du et resultset med 7 records, som jeg kalder RS
Teksten til f.eks. stort billede kan derefter udskrives direkte med:
response.write( RS("tekstFeltNavn") )
fordi resultsættet automatisk står med første record aktiv.
Når du er færdig med stort billede og tekst udfører du
RS.MoveNext
for at sætte næste record aktiv i resultsættet.
Så er du klar til at aflæse data til billede B1
response.write( RS("billedFeltNavn") )
Så med udførsel af RS.MoveNext efter hver billed/tekst afsnit, vil du komme til næste record. Og TABLE-layoutet sikrer at du kan nøjes med at bruge records i den rækkefølge de kommer ind.
Men vis os andre eksempler på at udføre SQL og hente felter fra andre af dine sider, hvis ovenstående ikke ligner det du plejer at gøre.
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.