WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   PHP im Framest? (http://www.wcm.at/forum/showthread.php?t=43115)

Nightstalker 16.01.2002 02:21

PHP im Framest?
 
Hab da mal eine kleine Frage...
vielleicht is diese Frage auch sau blöd
aber ich komm nicht drauf und nachlesen ist auch mühsam.

Es ist folgendes, ich hab ein Scrip welches einen Link
zu einer datei (index.php) sendet allerdings mit einer
action dabei. (als Beispiel die Email Benachrichtigung
des WCM Forums http://www.wcm.at/vb2/showthread.php...2&goto=newpost)

Alles schön und gut geht einwandfrei, mein Problem ist
folgendes, der Link http://www.wcm.at/vb2/showthread.php...2&goto=newpost soll in einem FRAMESET
geöffnet werden. Das heisst, die Datei wird im Frameset
frame.html im Mainframe geöffnet bzw. sie SOLLTE da
geöffnet werden. Ist das denn irgendwie möglich???

Kurz gesagt:

http://www.wcm.at/vb2/showthread.php...2&goto=newpost

soll im hauptframe eines Framesets geöffnet werden

Danke im Voraus...
MfG Nighty

kingchaos01 16.01.2002 09:34

Hallo!
Es gibt die Möglichkeit, mittels JavaScript ein "fehlendes" Frameset nachzuladen.
Das JavaScript überprüft also, ob es Teil eines Framesets ist, und wenn nicht, lädt es was nach.

Wie das genau geht, sollte auf den einschlägigen JavaScript-Seiten nachzulesen sein.
Scheint mir die einfachste Möglichkeit zu sein.

Sollte dir eine serverseitige Skriptsprache zur Verfügung stehen, kannst du auch das Frameset selbst mit angehängten Parametern aufrufen, und der Server bastelt dir den entsprechenden Framest zusammen.

hth,
Roland

Who-T 16.01.2002 09:44

hmm, du kannst das frameset als php-datei machen, über ein session_start() eine session initialisieren und alle variablen in die session registern, dann die session in dem main-fenster des frames (der entsprechenden php-datei halt) wieder mit session_start() initialisieren, dann hast du die variablen zur verfügung.

Alex1 16.01.2002 10:22

Wieso setzt Du den Link nicht auf das Frameset und lädst als Hauptframe eben diesen Link mit dem action tag?

Nightstalker 16.01.2002 16:45

Nun also Java halt ich persönlich für keine gute
Lösung, ich mag java nicht und abgesehn davon müsste
ich dan mein Script wieder auf den Kopf stellen.

Was die Sessions angeht muß ich sagen, ich weiß was du
meinst aber ich hab einen totalen hänger wenn ich mir das
im Kopf so durchdenk. Vielleicht kann mir das wer mal
anhand eines Beispiels erklären oder so *g*

@alibert1: Was deinen Vorschlag betrifft, der ist zwar nett
nur ergibt sich dabei daß problem daß dann IMMER dei GLEICHE
Seite geladen wird was aber nicht möglich ist da es ja jedesmal
eine andere ist, also z.B.:
http://www.wcm.at/vb2/showthread.php...9&goto=newpost
http://www.wcm.at/vb2/showthread.php...9&goto=newpost
http://www.wcm.at/vb2/showthread.php...9&goto=newpost

Und es ist technisch nicht (moment mal...)
Naja vielleicht doch... dann müsste aber bei jedem Link der
erzeugt wird eine Variable generiert werden die dann... nein
das geht so nicht...

Also das bereitet mir echt Kopfschmerzen... :(
HILFEEEE

MfG Nighty

Alex1 16.01.2002 17:16

Zitat:

Naja vielleicht doch... dann müsste aber bei jedem Link der erzeugt wird eine Variable generiert werden die dann...
Genau DAS habe ich gemeint...ist gar nicht so schwer, da die Variablen ja dynamisch die Werte zugewiesen bekommen.
Wennst das einmal hinkriegst, funktionierts für alle Seiten.

Nightstalker 16.01.2002 17:33

Hast eine Idee wo ich da anfangen sollte???
Das Script ist eine Email Benachrichtigung und ist eigentlich
genau gleich wie die hier im WCM:

Script mit sendmail funktion die dann folgendes macht:

function MailNotification($forum, $thread, $poster)
{
global $config,$PHP_SELF,$HTTP_SERVER_VARS,$realm;

$result = db_select("SELECT u.* FROM $config[mtable] AS m, $config[utable] AS u WHERE m.fname = '$forum' AND m.threadid = '$thread' AND u.username = m.poster AND u.options & 64 GROUP BY u.username");

while($row = db_getarray($result))
{
if ($row[username] != $poster)
$users[] = $row;
}

$topicname = threadtitle($forum,$thread);

$subj = "Antwort auf das Thema $topicname im $config[title]";

$from = "forum";

$msg = "Forum Nachricht";
$msg .= "\n\n";
$msg .= "$poster hat auf Ihren Beitrag $topicname geantwortet\n";
$msg .= "\n";
$msg .= "Hier gehts zu Ihrem Beitrag:\n";
$msg .= "http://$HTTP_SERVER_VARS[HTTP_HOST]$PHP_SELF?action=displaythread&forum=$forum&id=$th read&realm=$realm";
$msg .= "\n\n";
$msg .= "Sie haben die Email Beanchrichtigung für Antworten auf Ihre Beiträge aktiviert\n";
$msg .= "\n";

if (is_array($users))
foreach ($users as $user)
if ($user[email])
mail($user[email], $subj, $msg, "From: $from\n");

}


Soweit alles klar... jetzt soll der Link (in ROT) aber eben
in besagtem Frameset forum.html geöffnet werden da ja sonst der
Rest der Webseite fehlt :(

Nun ich bin nicht ganz von gestern aber was programmieren betrifft
bin ich leider nicht so fix also wenn mir da wer ein bisserl
Nachhilfe geben könnte *g*

Thanx
MfG Nighty

Alex1 16.01.2002 19:34

Äh...heute bin ich - ehrlich gesagt - schon zu müde...ich antworte gerne morgen, ausserdem kriegst Du eine PM von mir - könnte interessant für Dich sein ;)

Nightstalker 16.01.2002 19:55

Mal sehen... Ich bin jedenfalls dankbar für
jede Hilfe :)

Bin wiegesagt nicht so ganz fit was solche tiefgreifenden
"programmierarbeiten" angeht... naja.

Ich mein ich versteh schon a bisserl was aber irgendwann
endet das zumindest in meinem Kopf wie folgt:

10 print: Wie geht das gleich?
20 x=2
30 y=1
40 for x > y goto 10 else goto 50
50 prein: So gehts!

:lol:

Alex1 16.01.2002 20:37

Ha!
Ich habs!:D
Hat mir keine Ruhe gelassen...
Du rufst statt der eigentlichen Seiten (bzw. gibst sie im Mail an) einfach das Frameset (oder ein speziell dafür gestaltetes Frameset) als php datei auf und übergibst ihm alle Parameter wie Du sie brauchst.
Innerhalb des Framesets verwendest Du die übergebenen Variablen, um die URL
http://$HTTP_SERVER_VARS[HTTP_HOST]$PHP_SELF?action=displaythread&forum=$forum&id=$th read&realm=$realm
im gewünschten Fenster des Framesets aufzurufen...
Dazu wirst Du allerdings statt $PHP_SELF den Scriptnamen angeben müssen.
Geht das?:p

P.S.: Jetzt ist aber meine Freundin schon ziemlich urböse :) Bis morgen!

Nightstalker 16.01.2002 20:48

Ok jetzt hätt es mir fast ein oder zwei Gehirnwindungen
verknotet aber ich glaub ich habs jetzt verstanden :)
Tut leid ich bin a bisserl blöd wenns um sowas geht.

Ok also das muß so aussehn (schematisch)

link muß eine Variable sein (zumindest der variable
teil des links also $mailvariable = ?action=...) -> frameset.php ->
script: wenn variable (die im link) existiert dann öffne
index.php (im frameset) mit ?$mailvariable also index.php$mailvariable
ansonsten öffne index.php normal?!

Pff hab ich das so richtig verstanden??? (sag bitte ja :))

So, schöne grüße an deine Freundin, tut mir leid
daß ich dich aufgehalten hab, Sie soll wenn dann auf
mich böse sein ok?!

Cu und Danke derweil!

Alex1 17.01.2002 07:56

Puh, jetzt ist die Frage, ob ICH das verstanden habe...:)

In dem Mail gibst Du folgenden Link an:
Code:

http://$HTTP_SERVER_VARS[HTTP_HOST]/frameset.php?action=displaythread&forum=$forum&id=$thread&realm=$realm";
Und dieses frameset benutzt Du einfach, um darin Dein Script als frame aufzurufen
Code:

script.php?action=displaythread&forum=$forum&id=$thread&realm=$realm";
Hast Du ein Forum programmiert oder passt Du ein bereits bestehendes an?

Nightstalker 17.01.2002 13:25

Zitat:

Original geschrieben von alibert1
Hast Du ein Forum programmiert oder passt Du ein bereits bestehendes an?
:lol: also wenn ich ein Forum programmieren könnte dann müsste ich wohl nicht fragen wie man sowas macht oder? *g* Na ich hab eines übersetzt und entsprechend modifiziert und muß sagen bis auf ein zwei kleinigkeiten hab ich eh keine Schwierigkeiten damit gehabt. Ein klein Wenig versteh ich zum glück davon. Naja muß ich ja wohl aber egal.

Momentan sitz ich im Büro werd mir das heute mal zu gemüte führen... ich seh das problem nur darin daß das script ja irgendwie eine Variable übergeben MUSS d.h. muß der teil ?action=displaythread... eine Variable sein weil sich der ja immer ändert!? Also der Link im mail müsste zuerst irgendwo von dem script gelesen werden bevor das script dann die index.php mit der action aufrufen kann oder???? :confused:

Alex1 17.01.2002 13:50

Das Übergeben ist kein Problem; z.b.
wenn Du ein Script hast, dass Du in der Form index.php?action=read aufrufst, stellst Du dem Script index.php eine Variable $action zur Verfügung, die den Wert "read" hat.
Das erledigt php automatisch für Dich.

Nightstalker 17.01.2002 18:55

Nein... Nein Nein...

Ich bin einfach viel zu blöd...
ich kapiers einfach nicht :heul:

Wo muß ich jetzt was reinschreiben????
Es ist nämlich so daß der Link selber
von der Datei funcs.forum.php generiert wird
und die Variablen (also threadid usw. holt
er sich wieder weiß ich wo) mir ist das alles
viel zu heavy. Ich weiß ja warum ich kein
Programmierer geworden bin!

Naja...

kingchaos01 17.01.2002 21:08

Also:
Du hast eine Datei "index.php" (dein Frameset), die mit dem Link:
index.php?beitrags_id=1234567890 (kann auch viel länger sein)
aus dem Mail heraus aufgerufen wird.
Da steht dann folgendes drin:

[html-zeugs]
<frameset cols="10%,90%">
[...]
<frame src="forum.php?beitrags_id="<? echo $beitrags_id; ?> name="ForumFenster">
[...]
</frameset>
[/html-zeugs]

$beitrags_id steht dir im Skript "index.php" als GET-Variable "direkt" zur Verfügung.
Oder über $HTTP_GET_VARS["beitrags_id"], hängt vom Provider ab.

Hoffe, jetzt wirds klarer.

hth,
Roland

Nightstalker 17.01.2002 21:25

Ok...

Wenn ich nur erklären könnte was ich NICHT
versteh... hmmmm... ich tu mir so schwer daß in
Worte bzw. Schrift umzusetzen... ich bin eh nimmer weit
weg davon.

also daß script daß den maillink ausgibt schaut so aus
http://$HTTP_SERVER_VARS[HTTP_HOST]$PHP_SELF?action=displaythread&forum=$forum&id=$th read&realm=$realm

is klar, ich muß jetzt also ein frameset.php erstellen
daß mir wenn es SO: ?action=displaythread&forum=$forum&id=$thread&real m=$realm
aufgerufen wird, die eigentliche index.php mit eben diesen Parametern im entsprechenden zielframe "indexframe" öffnet.

auch ok...

so ich steck dann da wos drum geht WIE und WO ich daß reinschreiben muß...
brauch ich da eine if routine oder wie sag ich ihm WANN er die index.php und vorallem mit welchen Parametern
öffnen soll und wann (also wenn ich daß Forum NORMAL aufrufe) er sie ohne was öffnen soll.

Ähm, sagt es mir wenn's euch zu blöd wird...
Ich steh entweder TOTAL auf der Leitung oder
ich hab echt nicht daß Zeug zum Programmieren :heul:

kingchaos01 17.01.2002 21:36

irgendwie seh ich dein problem nicht....

mein verdacht:
du willst mit
isset($iregendeine_variable_die_du_im_maillink_übe rgen_hast)
überprüfen, ob das forum aus einer mail oder eben "direkt" aufgerufen wurde.

if (isset($thread)) {
echo "<frame_src=forum.php>";
} else {
echo "<frame_src=forum.php?id=$thread>";
}

ist es das, was du meinst?


R.

Nightstalker 17.01.2002 21:53

Jetzt haben wirs :)

Ich glaub daß bringt jetzt Klarheit...
Genau da war mein HAUPTPROBLEM.
Weil ich einfach nicht wusste ob man
daß einfach so angeben kann ohne vorher
variablen zu definieren oder zu übergeben.

ok also mit dieser if/else routine werd
ich das jetzt mal versuchen.

ich berichte dann, bis dahin
MfG und VIEEEELEEEEN DAAAAANK!

Nighty

kingchaos01 17.01.2002 21:59

kein problem....
aber ein blick ins php-manual täte dir sicher gut.
is auf den ersten blick ein bißchen verwirrend, aber nach 1-2 stunden beschäftigung findet man ALLES, und nochdazu gut mit beispielen erklärt.
es gibt nämlich für fast jedes problem den passenden befehl.
[werbung]
das manual ist fast das beste an php.
[/werbung]


cu
Roland

Nightstalker 17.01.2002 22:12

J. Krause

Grundlagen und Profiwissen - PHP 4 | mySQL

Liegt neben mir :)

Alex1 18.01.2002 14:22

Gut erklärt, kingchaos01 :)
Und Nightstalker: Du musst unbedingt ein Erfolgserlebins schildern;)

allwissende Müllhalde 18.01.2002 16:35

Wie ich aus ganz geheimer Quelle Erfahren habe ;) , hat er es gestern Nacht noch geschafft :)!
Ich nehme an er wird sich hier heute Abend wieder melden.

Nightstalker 18.01.2002 19:23

Tja Leute wie die Müllhalde bereits verkündet hat
ICH HAB'S GESCHAFT!!!

Wenn ich jetzt so drüber nachdenk weiß ich nicht
warum ich mir so den Kopf zerbrochen hab :)
Das Problem war daß ich eine ganz Entscheidende
Sache nicht gewusst hab aber zufällig drauf gestosen
bin wie ich das Buch so durchgeblättert hab.

Die Variable:

die Globale Variable von PHP namens $QUERY_STRING
diese gibt den wert der nach dem ? steht (bei allen
Links) aus. Da war alles klar.

Das Problem:

um die Datei im Frameset zu öffnen muß eine kombination
aus einem String und der Variablen $QUERY_STRING ausgegeben
werden, ich hab echt herumprobiert bis ich dann die rettende
Eingebung hatte, der PUNKT verbindet Zeichenketten!
Es bedarfweiters einer Variabeln die die Datei entweder
MIT der action oder OHNE läd. Also so:

$showframe = "index.php?".$QUERY_STRING;
oder eben $showframe = "index.php"

Die Lösung:

Mittels der Funktion EMPTY wird ermittelt ob ein link
MIT oder OHNE parameter aufgerufen wird (ob die Variable
QUERY_STRING einen Wert enthält oder nicht) je nachdem
ob empty TRUE oder FALSE ausgibt wird der variablen
$showframe der entsprechende Wert zugewiesen.

Und das ist es, das Ergebnis zweier nervenraubender Nächte!


<html>
<head>
<title>Forum</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<?
if ( empty($QUERY_STRING) ) {$showframe = "index.php";}
else {
$showframe = "index.php?".$QUERY_STRING; }

?>


<frameset cols="80,793,80" rows="*" border="0" framespacing="0" frameborder="NO">
<frame src="leftframe.html" frameborder="NO" marginwidth="0" marginheight="0" scrolling="NO" noresize>
<frameset rows="91,580" cols="*" border="0" framespacing="0" frameborder="NO">
<frame src="topframe.html" frameborder="NO" marginwidth="0" marginheight="0" scrolling="NO">
<frame src=<? echo $showframe ?> marginwidth="0" marginheight="0" frameborder="NO" name="indexframe">
</frameset>
<frame src="rightframe.html" frameborder="NO" marginwidth="0" scrolling="NO" noresize>
</frameset>
<noframes><body bgcolor="#FFFFFF" text="#000000">

</body></noframes>
</html>

Tja Leute ich bedanke mich
GAAANZ HERZLICH für eure Hilfe!
Dank euch hab ich den Mut nicht verloren!!!

Bis zum nächsten Problem :D

MfG Nighty


Alle Zeitangaben in WEZ +2. Es ist jetzt 03:59 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag