Target ändern?

ph0enix

Grünschnabel
Okay, ich habe folgendes Problem:

Ich habe auf einer Seite mehrere Links, welche eine seite in einem anderen frame öffnen.

z.b.:
Link1
Link2
Link3

Klickt jetzt ein User auf z.b: Link1, öfnnet sich seiteB in frameX und füllt von da aus divA
bei Link2 öffnet sich seiteB in frameX und füllt von da aus divB
und bei einem Klick auf Link3 öffnet sich seiteC in frameX und füllt von a aus divC.

Das Problem ist: wenn jemand auf einen dieser Links klickt, dauert es ca 6 sekunden bis eine PHP-Funktion den entsprechenden Inhalt von fenster2 berechnet und danach auch angezeigt hat.
Wenn jetzt ein User während dieser 6 sekunden einen zweiten link anklickt, wird die selbe berechnung angestoßen nur für anderen inhalt. Da aber alle "Berechnungen" immer an frameX gesendet werden, würde dann die erste Berechnung abgebrochen werden und divA ewig auf das ergebnis warten (ein entsprechender "loding"-balken würde dann auch im wahrsten des Wortes ewig laden...).

Wie könnte man das vermeiden?

ich sehe auf anhieb folgenden Möglichkeiten:

1.in die Session eine Variable schreiben, z.b.:

$_SESSION['linkAktiv'] = "true";

erst fragt man dann ab, ob linkAktiv == "true" oder halt nicht gesetzt ist,
dann setzt man es gleich "true", dann kommt der berechnungs-code,
und am ende des berechnungscode setzt man die SESSION-Variable wieder auf "false".

soweit - so gut: geht aber auf irgendeinem grund bei mir nicht:

Code:
  if($_SESSION['linkAktiv'] == "false" || !isset($_SESSION['linkAktiv']))
  {
   $_SESSION['linkAktiv'] = "true";
   $berechnung($var1,$var2,$var3);
   $_SESSION['linkAktiv'] = "false";
  }

da das einfach nicht hinzubekommen war, obwohl ich die SessionID wietergebe, hab ich mir gedacht man könnte vielleicht folgendes tun:

2.das target aller anderen links ändern. am besten würde ich das an der stelle tun, wo $berechnung($var1,$var2,$var3); steht. Aber auch da müsste ich eine variable setzen... am besten in der session, nur das ging ja nicht...

und dann fällt mir nur noch ein:
3.transparente bilder in divs über den anderen links mit css-attribut "style" einblenden und nach der ausführung von der berechnung wieder ausblenden, aber ehrlich gesagt ist das ne ganz miese Lösung...

Was würdet ihr tun? Kann mir jemand sagen warum das mit der Session nicht geht? Sonst funktionieren alle Sachen mit der Session bei mir perfekt...
 
Erm ... Javascript

Wie ich das jetzt verstanden hab, verwendenst du ohnehin Javascript, das heißt es ist eh schon abhängig davon.
Einfach danach alle Buttons diablen bis die Seite geladen wurde.

Und ich weiß ja nicht was du da laden musst, aber 6 Sekunden kommen mir für ein Füllzeugs für ein Feld schon komisch vor :)
 
Danke für Eure Antworten, Leute.

Aber ich habe das Problem schon anders gelöst. Es ist ein recht komplexes Konstrukt daraus geworden, dass leider niemandem außer mir weiterhelfen würde, weil es speziell auf diese Websiote zugeschnitten ist.
Aber falls es doch jemandem helfen sollte:
Ich habe die "buttons" die nun eigentlich nur noch a-Tags ohne href-tag sind, mit einen onclick-handler ausgestattet, welcher zu einer javascript-funktion führt, die überprüft, ob sie selbst bereits ausgeführt wurde und falls nicht entsprechend etwas unternimmt. Die ausführungsüberprüfung habe ich mit einer globalen javascript-variablen gelöst. Habs jetzt zwar nicht mit einem session-attribut hinbekommen (wer weiß warum...) aber da javascript eh clientseitig ist, kommt das genau auf das Selbe hinaus.

Und um nochmal eine Frage zu beantworten:

6 Sekunden mögen viel erscheinen, aber für die live-berechnung von komplexen statistischen daten für eine semi-geschäftliche website, ist das mehr als okay. ^_^
 
Zurück