Optionsfeld mit Javascript?

Hi,

ich war mal so frei, deine beiden Themen hier zusammenzuführen, und möchte dich bitten, bei auftretenden Folgeproblemen zu einem empfohlenen und genutzten Script kein neues Thema im Forum zu eröffnen.

mfg Maik
 
optionsfeld

Hallo,


Ich hatte vor einigen Monaten einen Code erhalten, bei den ein optionsfeld vorliegt mit weiteren Stufen.

Der Code funktioniert eigentlich, jedoch nicht zu 100%.
Sprich ist liegt ein Programmcode Fehler vor. Und zwar wenn man beispielsweise das Land Deutschland auswählt und als Stadt Düsseldorf dann wird beim Post nicht die Stadt Düsseldorf angezeigt, sondern irgend eine andere beliebige Stadt. Warum das so ist wundert mich total.

Code:

PHP:
<?php
$db = array(
  array('Zeugs',-1),
  array('Deutschland',0),
  array('Lebanon',0),
  array('Berlin',1), // libanon
  array('Hamburg',1), //libanon
  array('Köln',1), //libanon
  array('Frankfurt am Main',1), //libanon
  array('Düsseldorf',1), //libanon
  array('Bremen',1), //libanon
  array('Hannover',1), //libanon
  array('Stuttgart',1), //libanon
  array('Karlsruhe',1), //libanon
  array('Heidelberg',1), // libanon
  array('Beirut',2) // deutschland
);


     


function make_box($parent)
{
  global $db;
  if(@!isset($db[$parent]))return;
  
  $items=0;
  
  $box='<select name="box['.$db[$parent][0].']" onchange="request_data(this) ">
        <option value="-1">Auswahl</option>';
        
  
      foreach($db as $key => $arr)
        {
          if($parent==$arr[1] )
            {
              $items=1;
              $box.='<option value="'.$key.'">';
              $box.=htmlentities($arr[0]);
              $box.='</option>';
            }
        }
  
  $box.='</select>';
  
  return(($items) 
          ? $box
          : '<input type="submit">');
}

@print(make_box($_GET['box']));
  
?>


und diese Datei:

PHP:
<?php
$db=array(
  array('Zeugs',-1),
  array('Deutschland',0),
  array('Lebanon',0),
  array('Beirut',2), // deutschland
  array('Berlin',1), // libanon
  array('Hamburg',1), //libanon
    array('Köln',1), //libanon
	array('Frankfurt am Main',1), //libanon
	array('Düsseldorf',1), //libanon
	array('Bremen',1), //libanon
	array('Hannover',1), //libanon
	array('Stuttgart',1), //libanon
	array('Karlsruhe',1), //libanon
  array('Heidelberg',1) // libanon
);


     

//Ausgabe der Liste, erwartet als Parameter den Index der Liste in $db

function make_box($parent)
{
  global $db;
  if(@!isset($db[$parent]))return;
  
  $items=0;
  
  $box='<select name="box['.$db[$parent][0].']" onchange="request_data(this) ">
        <option value="-1">Auswahl</option>';
        
  
      foreach($db as $key => $arr)
        {
          if($parent==$arr[1] )
            {
              $items=1;
              $box.='<option value="'.$key.'">';
              $box.=htmlentities($arr[0]);
              $box.='</option>';
            }
        }
  
  $box.='</select>';
  
  return(($items)?$box:'');
}

//wurde dem Skript per GET ein Parameter "box" übergeben, 
//gibt es die entsprechende Liste aus

@print(make_box($_GET['box']));
  
?>


<?php 
// frage wieso, die falsche stadt beim POST übergeben wird
  @end($_POST['box']);
  @print($db[$_POST['box'][key($_POST['box'])]][0]);
  
  $stadt = @$db[$_POST['box'][key($_POST['box'])]][0];
  
  echo $stadt;
  
?>

Lass ich jedoch in der zweiten Datei das array weg, so wird nichts angezeigt. Das müsste ja heißen das nichts übergeben wird oder?


lg
 
Moin,

wozu diese 2 verschiedenen Arrays?
Benutzt du diese parallel?
Falls ja, dann ist es kein Wunder, dass du falsche Ausgaben bekommst, ich glaube auch nicht dass dir jemand gesagt hat, dass du 2 verschiedene Arrays nutzen sollst.
 
Hallo,

Erst mal geht in ordnung mit den 2 Themen, werd zukünftlich auch dran denken und mich bestens versuchen an den Forenregeln zu halten.

Zu mein Programm Problem hab ich nun das 2-te Array entfernt. Und weiß auch woran liegt.

Ich verfüge über 3 Dateien.

Datei Treffen_arrangieren ist die Datei in der das Treffen erstellt wird in dieser Datei wird ebenfalls mittels:

PHP:
<?php
  
  define('inside',true);
 require('box.php');
  print(make_box(0));

?>

die Datei box.php aufgerufen. In der box.php befindet sich das Optionsfeld.

Treffen_arrangieren wird nach treffen erstellen nach treffen_insert weitergeleitet damit das Treffen in der DB eingetragen wird. Das heisst in Treffen_insert befindet sich das:


PHP:
<?php 



// frage wieso, die falsche stadt beim POST übergeben wird
  @end($_POST['box']);
  //@print($db[$_POST['box'][key($_POST['box'])]][0]);
  
  $stadt = @$db[$_POST['box'][key($_POST['box'])]][0];
  
  
  if ( $stadt != "Beirut" ) { $land = "Deutschland"; } else { $land = "Libanon"; }



if ( $stadt != NULL && $land != NULL ) {
	
	echo $land;
	echo $stadt;
// DB EINTRAGEN
	}


?>

Jedoch wird kein Wert über der Variable $_POST übergeben dadurch erfolgt kein Eintrag in der DB.

Das Komische jedoch ist wenn man zu box.php weiterleitet, erkennt die $_POST die Variable die eingegeben wurde.


Soweit bin ich gekommen, hoffe nun ihr könnt mir sagen weshalb das so ist.
Danke

lg thehasso
 
Zurück