Toon posts:

[PHP/MYSQL] query resultaat opsplitsen in 2 html tabellen

Pagina: 1
Acties:
  • 86 views sinds 30-01-2008

Verwijderd

Topicstarter
Zoals de titel al zegt ;)

Nu is mijn vraag of dat dit mogelijk is :?

Ik ben al een tijdje aan het klungelen oevr hoe en wat 8)7

De code:

Ik heb mijn site opgesplitst in 2 tabellen.Nu heb ik er ook een alfabet aangekoppelt, zoals je ziet dus als je op de a klikt gaat ie naar a.Dit is dynamisch opgebouwd als er in de database geen L staat maakt hij in de html ook geen L ankerpunt aan.
Nu zit ik met het volgende ik heb nu een linker en rechter tabel, met 1 query resultaat.
Nu wil ik de linker en rechter tabel vullen op alfabetische wijze, en dan op deze manier.
Eerst in de linker tabel een url dan in de rechter tabel dan weer in de linker en danw eer 1 in de rechter etc etc tot dat de query resultaat leeg is.
Nu is alleen de vraag hoe |:( :X
PHP:
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
<?
            
$letter = array(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z);


for ($i=0;$i<26;$i++)
{
    
    $SQLSelectItems = "SELECT * FROM arti WHERE linknaam LIKE '$letter[$i]%' and test='Artiesten' Order by linknaam";
    $SQLResultaat = mysql_query($SQLSelectItems) or die(mysql_error());
 
    
if (mysql_num_rows($SQLResultaat) < 1)  { echo"";}else{
    echo "\n\r\t<br>\r\n\t";
    echo "<a name=" . $letter[$i] . "></a>\r\n\t";
   
 
    while($myrow = mysql_fetch_assoc($SQLResultaat))
    {

         $url = $myrow['url'];
         $beschrijf = $myrow['beschrijf'];
         $linknaam = $myrow['linknaam'];
         
         
         echo "\r\n\t<a href=" . $url . " title=" . $beschrijf . ">" . $linknaam . "</a><br>\n\t";
         
 
    }
 }
}//einde for-loopje

?>

[ Voor 9% gewijzigd door gorgi_19 op 03-05-2005 10:11 ]


  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 23:28

mulder

ik spuug op het trottoir

Een HTML tabel maak je met <table>, <tr> en <td>

Ow een kijk eens naar chr, hoef je die array ook niet aan te maken

oogjes open, snaveltjes dicht


Verwijderd

Topicstarter
chr, hoef je die array ook niet aan te maken
Dit snap ik ff niet, wat je bedoeld?


Maar ik weet wel hoe ik een tabel maak.
Maar hij moet van links naar rechts werken en dan weer onder de linker een nieuwe.
Dus elke tabel een breedte van 50%, maar als je dat achter elkaar zet gaat hij in breedte werken.
En elke keer een tabel van 50% langs de andere :/

Verwijderd

a b
c d
e f
etc....

bedoel je zo?

edit
in dat geval moet het ongeveer zo (ik dan ook maar even vieze code :P)
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
begin tabel
for($i=0; $i<mysql_num_rows(data); $i+=2){
echo <tr>
lees result1 uit
echo <td>result1</td>
if(lees result2 uit) //dit alles ivm oneven aantal mysql_num_rows
echo <td>result2</td>
else
echo <td>&nbsp;</td>
echo </tr>
}
einde tabel

[ Voor 78% gewijzigd door Verwijderd op 03-05-2005 10:25 ]


  • BramT
  • Registratie: Oktober 2001
  • Laatst online: 18:14

BramT

Rule #1

even pseudocode:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
$counter=1;

echo "<table><tr>"

begin for loop

echo "<td>[je data]</td>"
if($counter==2) { echo "</tr><tr>"; $counter=1; }
else $counter ++

end for loop

echo "</tr></table>";


Dit is behoorlijk vies... maar zoiets ;) Als je ooit naar 3 kolommen ofzo wilt kan je in de if-statement $counter==3 zetten e.d...

[ Voor 56% gewijzigd door BramT op 03-05-2005 10:20 ]

You are the all-dancing, all-singing crap of the world - Jack


Verwijderd

Topicstarter
Ik bedoel eigenlijk zo.

Je hebt bijvoorbeeld 5 namen met A en 5 namen met B dan zou ik het zo willen hebben.

A | A
A | A
A |
- | -
B | B
B | B
B | -


Het is een beetje raar maar dan zijn de tabel kolommen wel gelijk opgedeeld mits je een oneven aantal hebt natuurlijk.

[ Voor 28% gewijzigd door Verwijderd op 03-05-2005 10:23 ]


Verwijderd

Ik weet niet hoeveel er in je db zit, dus vraag ik het maar even; haal je de data per beginletter uit de database of alles in een keer? Als je het per letter doet kun je iig de 'code' (:P) die ik eerder gaf gebruiken (alleen moet je begin tabel en einde tabel dan op een andere plek hebben).

Verwijderd

Topicstarter
Hij haalt ze per letterer uit in een loop.
Dus eerst letter a dan de links erbij dan letter b met linkserbij.
Hij gaat net zolang door totdat er niks meer in de database zit.

Maar wat ik niet snap is ik heb nu 2 kolommen van tabellen, maar met jou code behoud ik dan ook 2 kolommen??

Verwijderd

Hij haalt ze per letterer uit in een loop.
Dus eerst letter a dan de links erbij dan letter b met linkserbij.
Hij gaat net zolang door totdat er niks meer in de database zit.
Dus je haalt de data in 1 keer eruit? Dan moet je je query ietsje aanpassen met een count() erbij om te weten hoeveel resultaten er voor 1 letter zijn (loop moet weten hoeveel rijen er zijn voor die letter en of het een even of oneven aantal is).
Maar wat ik niet snap is ik heb nu 2 kolommen van tabellen, maar met jou code behoud ik dan ook 2 kolommen??
Eerlijk gezegd begrijp ik niet precies wat je wilt; het is toch de bedoeling een standaard tabel te maken met 2 kolommen?

Verwijderd

Topicstarter
Dt word dus nog erg ingewikkeld voor een php n00b 8)7

Ik snap er ff niks meer van :?
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<? 
begin tabel 
for($i=0; $i<mysql_num_rows(data); $i+=2){ 
echo <tr> 
lees result1 uit 
echo <td>result1</td> 
if(lees result2 uit) //dit alles ivm oneven aantal mysql_num_rows 
echo <td>result2</td> 
else 
echo <td> </td> 
echo </tr> 
} 
einde tabel 
?>


Je doet eerst de query dat ik alles eigenlijk ophaal op alfabetische volgorde.
Maar wat is resultaat 2 dan??
Is dat de query van count of??
Modbreak:Lees even de FAQ door over de code-tags :) Ik blijf ze niet toevoegen voor je :)

[ Voor 100% gewijzigd door gorgi_19 op 03-05-2005 11:02 ]


Verwijderd

Topicstarter
Ik blijf ze niet toevoegen voor je
Sorry :+ :Y)

Verwijderd

Verwijderd schreef op dinsdag 03 mei 2005 @ 10:50:
Dt word dus nog erg ingewikkeld voor een php n00b 8)7

Ik snap er ff niks meer van :?
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<? 
begin tabel 
for($i=0; $i<mysql_num_rows(data); $i+=2){ 
echo <tr> 
lees result1 uit 
echo <td>result1</td> 
if(lees result2 uit) //dit alles ivm oneven aantal mysql_num_rows 
echo <td>result2</td> 
else 
echo <td>&nbsp;</td> 
echo </tr> 
} 
einde tabel 
?>


Je doet eerst de query dat ik alles eigenlijk ophaal op alfabetische volgorde.
Maar wat is resultaat 2 dan??
Is dat de query van count of??
Het punt is dat je in 1 rij van de tabel 2 kolommen (=2 resultaten=2 rows uit query) gaat afdrukken. Je moet dus 2 keer een row uit de query-resultaten lezen binnen de loop. Eerst lees je dus in voor de linker kolom (die heb ik resutl1 genoemd) en vervolgens lees je voor de rechter kolom uit de query-resultaten (die ik result2 heb genoemd).

Verwijderd

Verwijderd schreef op dinsdag 03 mei 2005 @ 10:22:
Ik bedoel eigenlijk zo.

Je hebt bijvoorbeeld 5 namen met A en 5 namen met B dan zou ik het zo willen hebben.

A | A
A | A
A |
- | -
B | B
B | B
B | -


Het is een beetje raar maar dan zijn de tabel kolommen wel gelijk opgedeeld mits je een oneven aantal hebt natuurlijk.
Met de volgende code krijg je je bovenstaande voorbeeld.
Het is aan jou om dat te gebruiken in combinatie met één MySQL resultaatset. Dit is wel degelijk mogelijk, dus succes!
Speel even met de array `$values` en je ziet de mogelijkheden van dit scriptje.

PHP:
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<style>
td { background-color: #c1c1c1; width: 30px; height: 30px; text-align: center; font-family: verdana; font-size: 11px; }
</style>

<?php

    // init
    $values = array('a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'c', 'c', 'd', 'd', 'd', 'e');

    // start table
    echo '<table>';
    echo '<tr>';

    // loop values
    $count_serie = 1;
    $current_cell = 1;
    foreach($values AS $value)
    {
        
        // show extra empty cell?
        if(isset($old_value) && $old_value != $value && $count_serie % 2 == 0)
        {
                        
            // show empty cell
            echo '<td>...</td>';

            // increase current cell value
            $current_cell++;

            // reset count serie
            $count_serie = 1;

            // new row?
            if($current_cell % 2 != 0) echo '</tr><tr>';
        
        }

        // spacer? ( = empty row )
        if(isset($old_value) && $old_value != $value)
        {

            echo '<td>..</td><td>..</td></tr><tr>';

        }
        
        // show cell
        echo '<td><b>' . $value . '</b></td>';

        // new row?
        if($current_cell % 2 == 0) echo '</tr><tr>';        
        
        // store current value for next loop
        $old_value = $value;

        // increase some values
        $current_cell++;
        $count_serie++;

    }

    // extra cell?
    if($current_cell % 2 == 0) echo '<td>,,,</td>';

    // end table
    echo '</tr>';
    echo '</table>';

?>


:Y)

  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 22:11
Verwijderd schreef op dinsdag 03 mei 2005 @ 11:11:
[...]
Het is aan jou om dat te gebruiken in combinatie met één MySQL resultaatset. Dit is wel degelijk mogelijk, dus succes!
Het is absoluut mogelijk met 1 resultaatset. Onderstaande is de code uit de TS alleen met 25 queries minder en geen dure LIKE. Moet je zelf maar combineren met table-code...
PHP:
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
$SQLSelectItems = "SELECT 
                    lower(substr(linknaam, 0, 1)) as firstletter, url, beschrijf, linknaam 
                    FROM arti WHERE test='Artiesten' ORDER BY linknaam ASC";

$SQLResultaat = mysql_query($SQLSelectItems) or die(mysql_error());

if (mysql_num_rows($SQLResultaat) > 0)  {
    while ($myrow = mysql_fetch_assoc($SQLResultaat)) {

        //check of nieuwe groep nodig is
        if (!isset($group) || $group != $myrow['firstletter']) {
            
            //onthouden voor volgende iteratie
            $group = $myrow['firstletter'];

            //echo anchor
            echo "\n\r\t<br>\r\n\t"
                .'<a name="' . $group . '"></a>' ."\r\n\t";
        }
        
        //echo link
        $url = $myrow['url'];
        $beschrijf = $myrow['beschrijf'];
        $linknaam = $myrow['linknaam'];
        
        echo "\r\n\t<a href=" . $url . " title=" . $beschrijf . ">" . $linknaam . "</a><br>\n\t";
    }
}

[ Voor 12% gewijzigd door T-MOB op 03-05-2005 11:36 . Reden: $row / $result / $myrow ... tis maar wat je gewend bent, haha ]

Regeren is vooruitschuiven


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Wat doen jullie allemaal moeilijk? Wat is er mis met divs? :o

Gewoon één div maken per letter, eventueel met een tabel daarin. Geen kopzorgen meer over layout. :Y)

'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.


Verwijderd

-NMe- schreef op dinsdag 03 mei 2005 @ 13:39:
Wat doen jullie allemaal moeilijk? Wat is er mis met divs? :o

Gewoon één div maken per letter, eventueel met een tabel daarin. Geen kopzorgen meer over layout. :Y)
offtopic:
Helemaal met u eens, echter TS vroeg in eerste instantie of dit opgelost kon worden met een tabel. En om op jouw reactie te reageren, mijn websites en dergelijke bestaan al geruime tijd uit louter floating div's. Den toekomst in mijn - en vele anderen hun - opinie ;)

Verwijderd

Topicstarter
Ik snap het nog steeds niet 8)7 :?
Ik snap het princiepe wel en dat is exact hoe ik het wil, maar hoe het nu zit met resultaat 1 en 2 8)7
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<? 
begin tabel 
for($i=0; $i<mysql_num_rows(data); $i+=2){ 
echo <tr> 
lees result1 uit 
echo <td>result1</td> 
if(lees result2 uit) //dit alles ivm oneven aantal mysql_num_rows 
echo <td>result2</td> 
else 
echo <td>&nbsp;</td> 
echo </tr> 
} 
einde tabel 
?>


Momenteel is dit mijn code
PHP:
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
<?
            
$letter = array(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z);          
//array met alle letters dus $letters[0] = a en $letters[1] = b etc.

 
for ($i=0;$i<26;$i++)//om het 26 keer uit te voeren
{
    
    $SQLSelectItems = "SELECT * FROM arti WHERE linknaam LIKE '$letter[$i]%' and test='Festivals' Order by linknaam";
    $SQLResultaat = mysql_query($SQLSelectItems) or die(mysql_error());
    
    if (mysql_num_rows($SQLResultaat) < 1)  { echo"";}else{
    echo "\n\r\t<br>\r\n\t";
    echo "<a name=" . $letter[$i] . "></a>\r\n\t";
   
 
    while($myrow = mysql_fetch_assoc($SQLResultaat))
    {

         $url = $myrow['url'];
         $beschrijf = $myrow['beschrijf'];
         $linknaam = $myrow['linknaam'];
         
         
         echo "\r\n\t<a href=" . $url . " title=" . $beschrijf . ">" . $linknaam . "</a><br>\n\t";
         
 
    }
 }
}

?>


Nu snap ik niet wat ik bij resultaat 1 en 2 moet zetten :?
Is het de bedoeling dat je 2x die query uitvoert :?
En daarna dit>>

PHP:
1
2
3
4
5
6
7
8
<?
$url = $myrow['url'];
         $beschrijf = $myrow['beschrijf'];
         $linknaam = $myrow['linknaam'];
         
         
         echo "\r\n\t<a href=" . $url . " title=" . $beschrijf . ">" . $linknaam . "</a><br>\n\t";
?>

[ Voor 17% gewijzigd door Verwijderd op 09-05-2005 09:54 ]


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Ehm...heb je überhaupt een idee wat je aan het doen bent? Waarom voer je 26 keer die query uit? Je hebt hier geen like nodig, je haalt gewoon alle records op en kijkt in de resultset per record naar de eerste letter (hint: substr).

Verder: waarom doe je voor regeleindes de ene keer \n\r, de volgende keer \r\n en weer een andere keer \n? Voor Windows is een regeleinde \r\n, voor Linux \n.

En waarom doe je zo vaag op regel 13?
PHP:
13
if (mysql_num_rows($SQLResultaat) < 1)  { echo"";}else{

Je weet dat je boolean expressies kan omdraaien? Niet elke if hoeft een else te hebben hoor:
PHP:
13
if (mysql_num_rows($SQLResultaat) >= 1)  {


Mag ik je adviseren wat dieper in de materie te duiken? :)

'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.


Verwijderd

Topicstarter
-NMe- schreef op maandag 09 mei 2005 @ 11:09:
Ehm...heb je überhaupt een idee wat je aan het doen bent? Waarom voer je 26 keer die query uit? Je hebt hier geen like nodig, je haalt gewoon alle records op en kijkt in de resultset per record naar de eerste letter (hint: substr).

Ik wil het gewoon werkend hebben en hoe maakt me niet veel uit.
Waarom ik dat doe is omdat ik een akerpunt nodig heb boven de link.


Verder: waarom doe je voor regeleindes de ene keer \n\r, de volgende keer \r\n en weer een andere keer \n? Voor Windows is een regeleinde \r\n, voor Linux \n.

Als je bron bekijkt is het goed geordent wel licht beter voor google.

En waarom doe je zo vaag op regel 13?
PHP:
13
if (mysql_num_rows($SQLResultaat) < 1)  { echo"";}else{

Je weet dat je boolean expressies kan omdraaien? Niet elke if hoeft een else te hebben hoor:
PHP:
13
if (mysql_num_rows($SQLResultaat) >= 1)  {


Mag ik je adviseren wat dieper in de materie te duiken? :)
Vaag?? Het werkt toch.Kleiner als 1 is altijd niks dus.


Maar dan snap ik nog dat stukje code niet 8)7

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Verwijderd schreef op maandag 09 mei 2005 @ 12:52:
Ik wil het gewoon werkend hebben en hoe maakt me niet veel uit.
Waarom ik dat doe is omdat ik een akerpunt nodig heb boven de link.
Dat kan ook gewoon met één query. Ik gaf niet voor niks de tip naar substr. ;)
Als je bron bekijkt is het goed geordent
Euh, ja, omdat \n ook gepikt wordt als regeleinde door de editor waar je mee werkt. Maar het feit dat je 3 verschillende soorten regeleinde's gebruikt waarvan één zelfs nooit gebruikt wordt, geeft mij het idee dat je niet weet waar je mee bezig bent. :)
wel licht beter voor google.
:?
Vaag?? Het werkt toch.
"Het werkt toch?" is nooit een argument. Netjes coden zorgt dat je code begrijpelijk is en beter onderhoudbaar. Waarom zou je een if opnemen waar je niets in uitvoert? :?
Kleiner als 1 is altijd niks dus.
Ja. Maar waarom zou je wat doen als je er niks mee hoeft te doen? :?
Maar dan snap ik nog dat stukje code niet 8)7
Dan ben ik bang dat je wat basiskennis mist, en daarom blijft de tip uit mijn vorige post gewoon staan: verdiep je eens wat meer in waar je mee bezig bent. Lees een goed boek over PHP ofzo. :)

'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.


  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 22:11
-NMe- heeft helemaal gelijk. De code om het met één query te doen heb ik je notabene al bijna gegeven. Van daar uit is het een zeer kleine stap om het precies te krijgen zoals je het hebben wilt. Omdat het echt zo simpel is hieronder de code. Daarmee kun je het ook in divs gieten (gewoon de <table> en </table> vervangen door <div> en </div> en de tr's en td's eruit slopen). Als je de mogelijke bugjes uit de volgende code haalt ben je er wel, er staat zoveel comment in dat je het zou moeten kunnen volgen. Succes!
PHP:
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
52
<?
$SQLSelectItems = "SELECT 
                    lower(substring(linknaam, 1, 1)) as firstletter, url, beschrijf, linknaam 
                    FROM arti WHERE test='Artiesten' ORDER BY linknaam ASC";

$SQLResultaat = mysql_query($SQLSelectItems) or die(mysql_error());

if (mysql_num_rows($SQLResultaat) > 0)  {
    while ($myrow = mysql_fetch_assoc($SQLResultaat)) {

        //check of nieuwe groep nodig is
        if (!isset($group) || $group != $myrow['firstletter']) {

            //als niet eerste keer, sluit tabel af
            if (isset($group)) {

                //lege cel bij oneven aantal cellen
                if (!$odd) { echo '<td>&nbsp;'; }

                echo '</table>' ."\r\n";
            }
            
            //onthouden voor volgende iteratie
            $group = $myrow['firstletter'];

            //niewe tabel
            //anchor is niet nodig omdat we een id gebruiken
            //dat doet hetzelfde
            echo '<table class="linkjes" id="' .$group .'">' ."\r\n";

            //reset naast elkaar boolean
            $odd = true;
        }
        
        //echo link
        $url = $myrow['url'];
        $beschrijf = $myrow['beschrijf'];
        $linknaam = $myrow['linknaam'];

        if ($odd) { echo '<tr>'; }

        echo '<td><a href="' .$url . '" title="' .$beschrijf . '">' .$linknaam .'</a>' ."\r\n";

        //switch naast elkaar boolean
        $odd = (!$odd);
    }

    //laatste tabel mag ook afgesloten
        if (!$odd) { echo '<td>&nbsp;'; } 
    echo '</table>' ."\r\n";
}
?>

[ Voor 13% gewijzigd door T-MOB op 09-05-2005 13:30 ]

Regeren is vooruitschuiven


Verwijderd

Topicstarter
Het is gelukt, al heb ik er wel een tijdje over gedaan om het te snappen :+

Zit alleen met een raar probleem in de browser firefox werkt mijn alfabet perfect en in internet explorer niet.
Het werkt voor geen meter als je de letter s of w of t aan klikt stopt hij op het midden van de pagina bij de letter p.

Bekijk maar is het verschil.

http://members.lycos.nl/rk1rsl/website%20definitief/klap.php

Nu weet ik niet hoe en wat ondersteunt internet explorer 6 iets niet wat firefox wel doet?
Meestal zijn sites beter in internet explorer te kijken dan in firefiox en nu is het andersom :?

Ik link van het alfabet naar de tabel id.

[ Voor 4% gewijzigd door Verwijderd op 11-05-2005 11:09 ]


  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 22:11
Verwijderd schreef op woensdag 11 mei 2005 @ 11:09:
Het is gelukt, al heb ik er wel een tijdje over gedaan om het te snappen :+

Zit alleen met een raar probleem in de browser firefox werkt mijn alfabet perfect en in internet explorer niet.
Het werkt voor geen meter als je de letter s of w of t aan klikt stopt hij op het midden van de pagina bij de letter p.
Het enige verschil dat ik opmerk (IE6) is dat de imagemap soms in IE niet aan te klikken is. Als je in de url gewoon zelf de letter achter het hekje verandert werkt het in IE hetzelfde als in FF... Dat ie bij het aanklikken van een letter die onderaan de pagina staat niet helemaal naar onder gaat is verder logisch omdat er niet genoeg content onder staat om helemaal af te zakken. Dat doet FF precies hetzelfde...

Regeren is vooruitschuiven


Verwijderd

Topicstarter
Maar bij firefox ben ik meteen bij die link en bij internet explorer 6 stopt hij bij letter p en dan moet ik naar beneden scrollen.Ik wilde het op de manier zoals het in firefox zit hebben.

Dat is toch ook mogelijk?
Of moet ik nu een andere manier gebruiken?

  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 22:11
Dat is gewoon een nuttige implementatie van de methode in Firefox. Wil je dat in IE ook dan zul je dat zelf moeten versieren met javascript. Zoiets:
code:
1
<a href="page#a" onclick="document.getElementById('a').firstChild.firstChild.firstChild.focus()">

3x firstChild, de eerste is de eerste <tr> in de tabel met id "a", de tweede is de eerste <td> binnen die <tr> en de derde brengt je bij de <a> in die <td>.

Regeren is vooruitschuiven


Verwijderd

Topicstarter
Ik snap het niet waarom hij zo raar doet.
Je klikt de W aan en je ziet hem naar de W gaan en meteen erna gaat ie naar de S ??

http://members.lycos.nl/r...te%20definitief/klap5.php

Ik heb het javascript alleen bij de letter w toegepast.

Is er geen andere oplossing??

  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 22:11
Volgens mij ligt eea ook aan al die geweldige banners van Lycos. Zolang die geweldige "GSM.nl" banner er voor staat kan ik in IE sowieso nergens op klikken.

Maargoed, het probleem is dus dat IE sowieso de pagina herlaadt als je op zo'n link klikt. Daarom werkt het JS ook niet. Nog een andere reden is de enorme hoeveelheid loze tabellen die binnen een <table id="a-z"> staat. 7 tabellen om 1 linkje op de goede plek te krijgen is way overkill.
Om de focus toch op het linkje te krijgen zou je met php het URL kunnen chekken of er gelinkt wordt naar een letter. Vervolgend een javascriptje maken dat onload je DOM afloopt naar de juiste link. Maar waarschijnlijk werkt dat ook niet dankzij de scripts van Lycos die gelijk alle aandacht vestigen op hun adverteerders...

Regeren is vooruitschuiven


Verwijderd

Topicstarter
Maargoed, het probleem is dus dat IE sowieso de pagina herlaadt als je op zo'n link klikt. Daarom werkt het JS ook niet. Nog een andere reden is de enorme hoeveelheid loze tabellen die binnen een <table id="a-z"> staat. 7 tabellen om 1 linkje op de goede plek te krijgen is way overkill.
Om de focus toch op het linkje te krijgen zou je met php het URL kunnen chekken of er gelinkt wordt naar een letter. Vervolgend een javascriptje maken dat onload je DOM afloopt naar de juiste link. Maar waarschijnlijk werkt dat ook niet dankzij de scripts van Lycos die gelijk alle aandacht vestigen op hun adverteerders...
Hij staat momenteel tijdelijk op lycos.
Als de site af is word ie op een php server gezet.

Maar ik denk wel dat je gelijk hebt dat het aan lycos banners ligt.Bij firefox heb je geen probleem met die banner van gsm.nl en vakantie banners e.d. van lycos.

Dan is dit javascript ook niet nodig en werkt hij wel goed :) :*)

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Ok, genoeg geweest. In essentie ging het al niet al te best met dit topic. Ik kreeg niet het idee dat je (gharay29) echt wist waar je mee bezig bent. Zelfs terwijl er praktisch complete code gepost werd, heb je dat niet tot amper verwerkt in je eigen code. Al met al wil je een beetje veel aan het handje gehouden worden, en dat is niet de bedoeling hier. :)

Nu gaat het helemaal de foute kant op. Je kaapt je eigen topic voor een geheel nieuw probleem, dat verder ook niets met serverside scripting te maken heeft. Clientside scripting hoort bij de buren van Webdesign & Graphics, maar omdat ze daar ook niet al te blij zullen worden van de manier waarop je je spul positioneert (tip: minder tabellen geven ook al het gewenste resultaat, en géén tabellen maar divs werkt nog veel gemakkelijker) en omdat het gewoon een probleem is dat inherent is aan de browser die je gebruikt, doe ik je topic alsnog op slot. :)

'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.

Pagina: 1

Dit topic is gesloten.