[Javascript][PHP] OnClick event + Formular verschicken

Übersicht Andere Programmiersprachen Allgemein

Neue Antwort erstellen

Triology

Betreff: [Javascript][PHP] OnClick event + Formular verschicken

BeitragDi, März 05, 2013 18:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey,

Letzte Herbstferien hab ich mal ein Browsergame angefangen. Es ging auch recht gut voran und der Grundbau stand recht schnell. Einige Systeme, wie ein News-/Log- und auch ein Character- (+erstellungs)system funktionieren auch schon recht gut. Leider bin ich an dem von map zu Map wechseln gescheitert. Klingt dumm, ich weiß. Maps sind 800*600 px große Bilder, die als usemap fungieren und per txt-datei ausgelagerte koordinaten zum bestimmen der Areas haben.
Ich wollte, dass man, wenn man auf diese Area klickt (per OnClick event mit javascript, gibts da andere methoden?), auf eine andere Map kommt. Ich habe eine $_POST["map"], in der die aktuelle map id gespeichert ist, welche ich dann mit Daten aus einer txt datei vergleiche. Maps werden schon richtig angezeugt. Mein Problem ist halt, dass ich nicht weiß, wie ich die $_POST variable mit javascript ändern kann. Habs schon mit verdammt vielen befehlen versucht, hta aber bichts funktioniert. Man kann auch auf die Area klicken, nur ändert sich dann nichts.

Hoffe, ich hab das Problem ordentlich darstellen können. Code kann ch gerade leider nicht posten, reiche aber (hiffentlich) bald was nach.

Wenn ihr euch das Problem mal anschauen wollt: questlegend.bplaced.net . Einfach registrieren und anmelden. Gibt noch keine bestätigungsmail.

MfG,
Triology

Eingeproggt

BeitragDi, März 05, 2013 19:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Hmm, frei von der Leber weg wenn ichs richtig verstanden habe:

Code: [AUSKLAPPEN]
<form id="myform" action="" method="post">
<!-- ... -->
<input type="hidden" name="map" value="" />
</form>

<script type="text/javascript">
function onclickCallback() {
  form=document.getElementById('myform');
  form.map.value="hier kannst du machen was du willst und hast es nachher in php in $_POST['map']";
  form.submit();
}
</script>


Ist natürlich nicht getestet sondern soll nur veranschaulichen wie ich die Parameter mit JS verändern würde die anschließen bei onclick bzw. submit an php gesendet werden.

mfG, Christoph.
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

Triology

BeitragDi, März 05, 2013 23:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielen Dank,
hatte auch schon mal einen ähnlichen Lösungsansatz, der allerdings auch nicht funktionierte. Bin jetzt schon ne ganze Weile am tüfteln, bekomm es aber irgendwie immernoch nicht zurecht.
Hier ist mal der Code, er ist allerdings schon ein bisschen älter und teilweise komm ich auch nicht mehr ganz so gut zurecht. Kommentare hab ich leider nur recht wenig gemacht:

Code: [AUSKLAPPEN]

<script language="JavaScript1.2" type="text/javascript">
    function submit_form(){
      form = document.getElementByName('map_change');
      form.map_next_map.value = "2";
      form.submit() 
    }
</script>

<?php

If ($_SESSION["session_char"]){

  //Formular
  echo "<form name='map_change' action='' method='post'><input type='hidden' name='map_next_map' value='" . $ausgang_info[0] . "'></form>";
 
  // Probe
  if ($_POST["map_next_map"]){
    echo "Map wechseln?";
    $_SESSION["session_map"] = $_POST["map_next_map"]; //Map aktualisieren
  }else{
    echo "Map nicht gewechselt!";
  }
 
  $map_file_pfad = "MFX/" . $_SESSION["session_nation"] . "/" . $_SESSION["session_gebiet"] . "/Maps/" . $_SESSION["session_map"] . ".TXT"; //Laden der Map-Datei
  $zeile = implode("", file($map_file_pfad));
  $inhalt = explode(";",$zeile); //Informationen teilen
 
  $info = explode("|",$inhalt[0]);
  $ausgang = explode("|",$inhalt[1]);
 
  $map_pic_pfad = "MFX/" . $_SESSION["session_nation"] . "/" . $_SESSION["session_gebiet"] . "/Maps/GFX/" . $info[2]; //Map-Bild Pfad generieren
  echo "<img id='map_pic' src='" . $map_pic_pfad . "' alt='" . $info[1] . "." . $info[3] . "' usemap='#map'>";  //Map zeichnen
 
  echo "<map name='map'>";
  foreach ($ausgang as $ausgang2){  //Alle anklickbaren Bereiche durchgehen
 
    $ausgang_info = explode(",",$ausgang2); //Koordinaten teilen
    $x = $ausgang_info[1];
    $y = $ausgang_info[2];
    $x2 = $x + $ausgang_info[3];
    $y2 = $y + $ausgang_info[4];
    echo "<area shape='rect' onClick='submit_form();' coords='". $x . "," . $y . "," . $x2 . "," . $y2 . "' />"; //Area erstellen   
    echo $x . "," . $y . "," . $x2 . "," . $y2;
 
  }
  echo "</map>";
         
 
}else{

  echo "Bitte wähle zuerst einen Charakter aus!";

}                                                       

?>


Das ganze wird natürlich in eine HTML datei eingebettet.

Eingeproggt

BeitragDi, März 05, 2013 23:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Eine gaaaanz unpassende Anmerkung die du aber auf jeden Fall machen solltest, egal ob sie dich in dem Problem weiterbringt oder nicht:
Verwende ' für alle in php verwendeten Strings und " für die HTML-Attribute. Also ändere
Code: [AUSKLAPPEN]
echo "<form name='map_change' action='' method='post'>...";

in
Code: [AUSKLAPPEN]
echo '<form name="map_change" action="" method="post">...

Das macht deinen Code geringfügig schneller (hab ich zumindest mal so gelesen über ' und " in php) und vor allem HTML-konform so dass die Browser den Code eher "fressen".

Und zu deinem Problem: "funktioniert nicht" ist halt leider eine Aussage die man schwer verwerten kann. Mach dich selber ans Debuggen. Welchen Wert hat $_POST["map_next_map"] genau?
Oder schau mal in die Fehlerkonsole deines Browsers.
Code: [AUSKLAPPEN]
form = document.getElementByName('map_change');

ich bilde mir nämlich ein dass es diese Funktion nicht gibt. Wenn du Glück hast gibt es getElementsByName aber glaube auch nicht in allen Browsern. Wenns daran liegt, versuchs wie in meinem Vorschlag mit id.
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

Neue Antwort erstellen


Übersicht Andere Programmiersprachen Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group