Formular-Image source behalten|Session durch Imageklick setz

Hallo,

Ich habe folgende Seite: Meine Seite

Dort sieht man 3 Tabellen mit 49 Zahlen-Images

<label> <input type="image" name="1_3" id="1_3" src="Images/Lottozahlen/3.png" onclick="this.src='Images/Lottozahlen/Kreuz.png'" /> </label>
Alle Tabellen sind in einem Formular

[code]

[/code] Wenn man jetzt auf soein Bild klickt, soll es durch das Kreuz ersetzt werden. Das machts auch kurz, dann wird die Seite aber neu geladen und das Kreuz ist wieder weg.

Jetzt die Frage:
Wie kann ich es verhindern, dass die Seite neugeladen wird ODER
Wie kann ich an die Seite die Information weitergeben, dass dieses Feld angeklickt wurde und automatisch das Kreus-Bild dafür anzeigt.

Wenn es nur über den Weg der Informationsübertragung geht, müssten dann auch die Informationen von ALLEN Feldern weitergegeben werden (weil man ja 10 mal pro Tabelle klicken muss)
Hab gedacht, dass ich es irgendwie mittels Session lösen kann, habs aber bis jetzt noch nicht damit hinbekommen. :neutral_face:

Hoffe, ihr könnt mir weiterhelfen :wink:
Gruß!
Maddin

versuch mal mit “return false” zu erweitern:

Danke, mit dem ;return false; klappts.
(kurze Zusammenfassung der Frage: siehe ganz unten :slight_smile:)
Kann ich trotzdem auch irgendwie eine Session setzen, wenn auf ein Zahlen-Bild geklickt wird? Weil wenn man auf „Absenden“ klickt, sollen die angekreutzten Felder in eine MySQL DB eingetragen werden.

Hab gedacht dass es mit Sessions geht, weis aber nicht wirklich an welcher Stelle ich das „$_SESSION[‚1_1‘]“ setzen muss.
Weill wenn ich es so mache:

[code]<?php if (isset($_SESSION['1_1'])) { ?>


<?php } else { ?> ;" /> <?php } ?>[/code] wird $_SESSION['1_1'] immer, egal ob auf das Bild geklickt wurde oder nicht, abwechselnd gesetzt und gelöscht. D.h. ja, dass der Code immer ausgeführt wird, je nach dem ob $_SESSION['1_1'] gesetzt ist oder nicht. Der soll aber nur ausgeführt werden, wenn auch auf das Bild geklickt wurde, desswegen hatte ich das auch in den ONCKLICK Befehl mit reingebastelt :wink:

Dann habe ich es auch mal ohne ;return false; so versucht, dass immer abgefragt werden soll, welches Bild angeklickt wurde und danach die Sessions gesetzt werden sollen:
(‚reset1‘ = Name von Reset Button; ‚1_1‘ = Name von erstem Bild aus erster Tabelle)

[code]<?php if (isset($_POST[‚reset1‘]) {unset($_SESSION[‚1_1‘]); }
if (isset($_POST[‚1_1‘])) {$_SESSION[‚1_1‘]=„1“;} ?>

<?php if (isset($_SESSION['1_1'])) { ?> <?php } else { ?> <?php } ?> [/code] Funktioniert aber auch irgendwie nicht.

Kurzzusammenfassung:
:qst: Wie kann ich durch einen Klick auf ein Bild eine Session setzen :qst:
:qst: mit if (isset($_POST[‚1_1‘])) scheint es ja nicht zu funktionieren, um abzufragen, ob das bild geklickt wurde. Nur wie geht es dann? :qst:

Edit:
Fehler gefunden: Hab nicht gewusst, dass mnoch x- und y- koordinaten mitgeschickt werden.
So gehts jetzt:
if (isset($_POST[‚1_1_x‘]))

Schon der Ansatz ist nicht sehr sinnvoll.

Wenn die Bilder nur eine Auswahlmöglichkeit darstellen sollen, und davon jeweils mehrere gewählte werden sollen (Lottozahlen) - dann ist es unsinnig, jedes einzelne davon als Button umzusetzen, der das Formular abchickt.

Ein aus HTML-Sicht vernünftige Umsetzung wäre, für die 49 Auswahlmöglichkeiten 49 Checkboxen nebst entsprechender Beschriftung zu nehmen.
Die könnte man dann auch gleich besser benennen, mit name=“lottozahl[]”, dann kriegt man in PHP gleich ein Array mit den ausgewählten Werten geliefert - das sich sehr viel bequemer verarbeiten lässt als POST-Indices wie “1_1”, wo man sich den korrekten Key dann vorher noch mit Stringfunktionen zusammenbasteln muss.

JavaScript kann optional dazu genommen werden, um zu schauen, dass nicht mehr als 6 Zahlen ausgewählt werden. (Serverseitig muss das aber natürlich auf jeden Fall geprüft werden.)

Und wer dann keine Checkboxen “sehen” will im Formular, sondern doch lieber Bilder stattdessen - der informiert sich dann noch über Ansätze, Checkboxen durch eben so was dynamisch zu “ersetzen”, per CSS und/oder JS.

Dann werde ich es wohl doch lieber mit Checkboxen machen :wink: