Probleme bei Buttons

Hallo,

ich bin noch absoluter PHP-Neuling, aber wollte nun einmal eine kleine Bildergalerie programmieren. Dazu hab ich einfach ein Feld Registry[][], in dem die Bilddaten zu jedem einzelnen Bild liegen (z.B. Pfad und Name) und eine Funktion setImage(), die aufgerufen wird, wenn ein neues Bild angezeigt werden soll.

Ich hab dann im Wesentlichen drei Buttons, einer für vor, einer für zurück und einer zum Beenden. Die Abfrage geschieht mit $_Post[] und dort ist derzeit mein Problem. Wenn der Button „vor“ aufgerufen wird, so soll $bild (Variable, die das aktuell angezeigt Bild repräsentiert) inkrementiert werden und die Methode erneut aufgerufen werden. Allerdings scheint der Button dann immer den Status „gedrückt“ zu haben, denn das Programm ist dann wie in einer Endlosschleife und zeigt die Bilder hundert mal an, so dass ich nur noch das Fenster schließen kann. Wie kann man das ändern? Muss ich den Button irgendwie manuell zurücksetzen?

Hier ist mal der wesentliche Teil des Codes, wobei das Problem eigentlich nur im unteren Bereich ist, dort wo der Button ‚vor‘ verarbeitet wird.

function setImage( $bild, $registry) {

/* Darstellen des Bildes */

$bildpfad = $registry[$bild][0] . ‚.jpg‘;

echo " ";

echo ’ ';
echo $registry[$bild][2] . ’ ';

echo ’

';
echo ’ ’ . $registry[$bild][0];
echo ’
';
echo ’ ’ . $registry[$bild][1];

echo ’

';
echo ’ ’ . $registry[$bild][3];

echo ’

';

echo’ ';
echo ’ ';
echo ’ ';
echo ’ ‚;
echo‘ ';

if( $_Post[‚vor‘]) {

$bild++; // Ein Bild weiter
setImage( $bild); // Rekursiver Neuaufruf

// Problem: Wird nach Button-Click unendlich oft aufgerufen

}

}

Vielleicht gibt es auch ganz andere Möglichkeiten, wie man eine solche Bildgalerie prinzipiell aufbauen sollte, aber mir ist nichts anderes eingefallen als die obige Vorgehensweise.

M.f.G.
Infostudent.

Das Problem liegt meines Erachtens nach hier:

if( $_Post[‚vor‘]) {

$bild++; // Ein Bild weiter
setImage( $bild); // Rekursiver Neuaufruf

$_POST[‚vor‘] ist immer true, bei jedem Durchlauf der Rekursion. Warum sollte die Post-Variable sich auch ändern?
Also wird setImage immer wieder aufgerufen. Aber eigentlich sollte das Script ja nach dem letzten Bild stoppen. Da müßtest Du entsprechend noch eine Abfrage einbauen.

Naja, eigentlich soll immer nur ein Bild pro Seite erscheinen. Was fehlt ist natürlich die Abfrage für das letzte Bild, die ich aber erst mal weggelassen habe, da ich das Programm zunächst allgemein zum Laufen bringen möchte. Was weiterhin fehlt ist noch irgendeine Methode, die den Bildschirm löscht, damit immer nur ein Bild angezeigt wird, aber auch das sei erst einmal sekundär.

Das Problem ist jetzt jedoch die Realisierung dessen. Wie $Post in Wirklichkeit funktioniert, weiß ich nicht. Ich dachte es liefert den aktuellen Zustand des Buttons zurück, aber gut. Ich hab dann mal $Get probiert, aber das funktioniert bei mir auch nicht. Wahrscheinlich sind $Post und $Get allg. die falschen Befehle für das Problem. Ich würde einfach gern wie bei Java eine Funktion ansteuern, sobald sich was geändert hat (in dem Fall: Button angeklickt), und das genau einmal pro Klick.

LG,
Infostudent

Ich glaube, Du mißverstehst da die Funktionsweise von PHP.
Das PHP-Script wird nur ein einziges Mal ausgeführt und zwar wenn die Seite geladen wird. Ist die Seite mal mit Buttons und Bildern und was auch immer fertiggeladen, macht PHP garnichts mehr.
Du hast dann zwei Möglichkeiten.

  1. Du arbeitest direkt auf dieser geladenen Seite mit JavaScript etc. weiter.
  2. Du arbeitest mit PHP. Dann übergibt Dein Button quasi seinen Zustand in einer POST-Variable an die nächste aufgerufene Seite. D.h. Du drückst den Button, der ruft eine Seite auf und übergibt die Variable an das Script auf dieser neu aufgerufenen Seite.
    Auf dieser Seite kannst Du dann den Status bzw. Inhalt der POST-Variablen abfragen.

OK, da hab ich mich wohl doch ein wenig geirrt. Ich dachte das funktioniert wie bei einem richtigen Programm.

So wie ich das verstanden hab, müsste ich also (wenn ich alles auf der selben Seite darstellen will), die eigene Seite wieder aufrufen und ihr die neue Bildnummer übergeben. Wie ist aber der Syntax hierfür (mit welcher Methode kann ich das machen)?

mfg,
Infostudent.

ein beispiel

ein bild

<?php $erstesbild = 1;
$letztesbild= 99; $bildnummer = $\_GET["bildnr"]; // hole bildnummer aus URL if ($bildnummer == "") {$bildnummer=$erstesbild; // erstes bild} echo " "; if ($bildnummer \> $erstesbild) { echo "[zurück](?bildnr=%2522.(%2524bildnummer-1).%2522) ";} if ($bildnummer vor ";} ?\> ungetestet > [Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Danke, so hab ich es jetzt hinbekommen.

LG,
Infostudent.