Dynamischer Verweis innerhalb der Seite
MisterIKS
- php
0 Felix Riesterer
0 Tom0 MisterIKS1 Der Martin
Hallo liebes Forum,
ich arbeite gerade an meiner neuen Homepage und bin bisher auch gut vorrangekommen. Jetzt stehe ich allerdings vor einem Problem:
Ich benutze eine Tabelle mit 3 Spalten und mehreren Reihen. Per PHP fülle ich die Tabelle mit Inhalt aus der Datenbank. Nun möchte ich erreichen, dass die Tabellenzellen Links enthalten, die wiederum auf die gleiche Seite aber mit anderem Inhalt verweisen. Dabei soll nach dem neu laden wieder an die Stelle gescrollt werden, wie die Zeile beginnt, in der vorher geklickt wurde.
Ich habe dazu eine Variable $rowcount benutzt, die mir sagt in welche Reihe geklickt wurde. Dies hänge ich mit #<?=$rowcount?> an den Link an. Um die ganze Tabellenzeile herum habe ich ein <a name="<?=$rowcount?>"> </a> eingefügt. Obwohl der URL das richtige enthält springt meine Seite immer nur zur ersten Tabellenzeile. Habe ich irgend einen Denkfehler gemacht? Wie könnte ich das lösen?
Vielen Dank
Philipp
Lieber MisterIKS,
hättest Du mal einen Link zu einer Testseite?
Liebe Grüße,
Felix Riesterer.
Hello Philipp,
mache es anders herum:
Hänge immer einen Verweis '#go' oder so ähnlich an die URL.
Und wenn Du nun klickst auf einen Link, dann baust Du genau in der Zeile das Gegenstück (den Anker) dazu in die Response ein. Ist kein Anker mit dem Namen im Dokument, dann würde der Viewport sowieso am oberen Ende des Dokumentes beginnen.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Ich habe schon öfters mir Ankern gearbeitet, ich kann mir vorstellen, dass es vielleicht daran liegt, dass ich die Anker dynamisch mit php erzeuge.
Ich benutze die Seite in XAMPP, ich geb euch einfach nur den Code:
<table>
<?php
$abfragen = mysql_query("SELECT * FROM mph_portfolio ORDER BY id DESC");
$counter = 0;
$rowcount = 0;
while($row = mysql_fetch_object($abfragen))
{
$counter ++;
if($counter == 1) {
$rowcount ++;
echo("<a name=\"".$rowcount."\"><tr style='vertical-align:top;'>");
}
?>
<td>
<?php
if($_GET["id"] == $row->id)
{ ?>
<div style="width:285px;">
<div id="pf_oben"><img src="<?php echo($row->image); ?>" /><a href="<?php echo($row->link); ?>" target="_blank" id="headline" style="margin-top:10px; width:243px; text-align:center;"><?php echo($row->name); ?></a></div>
<div id="pf_mitte"><?php echo($row->text); ?></div>
<div id="pf_unten"></div>
</div>
<?php } else { ?>
<div style="width:285px; height:285px;">
<div id="pf_oben"><img src="<?php echo($row->image); ?>" /><a href="<?php echo($row->link); ?>" target="_blank" id="headline" style="margin-top:10px; width:243px; text-align:center;"><?php echo($row->name); ?></a></div>
<div id="pf_links"><?php echo($row->preview); ?></div>
<a href="index.php?page=portfolio&id=<?php echo($row->id); ?>#<?php echo($rowcount); ?>" id="pf_button"></a>
</div>
<?php } ?>
</td>
<?php
if($counter == 3) {
echo("</tr></a>");
$counter = 0;
}
}
?>
</table>
Hallo,
Um die ganze Tabellenzeile herum habe ich ein <a name="<?=$rowcount?>"> </a> eingefügt.
das geht nicht - es ist ungültiges HTML, was die Browser dann nach eigenem Ermessen uminterpretieren oder ignorieren dürfen. Wenn ich dich richtig verstehe, hast du dann
<table>
<a>
<tr>
<td/>
</tr>
</a>
</table>
Ein a-Element kann niemals direktes Kind von table sein, und a darf niemals ein tr enthalten.
Wozu hier überhaupt ein a-Element? Als Sprungziel (Anker) gib doch einfach dem tr-Element eine ID, die du dann anspringst. Anker mit <a name=""></a> gehören in die Bronzezeit von HTML.
Ciao,
Martin
Vielen Dank, ich wusste garnicht, dass man per id an jedes beliebige Element springen kann, hab id bisher nur für css benutzt.
Vielen Dank, ich wusste garnicht, dass man per id an jedes beliebige Element springen kann, hab id bisher nur für css benutzt.
Ich wußte das auch nicht.
Wie macht man das denn genau?
Hi,
Vielen Dank, ich wusste garnicht, dass man per id an jedes beliebige Element springen kann, hab id bisher nur für css benutzt.
Ich wußte das auch nicht.
Wie macht man das denn genau?
MfG ChrisB