Zur Navigation

Fototicker

1 lava

Hallo,

auf http://sm.ismine.de/MINE/runter.php könnt ihr meinen Erstentwurf für einen Fototicker sehen. Lokal mit XAMPP hat das wunderbar funktioniert, nach dem Server-Upload wird scheinbar die Imagesize bei zwei der Bilder nicht erkannt, obwohl sie unter http://sm.ismine.de/MINE/Pics/gummi7.jpg und http://sm.ismine.de/MINE/Pics/Ls8.jpg korrekt hochgeladen sind - woran könnte das liegen?

Desweiteren funktioniert dann mein zweiter geplanter Schritt nicht: Bei Anklicken eines der Pics wollte ich eine weitere JS-Funktion stopani() öffnen, die dann die Scrolldown-Bewegung anhält, indem sie die Variable go auf Null setzt. Desweiteren sollte dann das Bild in Großformat geöffnet werden (ähnlich wie es beim Fototicker in der Bodenleiste auf www.oase-derlust.de gemacht wird - leider kann man da den Quelltext nicht einsehen - schade, schade). Bei Schließen des Bildes soll die Animation fortfahren, also go wieder auf 1 gesetzt werden. Hab ich mir so ganz einfach vorgestellt, ich dachte, in der PHP-generierten einspaltigen Foto-Tabelle könnte ich einfach um jedes <img> ein <a href:"javascript:stopani()"> </a> herumsetzen, aber irgendwie beschwert sich der Server dann, daß ihm Kommata oder Strichpunkte fehlen würden!? Kann ich keine Javascript-Aufrufe in den Echo-Teil eines PHP-Scripts reinbauen???? Wenn ja, warum nicht?

Drittens Problem: Im Moment ist die Länge, bis zu welchem xLoc-Wert die Scrollbewegung durchläuft und wann es wieder hochgesetzt wird, statisch eingegeben (momentan xLoc>700). Es wäre ja besser, wenn sich das aus Anzahl der Fotos * Höhe der Tabellenfelder berechnen würde, also $i * 180 , aber auch hier müßte ich Javascript und PHP mischen, und das geht ja wahrscheinlich auch wieder nicht, oder?

Etwas irritiert - Lava


P.S. Wahrscheinlich hätte ich einen neuen Thread "Fototicker" aufmachen sollen - Jörg, verschiebst du das bitte nochmal?















25.12.2006 12:48 | geändert: 25.12.2006 13:29

2 Jörg Kruse

Zum ersten Problem

nach dem Server-Upload wird scheinbar die Imagesize bei zwei der Bilder nicht erkannt, obwohl sie unter http://sm.ismine.de/MINE/Pics/gummi7.jpg und http://sm.ismine.de/MINE/Pics/Ls8.jpg korrekt hochgeladen sind - woran könnte das liegen?

Das erste Bild lädt bei mir überhaupt nicht

Die anderen Probleme schau ich mir später noch einmal genauer an

25.12.2006 14:56

3 lava

Hey Jörg, du bist ja superfix - sogar an Weihnachten :)
Da muß ich mein früheres Kompliment gleich nochmal wiederholen: Dickes Danke!!!

Das Problem mit dem Echo-Aufruf von Javascript hab ich inzwischen gelöst, da muß ich die " durch /" ersetzen.....

Aus obiger Mail ist also nur noch das 3.Problem (Berechnung eines geeigneten Scroll-Abbruchwertes) offen, wenn ich bzgl. Foto-Upload einfach mal trickse und auf die Fotos zurückgreife, die bereits da sind : das Upload des gummi7-Bildes kriege ich tatsächlich nicht hin, ich hab auch nur UMTS zur Verfügung und muß das Upload größerer Pics wohl mal von irgendeinem Hotspot aus machen, momentan hab ich einfach die Bilder verwendet, die ich bereits erfolgreich hochgeladen hatte, auch wenn sie jetzt doppelt vorkommen - es geht ja ums Prinzip!

Zudem bin ich inzwischen einen Schritt weiter bzgl. Animations-Stop und Vergrößerung, hänge aber nun an einer anderen Stelle fest:


Also, die Verbesserung von http://sm.ismine.de/MINE/runter.php liegt jetzt auf http://sm.ismine.de/MINE/drunter.php
Das Javascript ist ausgelagert in die Datei beides2.js und es gibt eine weitere Datei gY.php, die darauf zugreift.

Momentan passiert folgendes: drunter.php lässt die Fototabelle scrollen ,jetzt kann man auch die einzelnen Fotos anklicken und dann passiert folgendes: Es öffnet sich ein Extra-Fenster mit (momentan immer ein und demselben) Foto in Groß (da muß dann auch noch eine Variablenübergabe rein, aber um die kümmere ich mich später, ich wollte erstmal gucken, ob der zugehörige Schließen-Button funktioniert : und der funktioniert erstmal nur halb so, wie er soll: wenn er angeklickt wird, schließt er das Fenster durch Aufruf der Javascript-Funktion fensterzu(), die erstmal ein close() aufruft und das Fenster schließt, dann soll sie aber zusätzlich eigentlich auch die Animation wieder starten - mit go=1 und startani() und das funktioniert leider noch nicht! wieso? muß ich irgendwo einen focus hinlegen, z.B. parent.focus() oder sowas????)

Weitere Fragen: Wenn ich eigentlich künftig kein NEUES Fenster aufmachen will, sondern den freien Platz neben der scrollenden Tabelle nutzen, soll ich dann am besten eine Doppeltabelle machen oder Frames oder geht da auch, Jörg, dein Vorschlag mit dem CSS (bin noch nicht dazu gekommen, es mir anzugucken, will mich aber noch drum kümmern). Der Schließen-Button müßte ja dann immer noch auf dieselbe Art funktionieren wie mit dem Extra-Fenster, oder? (Wenn er denn mal so funktioniert, wie ich es haben möchte).

25.12.2006 15:07 | geändert: 25.12.2006 17:37

4 Jörg Kruse

Das Haupt-Fenster, aus welchem das Popup geöffnet wurde, wird nicht mit parent bezeichnet, sondern mit opener, und auch die Variable go sollte diesem Objekt zugewiesen werden, probier es mal so:

function fensterzu()
{
  close();
 opener.go = 1;
 opener.startani();
}

25.12.2006 18:33

5 Jörg Kruse

Nachtrag zu den folgenden Fragen:

Weitere Fragen: Wenn ich eigentlich künftig kein NEUES Fenster aufmachen will, sondern den freien Platz neben der scrollenden Tabelle nutzen, soll ich dann am besten eine Doppeltabelle machen oder Frames oder geht da auch, Jörg, dein Vorschlag mit dem CSS (bin noch nicht dazu gekommen, es mir anzugucken, will mich aber noch drum kümmern). Der Schließen-Button müßte ja dann immer noch auf dieselbe Art funktionieren wie mit dem Extra-Fenster, oder? (Wenn er denn mal so funktioniert, wie ich es haben möchte).

Im Prinzip sollte es mit als auch ohne Frames gehen. Beim Aufbau mit Frames lädst du das Bild in ein neues Frame oder in ein Inline-Frame. Beim Aufbau ohne Frames wird die ganze Seite nochmal geladen, abhängig von dem betreffenden Parameter wird dann auf der rechten Seite das entsprechende Bild in einer Tabellenzelle, in einem Div oder sonstigem HTML-Element eingefügt

25.12.2006 18:42

6 lava

Also, das mit dem opener funktioniert schonmal :) Danke!!!

Wenn ich mit Frames arbeite, kriege ich zwischen dem automatisch scrollenden Fototicker und dem Hauptteil diesen blöden Scrollbalken, der sowieso nur automatisch gescrollt wird - kann ich den wegschalten...?


Für die CSS-Variante hatte ich gedacht, es müßte so gehen, daß ich der Tabelle die id="fotoshow" und dem verbleibenden Bereich, der zunächst schwarz sein soll und wo dann später die großen Bilder aufgemacht werden wollen, ein <div id="grosspics"> zuordne. Im Head-Bereich füge ich dann ein:
<style type="text/css">
table#fotoshow{width=180px;}
div#grosspics{margin-left:180px;}
</style>
Aber das muß ich noch irgendwie ändern, denn wenn ich im Div-Bereich jetzt erstmal testweise Hallo schreibe und später dann dort ein Bild anzeigen möchte, dann soll das Hallo bzw. das Bild ja mittig auf dem jeweils angezeigten Bereich erscheinen und nicht irgendwo in einer Ecke, die man nicht sieht, nur weil der fotoshow-Teil so lang ist und vor sich hinscrollt.... was fehlt also?



Und mit diesen ganzen Dingern wie self, parent, window, document, opener etc. blick ich noch nicht so ganz durch. Wann nimmt man was? Bisher ist es bei mir eher trial and error, ich versuch verschiedene Kombinationen und hoffe, daß eine klappt (wobei ich das Wort "opener" bisher noch gar nicht kannte und deshalb nicht mitgetestet hatte....)

Liebe Grüße!

25.12.2006 19:16 | geändert: 25.12.2006 22:07

7 lava

Und noch 'ne weitere Frage, zusätzlich zu den aus dem früheren Thread: In dem Div-Bereich, der momentan noch an der falschen Stelle steht (nämlich immer erst unterhalb der Foto-Slidetabelle, wenn ich die mal stillstehen lasse und nicht scrolle, links daneben), kriege ich schon das richtige Foto, wenn ich
die frühere stopani nun wie folgt definiere (statt Fenster-Aufmachen mit Query-String selbe Datei aufrufen):

{go=0;
window.location.href="munter.php?wahl=" +i;
}

und in der Hauptdatei dann <?PHP $wahl=$_REQUEST($wahl)$ ?> setze, und im Div-Bereich einfüge:

<?PHP if ($wahl != empty($wahl)) {echo "<img src="; echo $Fotofeld[$wahl]; echo ">";} ?>

Aber mit diesem Query-String-Aufruf kriege ich halt ein Problem, wenn weiterhin onload=startani() im Body der Datei steht. Also dachte ich, gut, ich will das nur ganz zu Anfang, solange ich wahl noch nicht gesetzt habe, also nehme ich den onload-Befehl raus und schreibe stattdessen kurz nach der Definition von $wahl irgendwo:

<?PHP if ($wahl == empty($wahl)) {echo "javascript:startani()";}
?>

aber das scheint NICHT zu funktionieren, d.h. die Animation startet eben NICHT automatisch wie beim ursprünglichen Onload - warum???

Mein Upload auf dem Server heißt es in der scrollenden Version, wo sich Extra-Fenster öffnen (inzwischen mit dem richtigen Bild drin, allerdings noch in der falschen Größe - darum hab ich mich noch nicht gekümmert.....) http://sm.ismine.de/MINE/drunter.php

und in der Version mit dem CSS, wo es momentan -warum auch immer ??? - nicht scrollt und wo der Div-Bereich an falscher Stelle steht (amüsanterweise im IE unter Windows auf dem Server scheinbar zu weit oben, im Konqueror unter Linux mit lokalem XAMPP zu weit unten), aber wo immerhin das richtige Bild in Originalgröße voll aufgeht: http://sm.ismine.de/MINE/munter.php


25.12.2006 23:10 | geändert: 25.12.2006 23:31

8 Jörg Kruse

Aber das muß ich noch irgendwie ändern, denn wenn ich im Div-Bereich jetzt erstmal testweise Hallo schreibe und später dann dort ein Bild anzeigen möchte, dann soll das Hallo bzw. das Bild ja mittig auf dem jeweils angezeigten Bereich erscheinen und nicht irgendwo in einer Ecke, die man nicht sieht, nur weil der fotoshow-Teil so lang ist und vor sich hinscrollt.... was fehlt also?

Ich würde versuchen, diesen Bereich absolut zu positionieren, also beispielsweise so:

div#grosspics {
position:absolute;
top:20px;
left:180px;
}

Die anderen Probleme schau ich mir später noch mal genauer an..

26.12.2006 16:26

9 Jörg Kruse

Nachtrag zum folgenden Problem:

<?PHP if ($wahl != empty($wahl)) {echo "<img src="; echo $Fotofeld[$wahl]; echo ">";} ?>

Aber mit diesem Query-String-Aufruf kriege ich halt ein Problem, wenn weiterhin onload=startani() im Body der Datei steht. Also dachte ich, gut, ich will das nur ganz zu Anfang, solange ich wahl noch nicht gesetzt habe, also nehme ich den onload-Befehl raus und schreibe stattdessen kurz nach der Definition von $wahl irgendwo:

<?PHP if ($wahl == empty($wahl)) {echo "javascript:startani()";}
?>

aber das scheint NICHT zu funktionieren, d.h. die Animation startet eben NICHT automatisch wie beim ursprünglichen Onload - warum???

Die Bedingung
$wahl == empty($wahl)
macht hier nicht viel Sinn, ein bloßes empty($wahl) ist ausreichend:

<?php
echo '<body bgcolor="black"';
if (empty($wahl)) {
    echo ' onload="startani()"';
}
echo '>';
?>

26.12.2006 18:56 | geändert: 26.12.2006 19:00

10 lava

Super, danke! Ich war gar nicht auf die Idee gekommen, daß ich das <?php ?> auch schon verwenden kann, um mittels echo das <body..... > zu schreiben. Irgendwie hatte ich gedacht, ich könne das nur INNERHALB des Body- Bereichs oder INNERHALB des Head-Bereichs etc. verwenden. Aber jetzt, wo ich deine Antwort lese, klingt das eigentlich ganz logisch :)

Und die Idee mit der absoluten Positionierung macht wohl in diesem Fall auch Sinn, bezieht sich das immer auf den ANGEZEIGTEN Bildschirmbereich, also immer 180px von links (klar bei der Fotobreite) und 20px vom jeweils gerade oberen Bildschirmrand aus unten? Fein, danke!

26.12.2006 20:05