• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Formular Submit, Variable laden

krackmoe

Neues Mitglied
Möchte in folgendem Code, folgendes realisieren:

Habe ein Textfeld "address" wo ich etwas eingeben kann, bei onSubmit wird eine Javascript Funktion aufgerufen, wo ich diese "address" an ein hidden input Feld übergebe.

Ich schaffs aber nicht, mir diesen Wert im PHP Teil auszulesen, also den Wert von "versteckt".

Könnt ihr mit da bitte helfen?

Ich geh mal davon aus, dass wenn ich submit, er ja noch gar nicht weiß was drinnenstehen soll in diesem versteckten input Feld, darum bekommt er auch nichts übergeben, nur ich kanns anderweitig ja nicht befüllen, außer durch den Javascript Teil?

PHP:
<?php 
    error_reporting(E_ALL);
    require_once 'facebook.php';

    $facebook = new Facebook($appapikey, $appsecret);
    $user_id = $facebook->require_login();
    
    // Greet the currently logged-in user!
    $fb_user = $facebook->user;
    $about = $facebook->api_client->users_getInfo($fb_user,'first_name');
    echo "<p>Hallo ".$about[0]['first_name']."</p>";
    echo "Hier kannst du eine Adresse eingeben wo dich deine Freunde finden koennen!";
    
    
    $datei = "namen.txt";
    if(isset($_POST['go'])){
        $adresse = $_POST['versteckt'];
        echo "hey";
        $adresse = $adresse."\n";
        if(is_writable($datei)){
            $fp = fopen($datei,"a+");
            fwrite($fp,$adresse);
            fclose($fp); 
        }
        else{
            echo "Datei kann nicht beschrieben werden!";
        }
    }
    
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml">
  <head>
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>    
    <script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=ABQIAAAAjg9OG5soH02HBOwwwjcBDBSwpLD-z4Jh0RshNSd4UExvuVou4BT2olWERkxwR_0ijjxTHvBJbp3aJg"
            type="text/javascript"></script>
    <script type="text/javascript">
        var map = null;
        var geocoder = null;
        
        function initialize() {
              if (GBrowserIsCompatible()) {
                map = new GMap2(document.getElementById("map_canvas"));
                map.setCenter(new GLatLng(48.20833, 16.373064), 12);
                map.enableScrollWheelZoom();
                map.addControl(new GSmallMapControl());
                map.addControl(new GMapTypeControl());
                geocoder = new GClientGeocoder();
              }
        }
        function showAddress(address) {
            document.eingabe.versteckt.value = address;
              if (geocoder){
                geocoder.getLatLng(address, function(point){
                    if(!point){
                      alert(address + " not found");
                    } 
                    else{
                      map.setCenter(point, 13);
                      var marker = new GMarker(point);
                      map.addOverlay(marker);
                      marker.openInfoWindowHtml(address);
                    }
                  }
                );
              }
        }
    </script>
  </head>
  <body onload="initialize()" onunload="GUnload()">
    <form name="eingabe" action="<?php echo $PHP_SELF; ?>" method="post" onsubmit="showAddress(this.address.value); return false">
        <input type="text" size="60" name="address"/>
        <input type="submit" id="go" name="go" value="go" />
        <input type="hidden" name="versteckt" value="" />
        <div id="map_canvas" style="width: 650px; height: 500px"></div>        
    </form>
  </body>
</html>
 
Zuletzt bearbeitet:
Habe ein Textfeld "address" wo ich etwas eingeben kann, bei onSubmit wird eine Javascript Funktion aufgerufen, wo ich diese "address" an ein hidden input Feld übergebe.
Dann hast Du den selben Wert in zwei verschiedenen Feldern. Hmmm...hat das nen Sinn?

Ich schaffs aber nicht, mir diesen Wert im PHP Teil auszulesen, also den Wert von "versteckt".
Sieht doch gut aus, geht genauso wie den Wert von adress auszulesen.

Könnt ihr mit da bitte helfen?
Wobei? Wie ist die Fehlerbeschreibung?

Ich geh mal davon aus, dass wenn ich submit, er ja noch gar nicht weiß was drinnenstehen soll in diesem versteckten input Feld, darum bekommt er auch nichts übergeben, nur ich kanns anderweitig ja nicht befüllen, außer durch den Javascript Teil?
JavaScript läuft im Browser. D.h. das Script wird bei onSubmit aufgerufen. Das macht dann was. Erst danach wird das Formular an den Server geschickt. Dann erst wird der PHP-Interpreter ausgeführt. Wenn das JavaScript das Feld richtig befüllt hat, wird der Wert des Feldes natürlich auch ans Formular übergeben.

D.h. ich vermute den Fehler im JavaScript-Code.

Schau in die Fehlerkonsole nach JavaScript-Fehlern.
 
Mh.. ok der Umweg über das hidden Feld dürfte nicht der Beste sein.

Bin draufgekommen, dass wenn ich das return false weglasse, er mir ohne Probleme in die If Abfrage reinspringt und es mir an die txt anhängt die Adresse, nur wird showAddress nicht mehr aufgerufen.

Jetzt probier ichs gerade mit Ajax, es mir irgendwie zu übergeben.

Mit onclick="addAddress(this.address.value)" beim Formular.
Und dann
Code:
function addAddress(address){
	    	request.open("post", "add.php?data="+address, true);
			request.onreadystatechange = function(){}			 
			request.send(null);
		}
Und dann hier:
PHP:
<?php 
	$datei = "namen.txt";
	
	$adresse = $_REQUEST['address'];
	$adresse = $adresse."\n";
	if(is_writable($datei)){
		$fp = fopen($datei,"a+");
		fwrite($fp,$adresse);
		fclose($fp); 
	}
	else{
		echo "Datei kann nicht beschrieben werden!";
	}
?>
Weiß halt noch nicht ob mich das irgendwie zum Ziel führen wird... aber ich probier mal rum.

Falls ichs nicht hinkrieg, würd ich gern wieder fragen.
 
Bin draufgekommen, dass wenn ich das return false weglasse, er mir ohne Probleme in die If Abfrage reinspringt und es mir an die txt anhängt die Adresse, nur wird showAddress nicht mehr aufgerufen.
Das hab ich vorhin übersehen. das "return false" führt dazu, dass die Weiterverarbeitung gestoppt wird, das Formular also nicht abgeschickt wird!
Wenn Du es weglässt, wird die URL in "action" aufgerufen und die Formularinhalte übergeben.
In beiden Fällen wird aber die JavaScript-Funktion aufgerufen!
 
ich verstehe den vorgang garnicht.

jemand schreibt seine adresse in ein textfeld, per submit wird das ganze weiter gereicht und in einem hidden feld abgelegt, wozu braucht man da java-script oder ajax oder was auch immer.

nach dem submit in deinem formular ist deine adresse in einer $_POST oder $_GET variablen, die du an ein hidden feld übergibst

in php sieht da ca so aus:
Code:
<input type="hidden" name="weitergereicht" value="<?=$_GET['adresse']?>">
 
Zurück
Oben