Array_Problem noch immer nicht im Griff. :-(
Verona
- php
0 lulu
Ich bekomme es einfach nicht hin. Arrays sind bömsche Dörfer für mich. Dabei soll mein Array dynamisch sein - nicht bömisch. ;-)
Das Ganze Problem liegt im Grunde schon an meiner Art eine Seite zu erstellen. Ich habe mich für PHP entschieden und erstelle meine HTML-Seiten so, dass ich immer die gleiche Datei aufrufen - die index.php!
Wenn ich jetzt Inhalte ändern will, z.B. eine Seite eines Buches umblättern, dann gebe ich das dem Link in der Form mit:
<a href="index.php?buchseite=seite5"....
Mittels "switch" wechsel ich dann die entsprechenden Inhalte.
Das Problem liegt bei dieser Vorgehensweise bei CSS und den Pseudo-Elementen :active, :hover, udg. für Links. Wenn ich nämlich jedesmal dieselbe Seite neu aufrufe, dann ist das Pseudo-Element immer :link aber niemals :active. Bis hier hin klar?
Also habe ich mir gedacht zwei Klassen zu nehmen. Eine Klasse wenn der Link nicht :active ist und eine wenn er :active ist.
Das sieht dann so aus:
<a href="index.php?seite=5" class="<?php $class ?>"....
<a href="index.php?seite=6" class="<?php $class ?>"....
<a href="index.php?seite=7" class="<?php $class ?>"....
Wenn $buchseite=5 dann $class="on"
Jetzt sind aber alle Links auf "on". Ich sehe aber nicht den Sinn darin, dass so zu machen:
<a href="index.php?seite=5" class5="<?php $class ?>"....
<a href="index.php?seite=6" class6="<?php $class ?>"....
<a href="index.php?seite=7" class7="<?php $class ?>"....
Sind tausende Variablen. Das kann es ja wohl nicht sein, oder?! Außerdem müsste ich dann in der if- oder switch-Anweisung alle Variablen schreiben. Dann kann ich es ja auch gleich in HTML machen.
Was nun? Ich habe da an Arrays gedacht. Und zwar so:
<a href="index.php?seite=5" class[$seite]="<?php $class ?>"....
<a href="index.php?seite=6" class[$seite]="<?php $class ?>"....
<a href="index.php?seite=7" class[$seite]="<?php $class ?>"....
Jetzt sollte anhand der $seite ein array erstellt werden. Wenn z.B. die Variable $seite=5 ist, dann soll die Variable $class mit dem Index 5 den Wert "on" erhalten, und alle $class mit anderem Index den Wert "off".
$class array();
$class [0] = "off";
...
$class [5] = "on";
$class [6] = "off";
$class [7] = "off";
...
usw.
Ich hoffe das mir jemand aus diesem Problem heraushelfen kann.
V
Huhu Verona
wenn ich Dich richtig verstanden habe möchtest Du für den Link der aktuell gewählten Seite eine andere CSS-Klasse verwenden als für die anderen Links.
Jetzt sind aber alle Links auf "on". Ich sehe aber nicht den Sinn darin, dass so zu machen:
<a href="index.php?seite=5" class5="<?php $class ?>"....
<a href="index.php?seite=6" class6="<?php $class ?>"....
<a href="index.php?seite=7" class7="<?php $class ?>"....
mmmh, class5, class6 etc. sind wohl eher keine gültigen Attribute
Was nun? Ich habe da an Arrays gedacht. Und zwar so:
<a href="index.php?seite=5" class[$seite]="<?php $class ?>"....
<a href="index.php?seite=6" class[$seite]="<?php $class ?>"....
<a href="index.php?seite=7" class[$seite]="<?php $class ?>"....
class[1] etc. wohl auch nicht
so wie Deine Links untereinanderstehen schreit das geradezu nach einer Funktion die den A-Tag zusammenbaut.
z.B.
function BuildAnchorTag($lbl, $n)
{
$class = $_GET['seite'] == $n ? 'on':'off';
return sprintf( '<a href="index.php?seite=%d" class="%s">%s</a>', $n, $class, $lbl );
}
echo BuildAnchorTag('Eine weitere nützliche Seite',12);
Angenommen Du hast ein Array für Deine Seiten
$pages = array(1 => 'Seite1', 2 => 'Noch eine', 3 => 'eine weitere');
dann erzeugst du mit
foreach( $pages as $k => $v)
{
echo BuildAnchorTag($v, $k);
}
eine, wenn auch nicht besonders hübsche, Auflistung aller Links
so far...
Viele Grüße
lulu