Home | Registrieren | Einloggen | Suchen | Aktuelles


Forum » PHP & MySQL » repeat/while Schleifenfrage Antworten
repeat/while Schleifenfrage

silvio
Pixelschubser


Beiträge: 7


Hallo,

ich habe eine Navigation gebaut und möchte den Link der aktuellen Seite per CSS kennzeichnen. Ich realisiere das mit einer ziemlich langen if-Anweisung
Da ich absoluter PHP-Anfänger bin, weiß ich nicht wie ich das vereinfachen kann.
Vielleicht hat jemand eine Idee?

Würde mich sehr freuen.

Silvio

Hier der Code (nur die Navigation)
____________________________________________________________________________
<?php
$link1 = "<a href=\"index.php?page=";//Verlinkung Anfang
$link2 = "</a><br>"; //Verlinkung Ende
$css1 = "<span class=\"nav_hier\">"; //Textauszeichnung Anfang
$css2 = "</span>"; //Textauszeichnung Ende


if ($page== ""){
echo $link1."start\">".$css1."Home".$css2.$link2;
}
elseif ($page==start){
echo $link1."start\">".$css1."Home".$css2.$link2;
}
else{
echo $link1."start\">Home".$link2;
}
// Link
if ($page==tel){
echo $link1."tel\">".$css1."Tellaro".$css2.$link2;
}
else{
echo $link1."tel\">Tellaro".$link2;
}
// Link
if ($page==ven){
echo $link1."ven\">".$css1."Venezia".$css2.$link2;
}
else{
echo $link1."ven\">Venezia".$link2;
}
// Link
usw.
?>
____________________________________________________________________________

  Profil   E-Mail   Editieren   Zitieren

languitar
Foren-Team


Beiträge: 2795


Bau dir ein Array mit allen Links und ihren Aufrufen, wie z.B. folgt:
1: 
2: 
3:
$array[0] = array('name' => 'Startseite', 'call' => 'link1');
$array[1] = array('name' => 'Über mich', 'call' => 'link2');
$array[2] = array('name' => 'Impressum', 'call' => 'impressum');

Mit "call" bezeichne ich den Aufruf-String nach "page=".

Jetzt zur Ausgabe der Links:
1: 
2: 
3: 
4: 
5: 
6: 
7:
for($i=0;$i<sizeof($array);$i++) {
    if($_GET['page'] == $array[$i]['call']) {
        echo '<a href="index.php?page='.$array[$i]['call'].'"><span class="nav_hier">'.$array[$i]['name'].'</span></a><br>';
    } else {
        echo '<a href="index.php?page='.$array[$i]['call'].'">'.$array[$i]['name'].'</a><br>';
    }
}

Jetzt sollte automatisch für jedes Element im Array ein passender Link erzeugt werden und damit automatisch deine gesamte Navigation.

---
Take a look here!
Lichtblick - Einblick - Ausblick

  Profil   E-Mail   Website   Editieren   Zitieren

silvio
Pixelschubser


Beiträge: 7


Großartig „languitar”,

das funktioniert super!
Große Klasse! Vielen vielen Dank.

Noch einen schönen Abend,

Silvio

  Profil   E-Mail   Editieren   Zitieren

silvio
Pixelschubser


Beiträge: 7


Nun hatte ich gerade gehofft, die Sache mit dem ARRAY zu verstehen. ;-(

Auf der Seite index.php wollte ich die Navigation und die aufgerufene Seite ausgeben.
Die Navigation steht prima da.
Der Link aus der Navigation wird auch prima gesendet.

index.php?page=start

Aber dann erhalte ich 3x ”Fehlermeldung!”

Inhalt der Seite index.php:
__
<?php
@include('nav1.php');
?>

<?php

$array_3[0] = array('page' => 'start', 'call' => 'start.txt');
$array_3[1] = array('page' => 'tel', 'call' => 'tel.txt');
$array_3[2] = array('page' => 'ven', 'call' => 'ven.txt');

for($i=0;$i<sizeof($array_3);$i++) {
if($_GET['page'] == $array_3[$i]['call']) {

@include($array_3[$i]['call']);

} else {
echo 'Fehlermeldung!';
}

}
?>
__

Vielleicht kann mir noch einmal jemand helfen?
Freundliche Grüße,

Silvio

  Profil   E-Mail   Editieren   Zitieren

languitar
Foren-Team


Beiträge: 2795


Öh, halt, dein Include is falsch. Was du da inkludierst ist der Aufrufname, nicht aber der Dateiname. Dazu müsstest du dann noch ein drittes Element in das Array einfügen, in dem die zu inkludierende Datei gespeichert wird.

---
Take a look here!
Lichtblick - Einblick - Ausblick

  Profil   E-Mail   Website   Editieren   Zitieren

silvio
Pixelschubser


Beiträge: 7


languitar schrieb am 28.05.2004 13:34
... ein drittes Element in das Array einfügen ...


Hallo ”languitar”,
 
ebenfalls Öh,

ich hatte das ARRAY folgendermaßen interpretiert: siehe //

$array_3[0] = array('page' => 'start', 'call' => 'start.txt');

//Name des ARRAY = array('ÜbernahmeWert' wenn: 'start', gib aus: 'start.txt'

for($i=0;$i<sizeof($array_3);$i++) {
if($_GET['page'] == $array_3[$i]['call']) {

@include($array_3[$i]['call']);

//einfügen 'start.txt';

Das ist falsch?
Dann scheint es bei mir noch etliche „Öhs” zu geben.

Warum soll ich noch ein weiteres Element einfügen?
Ich brauche den ÜbergabeWert: 'start'. Den erhalte ich von der Navigation.
Dem ÜbergabeWert ist der ”call”-Wert: 'start.txt' zugeordnet.
Nun brauche ich doch nur den ”call”-Wert auszugeben.

Oder?

Wofür benötige ich einen dritten Wert?

Entschuldige, aber nun versteh´ ich gar nichts mehr ;-(

Freundliche Grüße,

Silvio

  Profil   E-Mail   Editieren   Zitieren

silvio
Pixelschubser


Beiträge: 7


Noch einmal hallo ”languitar”,
 
ich bin zu kompliziert - entschuldige.
Mein bisheriges Script zu Seitenausgabe in der Datei index.php ist folgendes:
<?php
@include('nav1.php');
?>
<?php
switch ($page) {
case 'tel';
@include('tel.txt');
break;
case 'ven':
@include('ven.txt');
default:
@include('start.txt');
}
?>

Nun hatte ich die Idee (und eine prima Vorlage von Dir!), die Seitenausgabe über eine Schleife und ein ARRAY zu realisieren.
Also anstelle einer langen switch/case Abfrage eine schnellere Schleife.

Freundliche Grüße,

Silvio

  Profil   E-Mail   Editieren   Zitieren

languitar
Foren-Team


Beiträge: 2795


So muss dann dein erweitertes Array aussehen:
1: 
2: 
3:
$array[0] = array('name' => 'Startseite', 'call' => 'link1', 'include' => 'datei1.txt');
$array[1] = array('name' => 'Über mich', 'call' => 'link2', 'include' => 'datei2.txt');
$array[2] = array('name' => 'Impressum', 'call' => 'impressum', 'include' => 'datei2.txt');


Ein mögliche Ausgabe wäre:
1: 
2: 
3:
foreach($array as $value) {
    if($array['include'] == $_GET['page']) include($value['include']);
}


---
Take a look here!
Lichtblick - Einblick - Ausblick

  Profil   E-Mail   Website   Editieren   Zitieren

silvio
Pixelschubser


Beiträge: 7


Hallo ”languitar”,
 
vielen Dank für die schnelle Antwort.
Ich werd´ mich dransetzen und versuchen das zu verstehen. Grübel.

Wäre Deine Lösung mit ARRAY und Schleife schneller als die switch/case Abfrage? Es sollen insgesamt ca. 10 Links/Seiten verarbeitet werden.

Freundliche Grüße und Frohe Pfingsten,

Silvio

  Profil   E-Mail   Editieren   Zitieren

languitar
Foren-Team


Beiträge: 2795


Bei so nem kleinkrams kommts eh nicht drauf an.

---
Take a look here!
Lichtblick - Einblick - Ausblick

  Profil   E-Mail   Website   Editieren   Zitieren

silvio
Pixelschubser


Beiträge: 7


languitar schrieb am 28.05.2004 17:26
Bei so nem kleinkrams kommts eh nicht drauf an.


Hallo ”languitar”,
 
beruhigend - (nur falls ich es am Ende doch nicht verstehe.)

Noch einmal vielen Dank für die Hilfe.

Freundliche Grüße,

Silvio

  Profil   E-Mail   Editieren   Zitieren
 

Antworten
Nach oben