Toon posts:

[ASP/HTML] loop splitsen in 2 rijen

Pagina: 1
Acties:

Verwijderd

Topicstarter
In het verleden vroeg ik alle gegevens van een database op en liet deze via een loop (movenext) in een tabel zien.
Bij voorbeeld op alfabetische volgorde
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<table>
  <tr>
    <td>Response.Write (recordset("data1"))</td>
  </tr>
 <<tr>
    <td>Response.Write (recordset("data2"))</td>
  </tr>
  <tr>
    <td>Response.Write (recordset("data3"))</td>
  </tr>
  <<tr>
    <td>Response.Write (recordset("data4"))</td>
  </tr>
</table>


Dit werkt over het algemeen goed, nu wil ik de gegevens uit de database splitsen in 2en. Omdat ik per recordset maar 2 stuks data opvraag en als ik het op de hierboven beschreven manier zou doen ik een te smalle tabel zou hebben.
Dus wil ik de tabel splitsen maar wel zodanig dat ik niet horizontaal de gegevens laat zien maar verticaal op alfabtische volgorde.
In code is het misschien duidelijker.
code:
1
2
3
4
5
6
7
8
9
10
<table>
  <tr>
    <td>Response.Write (recordset("data1"))</td>
    <td>Response.Write (recordset("data3"))</td>
  </tr>
  <tr>
    <td>Response.Write (recordset("data2"))</td>
    <td>Response.Write (recordset("data4"))</td>
  </tr>
</table>


Het is niet mogelijk om met het record Id te werken omdat je ook de mogelijkheid hebt om records te verwijderen.

Mijn gedachten zijn:
1 een teller laten meelopen met de loop en het totaal aantal records tellen en met deze 2 waarden kan je het volgens mij voor elkaar krijgen.
2 met een style sheet is het misschien mogelijk 2 tabellen naast elkaar te plaatsen.

Zijn dit 2 praktisch uitvoerbare ideeen of is er een derde (makkelijker) mogelijkheid.

[ Voor 14% gewijzigd door Verwijderd op 08-07-2006 22:55 ]


  • Compusmurf
  • Registratie: Oktober 2003
  • Laatst online: 16-08-2024
Ff een teller toevoegen en dan controleren of het even of oneven is of een bepaald niveau bereikt en dan een tr ofzo toevoegen.

http://Compusmurf.xs4all.nl


Verwijderd

Topicstarter
Compusmurf schreef op zaterdag 08 juli 2006 @ 22:55:
Ff een teller toevoegen en dan controleren of het even of oneven is of een bepaald niveau bereikt en dan een tr ofzo toevoegen.
Ja aan zoiets zat ik ook te denken maar een voorgevoel zegt me dat ik dat dit niet goed gaat komen.
Voor ik dit daadwerkelijk ga proberen wil ik jullie expertise weten

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22-01 23:51

NMe

Quia Ego Sic Dico.

Je moet niet naar voorgevoel luisteren, maar gewoon even de pseudocode uitwerken en een testplannetje schrijven. Een voorgevoel is niet meetbaar, een weloverwogen ontwerp wel. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Rowanov
  • Registratie: Februari 2004
  • Niet online

Rowanov

Kop eens wat anders...

In css gaat het wat moeilijker worden; er zijn wel stukken javascript beschikbaar die dit kunnen doen. Neem bijvoorbeeld het script van nexxenium. Als je 1 en 2 op een regel zou willen hebben, met daaronder 3 en 4, kan je dat oplossen door een lijst te nemen. Je maakt dan de ul zo breed dat er maar twee floatende li's in kunnen in de breedte.

  • Compusmurf
  • Registratie: Oktober 2003
  • Laatst online: 16-08-2024
ik zal het eventjes wat mooier uitleggen

onder elkaar zetten

-->database gegevens ophalen etc
-->teller var op 0 zetten
-->start loop
if teller var => 2 then
<tr>
end

teller ophogen met 1

--> einde loop

ik programmeer namelijk met php dus kan je niet de directe asp code geven want dat is eventjes te lang geleden, maar hier moet het wel mee lukken. Anders kun je mij altijd contacten

http://Compusmurf.xs4all.nl


Verwijderd

Topicstarter
Bedankt Compusurf en anderen voor je medewerking.

Ik denk dat ik niet helemaal duidelijk geweest met het omschrijven van het probleem.
Hierbij een extra uitleg:
Het is dus niet de bedoeling om de date op deze manier weer te geven:
Merk op dat de data op alfabet wordt opgehaald.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<table>
  <tr>
    <td>Amsterdam (01)</td>
    <td>Beverwijk(02)</td>
  </tr>
  <tr>
    <td>Coterbroek (03)</td>
    <td>Deventer(04)</td>
  </tr>
  <tr>
    <td>Edam (05)</td>
    <td>Franker (06)</td>
  </tr>
</table>


Op deze manier zou de manier van Compusmurf volstaan.
(Een dergelijke truuk gebruik ik ook om riijen om en om te kleuren in een table in loop <-offtopic)
Wat ik dus zoek is het volgende:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<table>
  <tr>
    <td>Amsterdam (01)</td>
    <td>Deventer(04)</td>
  </tr>
  <tr>
    <td>Beverwijk(02)</td>
    <td>Edam (05)</td>
  </tr>
  <tr>
    <td>Coterbroek (03)</td>
    <td>Franker (06)</td>
  </tr>
</table>


Tot slot mijn probeerseltje, hiermee probeer (!!) ik dus in 1 tabel 2 tabellen te zetten met in iedere tabele een eigen loopje.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<table border="1" align="center" cellpadding="2" cellspacing="2">
<%

'*****************************************************
'Laat een tellertje meelopen in de loop 1
'*****************************************************

Do Until Round(helftvanrecords) = i

i = i + 1
%>
  <tr>
    <td align = "right"><table width = 40% border = "1">
                          <tr>
                            <td><a href="<%Response.Write RsAdres("adres")%>" target=_self>[img]"../images/camera.gif"[/img]</a></td>
                        <td><%Response.Write RsAdres("lokatie")%></td>
                          </tr>
                        </table>
    </td>
<%RsAdres.MoveNext
Loop %> 


<%
'*****************************************************
'Loop 2
'*****************************************************
%>

<% Do Until RsAdres.EOF %>
   <td><table width = 40% border = "1">
          <tr>
            <td><a href="<%Response.Write RsAdres("adres")%>" target=_self>[img]"../images/camera.gif"[/img]</a></td>
        <td><%Response.Write RsAdres("lokatie")%></td>
          </tr>
        </table>
    </td>
<%RsAdres.MoveNext %>
  </tr>
<% Loop %> 

</table>

  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
Je kunt natuurlijk ook je recordset van het juiste type laten zijn en er in de door jou gestelde volgorde doorheen lopen. Door RecordSet.Open te gebruiken kun je aangeven welk cursor type je wil gebruiken. Door dit cursortype op static te zetten (Zie documentatie van MS) kun je in alle richtingen door je recordset heenspringen. Je kunt bijvoorbeeld rs.Move 5 of rs.Move -5 doen om vijf stappen vooruit of achteruit door de recordset heen te springen. Bovendien kun je ook nog met rs.AbsolutePosition = X direct naar positie X in de set springen.

Je kunt dus met twee tellers werken (bijvoorbeeld), 1tje die begint op positie 1 en eentje die begint op aantal records gedeeld door 2 (afronden naar boven :) )

  • Krooswijk.com
  • Registratie: Mei 2000
  • Laatst online: 17-08-2024
kun je niet zoiets doen:
je geeft het geheel weer in een tabel met 1 rij en 2 kolommen

dan in de eerste kolom maak je een subtabel waarin je loopt van 1 tot size/2
en dan in de tweede kolom een subtabel waarin je loopt van size/2 + 1 tot size

wel effe al breedtes e.d. goed regelen dat alles er netjes komt uit te zien

[ Voor 1% gewijzigd door Krooswijk.com op 11-07-2006 19:41 . Reden: was al genoemd ]


  • Compusmurf
  • Registratie: Oktober 2003
  • Laatst online: 16-08-2024
Zou dit niet gewoon kunnen met een simpel rekensommetje. Eventjes wat duidelijker:

Eerst kijken hoeveel records je hebt, deze delen door 2. Daarna kun je dan gewoon uit de 1e array pakken als je de (01) wilt en anders uit de 2e array (02).

Lijkt me dat dit de oplossing biedt want het blijven gewoon opeenvolgende records

http://Compusmurf.xs4all.nl


Verwijderd

Topicstarter
De oplossing is vaak makkelijker als je denkt.

Op deze manier is het me gelukt:
- met een count query het aantal records opvragen.
- dit aantal delen door 2
- met de round functie een geheel getal verkrijgen.
- een tabel maken een in de eerste TD een volgende tabel de 1e loop loslaten, deze loop tot de helft laten lopen.
- in de volgende TD de 2e loop tot EOF laten lopen.

De code ziet er als volgt uit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
'*****************************************************
'Bepaal hoeveel records er zijn.
'*****************************************************

CountQuery = "SELECT COUNT(adres) AS NumberOfCounts FROM tbl"
Set RsNumberOfCounts = Conn.Execute(CountQuery)
  
totaalaantalrecords = RsNumberOfCounts("NumberOfCounts")
helftvanrecords = totaalaantalrecords/2
 

'*****************************************************
'Zet de gegevens neer in de tabel
'Laat een tellertje meelopen in de loop 1
'*****************************************************
%>
<table border="1" align="center" cellpadding="2" cellspacing="2" bordercolor="#000000">
  <tr>
    <td colspan="2"><h2><b>WebPortal NS Fiets</b></h2></td>
  </tr>
  <tr valign="top">
    <td align = "left"><table width = 40% border = "0">
                       <%                          
                       Do Until Round(helftvanrecords) = i
                       i = i + 1
                       %>
                         <tr>
                           <td><a href="<%Response.Write RsAdres("adres")%>" target=_self>[img]"../images/camera.gif"[/img]</a></td>
                           <td><%Response.Write RsAdres("lokatie")%></td>
                         </tr>
                         <%RsAdres.MoveNext
                         Loop %> 
                       </table>
    </td>
<%
'*****************************************************
'Loop 2
'*****************************************************
%>
   <td><table width = 40% border = "0">
          <% Do Until RsAdres.EOF %>
          <tr>
            <td><a href="<%Response.Write RsAdres("adres")%>" target=_self>[img]"../images/camera.gif"[/img]</a></td>
            <td><%Response.Write RsAdres("lokatie")%></td>
          </tr>
          <%RsAdres.MoveNext %>
          <% Loop %> 
        </tr>
        </table>
    </td>
</table>
Pagina: 1