PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Aktuelle Seite bestimmen + include


margareta
23.10.2004, 00:14:13
Hallo! Möchte die aktuelle Seite bestimmen/auslesen mit
'getenv("SCRIPT_NAME") ...'
Dann soll ein entsprechender 'include' Inhalt zur bestehenden Konstellation angezeigt werden.
Ein Link funktioniert, aber beim nächsten Link wird nur der neue Inhalt angezeigt.
Was ist falsch? Könnt Ihr mir helfen? Danke.
<?php getenv("SCRIPT_NAME"); $seite_akt=$SCRIPT_NAME; echo "<a href='$seite_akt?inhalt=irgendwas'>Link1</a>";?>
<?php getenv("SCRIPT_NAME"); $seite_akt=$SCRIPT_NAME; echo "<a href='$seite_akt?inhalt=irgendwasanderes'>Link2</a>";?>

margareta
23.10.2004, 00:21:20
Mach ich das einbinden vielleicht falsch?
[php<?php
if($_GET['inhalt']=="irgendwas")
{
include($_GET['inhalt'].".php");
}
?>php]

xabbuh
23.10.2004, 10:22:40
Original geschrieben von margareta
Mach ich das einbinden vielleicht falsch?
[php<?php
if($_GET['inhalt']=="irgendwas")
{
include($_GET['inhalt'].".php");
}
?>php]

Du musst diese Abfrage natürlich für jede Seite machen, die eingebunden werden kann:

<?php
if($_GET['inhalt']=="irgendwas" || $_GET['inhalt'] == 'irgendwasAnderes') {
include($_GET['inhalt'].".php");
}
?>

margareta
23.10.2004, 11:54:51
Die Seite basiert auf einer Tabelle und da wollte ich die jeweiligen Veränderungen der Page in die einzelnen Tabellenzellen einbinden. Bei einem Link ändern sich z.B.
2 Tabellenzellen (ich schreibe in die jeweilige Zelle die 'include'Anweisung) aber vom vorausgehenden Link soll ein Inhalt in einer anderen Zelle erhalten bleiben.
Gruß,
M

xabbuh
23.10.2004, 21:14:43
Dann hättest du zwei Möglichkeiten:

Entweder du nutzt Sessions (http://tut.php-q.net/sessions.html) und speicherst darin ab, welche Bereiche alles angezeigt werden sollen oder du hängst auch die Variablen für die schon bestehenden Anzeigen, getrennt mit einem | z.B., an die URL an, splittest dann mit explode() (http://www.php.net/explode) auf und überprüfst, welche Inhalte in dem dabei entstehenden Array drinstehen.

margareta
23.10.2004, 21:49:33
Ich weiß nicht ob ich das hin bekomme, versuche es. Vorab jedoch die Frage, warum funktioniert es nicht, wenn man die aktuelle Seite betimmt und dann mit dem Link das Neue (include) dazufügt?

getenv("SCRIPT_NAME"); $seite_akt=$SCRIPT_NAME;

Welche Methode Sessions oder explode()
würde sich am Besten eignen?

xabbuh
23.10.2004, 22:33:27
Original geschrieben von margareta
Welche Methode Sessions oder explode()
würde sich am Besten eignen?
Bei wenigen Blöcken (drei oder vier), die du anzeigen willst, würde explode() ganz gut funktioniert. Wenn es aber doch sehr viele sind, würde ich Sessions nehmen.

Eine Möglichkeit wäre auch etwas in dieser Art:
Link: seite.php?block1=yes&block2=no&block3=yes
seite.php

<?php
print '<p>Ein Satz.</p>';

if($_GET['block1'] == 'yes') {
include('seite2.inc.php');
}

print '<p>wieder ein Satz</p>';

if($_GET['block2'] == 'yes') {
include('seite3.inc.php');
}

print '<p>noch ein Satz</p>';

if($_GET['block3'] == 'yes') {
include('seite4.inc.php');
}
?>

chris17
24.10.2004, 14:28:19
Hi,

bin mir nicht sicher, ob ich das Problem vestanden habe...

<?php
getenv("SCRIPT_NAME"); // Hier fehlt doch eine Zuweisung, oder?!?
$seite_akt=$SCRIPT_NAME;
echo "<a href='$seite_akt?inhalt=irgendwas'>Link1</a>";


/*
Vorschlag
*/
$SCRIPT_NAME = getenv("SCRIPT_NAME");
$seite_akt = $SCRIPT_NAME;
echo "<a href='$seite_akt?inhalt=irgendwas'>Link1</a>";
?>

Grüße

margareta
24.10.2004, 14:35:52
...gäbe es auch diese Möglichkeit?
Abfrage, ob die Datei 'irgendwas.php' bereits include ist - dann hänge soll sie auch weiterhin eingebunden bleiben.
<?php
if($_GET['inhalt'] == 'yes')
{
include('irgendwas.php');
}
echo "<a href='datei2.php?inhalt=irgendwas'>Navigation 2</a>" ?>

Bei meiner Page sollen 2 Dateien (eine Ton an oder aus Wahl + eine Flashdatei) parallel zu anderen Navigationen angeklickt werden können.
Gruß, M

margareta
24.10.2004, 14:48:33
Hi chris17,
leider klappt das auch nicht :-(
Gruß, M

meikel (†)
25.10.2004, 01:36:32
Original geschrieben von margareta
leider klappt das auch nicht :-(
Das hätte mich auch gewundert. Sicher suchst Du das:
echo 'das ausgeführt Script heißt: ' . $_SERVER['SCRIPT_NAME'];

margareta
25.10.2004, 10:29:26
echo 'das ausgeführt Script heißt: ' . $_SERVER['SCRIPT_NAME'];

Wie muss es richtig geschrieben werden?

<?php
$_SERVER['SCRIPT_NAME']= getenv("SCRIPT_NAME");
$seite_akt=$SCRIPT_NAME;
echo "<a href='$seite_akt?inhalt=irgendsowas'>Navi Flash</a>";
?>

Gruß, M

xabbuh
25.10.2004, 12:05:44
<?php
$seite_akt = $_SERVER['SCRIPT_NAME'];
echo "<a href='$seite_akt?inhalt=irgendsowas'>Navi Flash</a>";
?>

margareta
25.10.2004, 12:31:26
schade,
es funktioniert leider auch nur soweit, dass die im a href neu per "include" "inhalt=irgendsowas"
eingebunden wird, aber eine bereits vorher
mit "include" gefüllte Zelle (Datei "etwas.php")nicht erhalten bleibt.

xabbuh
25.10.2004, 12:53:59
Dann zeig mal, wie dein Script jetzt aussieht.

margareta
25.10.2004, 13:31:04
In diese Tabellenzelle soll die Datei 'text.php' eingebunden werden.
<td><?php
if($_GET['inhalt']=="text")
{
include($_GET['inhalt'].".php");
}
?></td>

In diese Tabellenzelle soll die Datei 'flash.php' eingebunden werden.
<td><?php
if($_GET['inhalt']=="flash")
{
include($_GET['inhalt'].".php");
}
?></td>

In dieser Zelle steht der Link um die 'text.php' zu aktivieren.
<td><?php
$seite_akt = $_SERVER['SCRIPT_NAME'];
echo "<a href='$seite_akt?inhalt=text'>klick für text</a>";
?></td>

In dieser Zelle steht der Link um die 'flash.php' zu aktivieren.
<td> <?php
$seite_akt = $_SERVER['SCRIPT_NAME'];
echo "<a href='$seite_akt?inhalt=flash'>klick für flash</a>";
?></td>

xabbuh
25.10.2004, 13:41:29
Ändere das so um:
<td><?php
if($_GET['inhalt']=="text")
{
include($_GET['inhalt'].".php");
}
?></td>
Flash:
<td><?php
if($_GET['inhalt2']=="flash")
{
include($_GET['inhalt2'].".php");
}
?></td>

Links:
<td><?php
$seite_akt = $_SERVER['SCRIPT_NAME'];
echo "<a href='$seite_akt?inhalt=text&inhalt2={$_GET['inhalt2']}'>klick für text</a>";
?></td>

und

<td> <?php
$seite_akt = $_SERVER['SCRIPT_NAME'];
echo "<a href='$seite_akt?inhalt2=flash&inhalt{$_GET['inhalt']}'>klick für flash</a>";
?></td>

margareta
25.10.2004, 15:01:53
Super! Danke!
Es hat geklappt.
Nun hab ich weiter gesponnen und schon stoße ich wieder an meine Grenzen :-(
Wenn ich nun einen weiteren Link setzen will (der muss aber bei weiteren Veränderungen nicht erhalten bleiben) und vorher abfragen muss ob die Links 'text' bzw. 'flash' schon getätigt sind (und dann erhalten bleiben müssen), sollte ich also die beiden text&inhalt2= + flash&inhalt=
verknüpfen?!

echo "<a href='$seite_akt?inhalt=text&inhalt2&inhalt2=bild&inhalt={$_GET['inhalt3']}'>klick für etwas</a>";

mit & das bewerkstelligen zu wollen ist
(wie ich probiert habe) quatsch.

Kann das überhaupt funktionieren?