Javascript ohne Aktion ausführen in php

PHP, Ajax, CSS, HTML, Javascript
Eben für die wirklich Harten, die alles selber machen.
Antworten
Benutzeravatar
shadowrider
Beiträge: 473
Registriert: Mi 18.Aug, 2004 12:56
Wohnort: Schelklingen-Schmiechen
Kontaktdaten:

Javascript ohne Aktion ausführen in php

Beitrag von shadowrider »

also ein paar viele Seiten Guggle bringen mich einfach nicht zum Punkt:

ich blende ausgeblendete Tabellen (oder Teile davon) aus, erst durch Anklicken eines Button werden sie je nach Anforderung durch eine Javascript-Funktion eingeblendet. Soweit klappt das prima.

Jetzt habe ich jedoch den Sonderfall, das ich per php eine IP auf online prüfe, wenn dieses nicht der Fall ist soll dieses ein- und ausblenden auch erfolgen - nur, wie kann ich ohne Klick-Aktion die Script-Funktion sichtbar3() aufrufen? (einer der Versuche steht in Zeile 9)
Teil der php:

Code: Alles auswählen

<?php
include ("../dat/ipb.inc.php"); 
$text="Entschuldigung! Derzeit besteht keine Verbindung zur Kamera.";
$ziel=$ip;
@$abfrage = fsockopen ("$ziel", 2051, $errno, $errstr, 2);
if (!$abfrage) { 
	echo $text;
	echo '<input id="a4" type="button" value="Archiv-Fotos einblenden" onClick="Sichtbar3(id);">';
	echo '<window.onload= "Sichtbar3(id);">';
}
else {
Zuletzt geändert von shadowrider am So 15.Jul, 2007 22:54, insgesamt 1-mal geändert.
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Öhm das Event "window.onload" ist in dem Moment schon vorbei, wo das erste Echo gesendet wurde.
Wenn, dann müsste in Zeile 9 das rein:

Code: Alles auswählen

echo '<script language="Javascript" type="text/javascript">Sichtbar3(id)</script>';
Wobei dieser Code besser ans Ende der Seite sollte, um auch wirklich ausgeführt zu werden. Also eher Richtung </body>.

Aber warum nicht mit der Abfrage zwei verschiedene Inputs erzeugen?
Einen, der wie alle anderen vorhanden ist, wenn die Abfrage erfolgreich ist (in dem Script damit logisch falsch) wird das input einfach weggelassen.
Wäre doch einfacher, oder?
Sofern der Rest des Scripts das zulässt...
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Benutzeravatar
shadowrider
Beiträge: 473
Registriert: Mi 18.Aug, 2004 12:56
Wohnort: Schelklingen-Schmiechen
Kontaktdaten:

Beitrag von shadowrider »

auch wenn ich den ganz an das Ende setze bleibt er wirkungslos

ich vermute ich habe da einen ganz anderen Fehler drin, der zwar nicht auffällt aber in diesem Fall stört, ich hänge mal die Datei an
Dateianhänge
live.zip
(1.72 KiB) 126-mal heruntergeladen
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Axo, Moment, Du gibt auch "id" für die Übergabe an die JS-Funktion an.
"id" ist aber nicht gesetzt!
Da muss die ID des Elements rein, also da müsste dann "a4" sein oder "this" (jeweils ohne Hochkommas, im PHP-Script aber mit \' angeben, sonst wird das falsch der Funktion übergeben).
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Benutzeravatar
shadowrider
Beiträge: 473
Registriert: Mi 18.Aug, 2004 12:56
Wohnort: Schelklingen-Schmiechen
Kontaktdaten:

Beitrag von shadowrider »

ich habe das jetzt völlig anders gelöst (vereinfacht mir die sache etwas):

Code: Alles auswählen

<?php
include ("../dat/ipb.inc.php"); 
@$abfrage = fsockopen ("$ip", 2051, $errno, $errstr, 2);
if (!$abfrage) { 
	echo "Entschuldigung! Derzeit besteht keine Verbindung zur Kamera.";
	echo " (Verbindung voraussichtlich in $diff1 Minuten wieder hergestellt) ";
	echo '<br><br>';
	include ("../live/thumb.php");
	}
else {
?>	 <html> 
das ständige springen zwischen php und html ist ziemlich wirr - gibt es da eine elegantere Lösung?
oder sollte ich die html-Strings alle als echo-Befehl ausgeben?

oder ist das vom Prinzip her so richtig und unvermeidbar wenn ich so oft php-Variablen im html benötige?
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

das ständige springen zwischen php und html ist ziemlich wirr - gibt es da eine elegantere Lösung?
Sagen wir es mal so:
Du kannst ein Template-System erstellen oder z. B. auch das von phpBB verwenden, dann wäre es eleganter.
Aber wie Du es praktizierst ist es der "Normalzustand", da man in PHP genau so "optimiert" arbeitet, bzw. PHP so am schnellsten das Script "runterrasselt".

Nachteil dieser Methode:
Das Layout ist nicht veränderbar, ausser man passt alle Dateien an.

Vorteil:
Ein bestehendes Templatesystem einzubinden zwingt u. U. die bestehende Struktur in den Ordnern zu verwenden (beim phpBB wäre das z. B. der Order der Template-Dateien und includes für die template.php).
Ein gar eigenes Template-System zu erschaffen ist dagegen eine Extremsportaufgabe, je nachdem, wie komplex und "bequem" die Daten an das Template übergeben werden sollen.
oder ist das vom Prinzip her so richtig und unvermeidbar wenn ich so oft php-Variablen im html benötige?
Ja, das ist so richtig, da ja in einem phpBB das ja auch nicht anders gemacht wird.
Wenn Du ein Forum mit installiertem XS MOD hast und die damit erstellten Cache-Dateien mal genauer anschaust, wirst Du die "Form" Deines Scripts wiedererkennen.
Der XS MOD macht schliesslich nichts anderes, als Script und Template-File zusammen in eine Datei zu packen und damit den Aufwand des Compilers nur beim ersten Erstellen zu haben.
Genau das kostet nämlich bei einem phpBB ohne XS MOD die meiste Zeit: Die Aufbereitung des Templates...
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Antworten