php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Auslesen einer Style-Eigenschaft mittels PHP


 
manuelme1
04-07-2005, 23:23 
 
Hi,

ich habe ein Problem mit dem Auslesen der style-Eigenschaft display eines <DIV> mittels PHP.

Hier das DIV:

<div id="menu1" style="display: <?php echo $menu11; ?>;">

. . .

</div>

Und zwar kann die Variable $menu11 entweder 'inline' oder 'none' annehmen, was beim Seitenaufruf aus der URL ausgelesen wird.

Ändert nun ein User das DIV (durch einen Klick darauf wird das DIV entweder sichtbar oder ausgeblendet), soll diese Einstellung über die URL wieder zur nächsten Seite übergeben werden, was dann etwa so aussieht:

<a href="index.php?page=register&menu1=<?php echo $menu11; ?>&menu2=<?php echo $menu21; ?>"

Meine Frage nun: Wie lese ich mit PHP den Wert des 'display' vom DIV aus?
Die Variable $menu11 soll dann diesen Wert annehmen, also wieder entweder 'inline' oder 'none'.

Da die Kombination aus PHP und JavaScript nicht funktionert, weis ich nicht wie ich das anstellen soll.

In JavaScript lässt sich der Wert ja ziemlich einfach auslesen:

document.getElementById('menu1').style.display


mfg
manuelme1

 
derHund
04-07-2005, 23:49 
 
wenn ich dich richtig verstanden habe: das geht nicht. php ist sich nicht bewußt, daß es gerade html geparst hat.

ich weiß nicht genau, was du machen möchtest ....

willst du auf den übergebenen parameter zugreifen? schau im $_GET.
willst du alle links dahingehend anpassen, daß sie den veränderten wert weitergeben? dann mußt du alle link per hand (js) durchgehen, die parameter ändern ....

bitte genauer beschreiben, danke.

übergib den wert lieber per session, scheint mir passender ...

 
manuelme1
05-07-2005, 00:24 
 
Nein, ich glaub du hast mich falsch verstanden.

Ich will einfach nur, dass meine Variable (hier: $menu11) die beim verlassen der Seite aktuelle Eigenschaft des 'display' annimmt.

<div id="menu1" style="display: inline"> # --> hier ist das DIV sichtbar

# oder

<div id="menu1" style="display: none"> # --> hier ist das DIV nicht sichtbar


wenn das DIV sichtbar ist, soll die Variable dann also so aussehen:
$menu11='inline';
sodass dieser Link:

<a href="index.php?page=register&menu1=<?php echo $menu11; ?>">

dann so aussieht:

<a href="index.php?page=register&menu1=inline">

damit ein geschlossenes DIV dann auf der nächsten Seite durch auslesen des Parameters in der URL auch wieder geschlossen ist. Sonst müsste es der User ja jedes mal wieder neu schließen.
Hoffe du kannst mein Prob. jetzt verstehen... Ich drück mich vielleicht manchmal etwas unverständlich aus!

Ich habs auch einfach mal mit JavaScript versucht, aber ich bekomm das wahrscheinlich einfachste nicht auf die Reihe: etwas an einen Link anzuhängen:

<a href="index.php?page=register&menu1="+<script language='JavaScript'> document.write(document.getElementById('menu1').style.display); </script>+">Hier klicken</a>

Der Link sieht dann im Browser folgendermaßen aus:

index.php?page=register&menu1=<script%20language='JavaScript'>document.write(document.getElementById('menu1').style.display);</script>

Vielleicht kannst du mir ja sagen wie ich das JS richtig an den Link anhänge, damit wäre mein Problem auch schon behoben, halt nicht mit PHP, aber das ist auch nicht so wichtig.

Danke!

 
TobiaZ
05-07-2005, 01:27 
 
Hab dich glaube ich auch nicht richtig verstanden.

Aber ist dir klar, dass PHP serverseitig abläuft. also bevor die Seite im Browser angezeigt wird?

 
stun
05-07-2005, 01:47 
 
das kann nicht gehen. entweder du übergibst den wert an php oder du verwendest cookies...

 
wahsaga
05-07-2005, 11:24 
 
Original geschrieben von manuelme1
Ich habs auch einfach mal mit JavaScript versucht, aber ich bekomm das wahrscheinlich einfachste nicht auf die Reihe: etwas an einen Link anzuhängen:
<a href="index.php?page=register&menu1="+<script language='JavaScript'>
document.write(document.getElementById('menu1').style.display);
</script>+">Hier klicken</a>
das ist ja absoluter nonsense.

du kannst nicht überall einfach <script> reinklatschen, wie's dir passt.

wenn überhaupt, dann gehe folgendermaßen vor:
- verschaffe dir eine referenz auf den link. (ob du dabei über document.links gehst oder getElement(s)ByIrgendwas, sei wurscht)
- ändere dessen href-attribut entsprechend. ja, dazu musst du es ggf. erst mal auseinanderdröseln, und anschließend mit dem geänderten wert für menuX wieder aneinandersetzen.


da obiger code allerdings vermuten lässt, dass es um dein grundlagenwissen in punkto JS nicht zum besten bestellt ist ... würde ich dir raten, dich erst mal noch ein wenig intensiver mit den grundlagen zu beschäftigen.

 
chansel0049
05-07-2005, 11:28 
 
Direkt dürfte das nicht gehen,

entweder per JS und $_GET variablen-Anpassung aller Links oder ...

es wäre jedoch möglich in deinem Link per Javascript ein Cookie zu setzen, dass per PHP ausgelesen werden kann (allerdings nur wenn Cookies aktiviert/zugelassen sind)

Sonst könnte mann auch durch Link auf eine PHP Seite eine Variable in der Session setzen und die Seite neu laden um das Div mit neue Eigenschaft zu zeigen (ginge z.B auch innerhalb eines IFRAME)

Ansonsten nur per AJAX (was jedoch sicher etwas übertrieben wäre)

jedenfalls bedarf das Programmierkenntnisse

 
manuelme1
05-07-2005, 14:58 
 
Mir ist beim einschlafen was eingefallen, was funktionieren könnte, und es hat funktioniert.
Habs jetzt komplett mit JavaScript gemacht. Ist zwar etwas umständlich, aber es geht:

<script language="JavaScript">
function linkwrite(id,site,text) {
var begin="<a href='index.php?page=";
var vorn="&menu1=";
var m1=document.getElementById('menu1').style.display;
var m2=document.getElementById('menu2').style.display;
var mitte="&menu2=";
var schluss="' style='text-decoration: none' id='menu_members_link'><font color='#000000'>&nbsp;&nbsp; &gt;&gt;&nbsp;";
document.getElementById(id).innerHTML=begin+site+vorn+m1+mitte+m2+schluss+text+"&nbsp;&nbsp;&nbsp; </font></a>";
}
</script>

Wenn man nun auf das DIV klickt, wird die Funktion aufgerufen und der entsprechende Link aktualisiert.
Ist halt etwas umständlich, da man das für jeden Link einzeln aufrufen muss:

<tr style="cursor: hand;" onClick="showmenu('menu1','image1');linkwrite('forgotten','forgotten','Passwort vergessen?');linkwrite('register','register','Registrieren');">

Wenn man ein großes Menü hat is das wahrscheinlich nicht gerade die effektivste Lösung.

Wenn trotzdem noch jemand einen anderen Vorschlag hat, der nicht so umständlich ist, wäre es schön wenn er gepostet wird...!

mfg
manuelme1


Alle Zeitangaben in WEZ +2. Es ist jetzt 04:42 Uhr.