j4nk3y: Merkwürdige variablen weiterleitung

Nabend zusammen,

ich versuche gerade ein etwas nerviges und mir unverständliches Problem zu lösen.

Ich habe ein Formularfeld mit einigen eingabefeldern und 2 radio buttons :

<form action="../functions/php/a.php" method="post">			
	<fieldset>
		...
		<input type="radio" name="shape" value="onespherical" />...
		<input type="radio" name="shape" value="twospherical" />...
		<input type="submit" name="submit" value="Erstellen" />
	</fieldset>
</form>

Das Formular schickt also seine Daten an a.php in der in folgendes steht:

if(isset($_POST['shape']))
{
	if($_POST['shape'] == "onespherical")
	{
		$shape = "onespherical";
		
... // Hier werden ein paar werte berechnet
		
		$center_1 = array("x" => "$x", "y" => "$y", "z" => "$z");

	}
	elseif($_POST['shape'] == "twospherical")
	{
		$shape = "twospherical";
		
... // Hier werden ein paar werte berechnet

		$center_1 = array("x" => "$x", "y" => "$y", "z" => "$z");
		
... // Hier werden ein paar werte berechnet

		$center_2 = array("x" => "$x", "y" => "$y", "z" => "$z");

	}
	echo $shape."<br><br>";
	print_r($center_1);
	echo "<br><br>";
	print_r($center_2);
}
else
{
	header("Location: ../../html/x.php");
	exit();
}

...

include_once 'b.php';

Soweit so gut. Also je nachdem welchen radio button ich ancklicke und die Daten weiter gebe, werden die variablen $shape und $center_ gesetzt.

in a.php rufe ich per include_once, ein paar zeilen weiter unten, b.php auf. In der steht folgendes:

while($i <= $foobar)
{
	
	if($shape = "onespherical")
	{
		
		$center = $center_1;
	}
	elseif($shape = "twospherical")
	{
		if(mt_rand(0,1) === 1)
		{

			$center = $center_1;
		}
		else
		{

			$center = $center_2;
		}
	}
		
	print_r($center);
	echo "<br><br>".$shape."<br><br>";
}

So, also wenn ich "onespherical" anklicke und das formular abschicke ist alles gut und es funktioniert so wie es soll. Allerdings wenn ich "twospherical" anklicke kriegt a.php das mit und gibt auch mit dem echo und den print_r $center_1 und $center_2 aus allerdings b.php nicht, da bleibt auch $shape immer "onespherical". Und jetzt wirds noch wilder. wenn ich b.php folgendermaßen ändere:

while($i <= $foobar)
{
	
	if($shape = "onespherical")
	{
		
		$center = $center_2; // hier geändert!!
	}
	elseif($shape = "twospherical")
	{
		if(mt_rand(0,1) === 1)
		{

			$center = $center_1;
		}
		else
		{
			
			$center = $center_2;
		}
	}
		
	print_r($center);
	echo "<br><br>".$shape."<br><br>";
}

Dann macht das script das was es soll nämlich zwischen beiden Zentren hin und herspringen. trotzdem bleibt $shape = "onespherical".

Ich verstehs nicht, vorallem weil alle anderen variablen den übergang von a.php zu b.php einwandfrei hinkriegen,... ich mein warum sollten sie ja auch nicht, alles was global in a.php zur verfügung steht sollte auch global in b.php zur verfügung stehen.

Oder hab ich irgendwo einen denkfehler oder einen schreibfehler gemacht.

Danke für eure Hilfe!

Gruß

Jo

akzeptierte Antworten

  1. Hallo,

    	if($shape = "onespherical")
    

    Schau dir die Zeile (und die dazugehörige ifelse-Zeile) nochmal genau an. Tipp: da fehlt ein Gleicheitszeichen …

    Gruß,
    Tobias

    1. Hey,

      	if($shape = "onespherical")
      

      Schau dir die Zeile (und die dazugehörige ifelse-Zeile) nochmal genau an. Tipp: da fehlt ein Gleicheitszeichen …

      Ich geh krachen 0o, dass ist mir garnicht aufgefallen, läuft... vielen Dank!

      Gruß

      Jo

      1. Tach,

        	if($shape = "onespherical")
        

        Schau dir die Zeile (und die dazugehörige ifelse-Zeile) nochmal genau an. Tipp: da fehlt ein Gleicheitszeichen …

        Ich geh krachen 0o, dass ist mir garnicht aufgefallen, läuft... vielen Dank!

        für die Zukunft: https://forum.selfhtml.org/self/2016/jan/23/primitive-javascript-funktion-laeuft-amok/1659313#m1659313

        mfg
        Woodfighter

      2. Hi,

        	if($shape = "onespherical")
        

        Schau dir die Zeile (und die dazugehörige ifelse-Zeile) nochmal genau an. Tipp: da fehlt ein Gleicheitszeichen …

        Ich geh krachen 0o, dass ist mir garnicht aufgefallen, läuft... vielen Dank!

        Kleiner Tipp: andersrum - das Literal links, die Variable rechts:

        if ("onespherical" = $shape)
        

        dann wird das nicht stillschweigend zugewiesen, sondern gibt ne Fehlermeldung, weil die Zuweisung ans Literal nicht möglich ist.

        cu,
        Andreas a/k/a MudGuard