Werteübergabe mit <input type="image">

Hallo zusammen,

habe folgendes Problem. Bei einer Warenkorbaktualisierung soll eine Grafik als Submit button herhalten. Der Code sieht so aus:

PHP:
echo "<input type=\"hidden\" name=\"update\" value=\"aktual\">";
echo "<input type=\"image\" src=\"../images/buttons/aktualisieren.gif\" width=\"93\" height=\"14\" onClick=\"javascript:document.forms[0].submit();\">";

Als Werte werden allerdings folgende übergeben:

Wert 1: y (hier müsste eigentlich eine Zahl hin)
Wert 2: 4 (das ist die Angabe die der user macht um eine neue Menge im Warenkorb zu übergeben)

Ich weiss wohl, dass bei Inputfeldern als image die Klickposition x/y übertragen wird. Aber wie kann ich das umgehen, sodass die richtigen Werte übergeben werden?

Alternative mit link wäre auch denkbar. Allerdings weiss ich nicht genau wie:

PHP:
echo "<a href=\"kd_warenkorb_aktualisieren.php?$QUERY_STRING\">";
... funktioniert leider nicht ...

Danke und Gruss

Andy
 
Hi

Das problem hatte ich auch mit einer Seite bei der ich Grafiken als Submit hatte.
Habe das Problem gelöst in dem ich eine Variablen abfrage gemacht habe.

ich habe die Form auf action="<? echo $PHP_SELF"?action=action" ?> gesetzt und mit

unset ($_POST['x']);
unset ($_POST['x']);

die xy werte gelöscht dann musses funktioklappen;)
 
Hey AcidOne,

cool ... hast Du kurz einen code schnippsel ... visuell is besser ...

Hanx a lot

ND

P.S.: Es funktioniert wie Du sagtest, es wird aber kein Wert übergeben!

Warum?
 
Zuletzt bearbeitet:
Hier iss en Schnipselchen ;)

also die Action aus der Form heisst <? echo $PHP_SELF"?mod=bestellen" ?>

PHP:
if ($mod=="bestellen") {

// Die Werte aus der Grafik löschen 

	unset($_POST['x']); 
	unset($_POST['y']);
				
	function random_pass($num) 
	    { 

        mt_srand((double)microtime()*1000000); 

       
        while (strlen($pass) <= $num) 
		{ 
            $i = chr(mt_rand (0,255));  
            if (eregi("^[a-z0-9]$", $i)) 
                $pass = $pass.$i;  
		} 

 
        return ($pass);  
		}
	$uni=random_pass(60);
	$insert_abo="INSERT INTO newsletter (vorname, nachname, plz, ort, tele, email, uni) VALUES ('$Vorname', '$Nachname', '$PLZ', '$Ort', '$Telefon', '$Email', '$uni')";
        $succeed_insert=mysql_query($insert_abo);
					
}

hoffe das hilft dir nu en bisschen
 
O.K. ... dachte ich mir, dass Du's so machst. Habe es auch so eingebaut. Problem ist folgendes:

Es werden Werte Paare wie 1=3&2=5 im Header übergeben. bevor die Aktualisierung losgeht wird folgendes geprüft:

PHP:
foreach($HTTP_GET_VARS as $varname => $value)
    $parameters[$varname] = clean($value, 5);
    unset ($parameters['x']); 
    unset ($parameters['y']);

Schön ist, dass y weg ist. Allerdings wird überhaupt kein Wert ausser y übergeben. Wenn ich einen Submit Button nutze gehts ...

Versteh ich nicht. Kann es sein, dass ein input mit image keine Variablen übergene kann? Komisch nur, dass er ja einen Wert übergibt nämlich:

Wert 1: y
Wert 2: 8

Das paar heisst also y=8 und damit kann die DB nix anfangen ...

*GRÜBEL*

Gruss
 
O.K. hier is er:

$itemname hat momentan den Wert y . Das ist die Warenkorbposition.
$itemvalue den Wert, den der user im Warenkorb in einem textfield zur Aktualisierung eingibt. Dieser wird wie gesagt übergeben. Aber für $itemname wird eben y übergeben.

Das Formular wird an eine Weiterleitung geschickt (extra Datei):

PHP:
Weiterleitung:

foreach($HTTP_GET_VARS as $varname => $value)
	$parameters[$varname] = clean($value, 20);

if (!empty($parameters["update"]))
{
	header("Location: kd_warenkorb_aktualisieren.php?$QUERY_STRING");
	exit;
}
else 
{
	echo "Fehler!";
}


PHP:
Warenkorb Aktualisieren:
<?PHP
include 'include.inc';

set_error_handler("errorhandler");

session_start();

foreach($HTTP_GET_VARS as $varname => $value)
    $parameters[$varname] = clean($value, 5);
	// unset ($parameters['x']);
    // unset ($parameters['y']);
    // echo "Varname: $varname und Value: $value<br>";
	
if (empty($parameters["update"]))
{
	session_register("message");
	$message = "Falsche Parameter sind übergeben worden.";
	header("Location: $HTTP_REFERER");
	exit;
}

if(!($connection = @ mysql_connect($hostname,$user,$password)))
	showerror();
if(!mysql_select_db($datenbank, $connection))
	showerror();
	
foreach($parameters as $itemname => $itemvalue)
{
	if($itemname != "update")
	{
		if(ereg("^[0-9]{1,4}$", $itemname))
		{
			if(ereg("^[0-9]{1,3}$", $itemvalue))
			{
				if($itemvalue == 0)
				$anfrage = "DELETE FROM warenkorb WHERE kd_nummer = -1
							AND bestell_nummer = $order_no
							AND warenkorb_id = $itemname";
				else 
				$anfrage = "UPDATE warenkorb SET menge = $itemvalue WHERE kd_nummer = -1 
							AND bestell_nummer = $order_no
							AND warenkorb_id = $itemname";
				
				if(!(@ mysql_query($anfrage, $connection)))
					showerror();
			}
			else 
			{
				session_register("message");
				$message = "Es gab beim Aktualisieren einen Scheiss-Fehler. Bitte versuchen Sie es nochmals.";
			}
		}
		else 
		{
			session_register("message");
			$message = "Es gab beim Aktualisieren einen Tollen Fehler. Bitte versuchen Sie es nochmals.";
			$message .= "Wert 1: ".$itemname."Wert 2: ".$itemvalue;
		}
	}
}

$anfrage = "SELECT count(*) FROM warenkorb WHERE kd_nummer = -1 AND bestell_nummer = $order_no";

if(!($ergebnis = @ mysql_query ($anfrage, $connection)))
	showerror();
	
$zeile = mysql_fetch_array($ergebnis);

if ($zeile["count(*)"] == 0)
{
	$anfrage = "DELETE FROM bestellungen WHERE kd_nummer = -1 AND bestell_nummer = $order_no";
	if (!(@ mysql_query($anfrage, $connection)))
		showerror();
	
		session_unregister("order_no");
}

header("Location: kd_warenkorb.php");
exit;
?>

Haste ne Idee...? Wie gesagt, würde die Daten auch mit einem link weitergeben .... weiss eben nur nicht wie!

Hanx
 
Der Query String

ich sehe das du die daten über den die Url abfragst. Warum machste des net mit Post. Also ich hab eben noch ma in unserem Archiv nachgeschaut und wir haben auch nen Shop der Die Werte über en Image Button weitergibt. Der arbeitet allerdings mit dem Post.

Wäre vielleicht ma ne überlegung wert. Dann haste auch net das Problem mit der überflüssigen Var y=8 ;

Überlegs mal und probs ma aus;)

Ansonsten müsste ich mich jetzt ma ne halbe stunde länger durchwuseln bis ich ne Idee hätte wie mans noch lösen könnte
 
Hey AcidOne,

Denkfehler von mir! Das ist völlig O.K. so mit unset, denn ich speichere ja nur die Anzahl der Produkte und den Einzelpreis eines Produktes in der DB. Berechnet wird dann einfach durch eine Multiplikation der beiden Faktoren und als Ausgabe angezeigt !

Also, geht alles ...

Danke Mann .... hast mir sehr geholfen ...

Falls jemand Interesse an der Lösung hat einfach Bescheid sagen

Grüzze

ND
 
Zurück