PHP Combobox mit mehreren Unterebenen (Unterschiedlich viele)

Registriert
Apr. 2011
Beiträge
192
Hallo, wieder mal brauche ich eure Hilfe ;)
ich habe scho lange gegoogelt aber ich finde nichts was in mein Schema passt...

Die Gegebenheiten:

MySQL-Datenbank:

ID | ID_MAIN | NAME

PHP

User mit aktiviertem JavaScript, JQuery.

Grundsätzlich möchte ich eine MySQL-Filterung. Die Filterung kann über meine Comboboxes eingestellt werden.

BSP:

Computer | Prozessor | Intel | i7

aber auch:

Computer | Prozessor | keine weitere Auswahl

Derzeitige Funktion zum erstellen meiner Combobox.

PHP:
function create_tree_cb($id)
	{
		echo "<select name=cb_tree$id id=cb_tree_id_$id>";
		$sql = "SELECT * FROM object_tree WHERE ID_MAIN = '$id'";
		$db_erg = mysql_query( $sql );
		mysql_query("SET NAMES 'utf8'");
		echo "<option value=$id>Neue Ebene</option>";
		if (!$db_erg )
		{
		  die('Ungültige Abfrage: ' . mysql_error());
		}
		else
		{
			if (mysql_num_rows($db_erg))
			{
				while ($zeile = mysql_fetch_array( $db_erg, MYSQL_ASSOC))
				{	
					echo "<option value=$zeile[ID]>$zeile[NAME]</option>";
				}
			}
		}
		echo "</select>";
		
	}


Aufruf:

PHP:
echo "<div id=combobox>";
create_tree_cb(0);
echo "</div>";


JavaScript:

PHP:
		$(document).ready(function()
		{			
			$('#cb_tree_id_0').change(function()
			{
				$('#cb_tree_id_1').fadeOut();
				//$('#loader').show();
				$.post("ajax.php",
				{
					id_main: $('#cb_tree_id_0').val(),
				}, function(response)
				{
					setTimeout("finishAjax('cb_tree_id_1', '"+escape(response)+"')", 400);
				});
				return false; 
			});
		});

		function finishAjax(id, response)
		{
		  //$('#loader').hide();
		  $('#cb_tree_id_1').show();
		  $('#'+id).html(unescape(response));
		  $('#'+id).fadeIn();
		}


Problem:
1. Es tut sich garnichts! ;)
2. 1. ist mir eig. klar weil ich ja nicht deffiniere wohin meine Combobox soll. - wie mache ich das?
3. Wie realisiere ich das ich weiß welche Combobox weg muss - welche die mit dem höchstem Level ist?
Variabledeffinieren ?? - aber wie bekommt diese dann mein Java zum ausblenden - hier auchmitzählen?

DANKE!!
LG
Lukas
 
Welche Wege, es umzusetzen, hast du denn bislang ausgeschlossen? Irgendwie kann ich nicht glauben, das dir einfach nix einfällt, wie das gehen soll. :)

Ohne mich jetzt in dein halbfertiges Gerüst umständlich hineinzudenken (ich hasse Puzzle, wo man nur die hälfte sieht und den Rest mangels Teile erraten müsste)... wenn du es statisch hälst mußt du halt die Auswahl des Komboauswahlfelds als Formulardaten übergeben und entsprechend antworten. SelfHTML hat da passende Beispiele. Wenn es dynamisch per AJAX geschehen soll, mußt du die Werte vom Komboauswahlfeld ebenfalls rüberreichen, aber mit dem AJAX und natürlich nicht mehr mit den Formulardaten. Auch hier gibts dutzende Beispiele im Netz - sowohl wie man Parameter per AJAX übergibt als auch wie man die aktuelle Auswahl vom Komboauswahlfeld ausliest. Wo ist dein Problem?

BTW: Zu 3. - Bislang hast du nur von JavaScript, AJAX und PHP geschrieben. Warum willst du hier plötzlich dein Leben unbedingt schwerer machen und Java dazunehmen?
 
Ich weiß nicht welcher Teufel mich da geritten hat das Java geschrieben habe.. das heißt natürlich JavaScript!

Mein Problem ist: wie weiß ich von welcher Combobox der Wert ausgelesen werden muss? Einfach in PHP eine Variable deffinieren? Ebenso in Javascript mit dem Ausblenden.
Ajax sollte ich mir wsl noch mal Beispiele ansehen. Formular-Vorgänge sind mir natürlich klar.
 
Du findest in jedem Beispiel, welches mehr als eine einzige Kombobox nutzt, bestimmt die Lösung. Wenn es mehr als ein einziges Feld, gleich welcher Art, nutzt, dann sollte es eigentlich auch schon deine Lösung beinhalten.

Ein weiterer Tipp: Man kann in HTML Namen vergeben, um Elemente direkt anzusprechen. Diese werden auch bei einer regulären Übergabe von Formulardaten genutzt. Schon meine Urgroßoma hat ihren Kindern Namen gegeben, um sie von ihren Geschwistern unterscheiden zu können. ;-)
 
Hi,

Nur als Anregung:


Code:
<?php

function create_tree_cb($id){

  try{


    $dbh = new PDO("mysql:host=127.0.0.1;dbname=DATABASE", $user, $passwd);    
    $sth = $dbh->prepare('SELECT * FROM object_tree WHERE ID_MAIN = ?');
    $sth->execute(array($id));
    
    foreach ($sth as $value) {

      $options[] = array('id' => $value[0], 'name' => $value[1]);

    }

    if(!$options){ header( 'Location: /errorhandler.php?error=4' ); exit(); }
    else{ return $options; }

  }

  catch (PDOException $p) { 

    header( 'Location: /errorhandler.php?error=4' );

  }


}

$options = function create_tree_cb(0);

?>


<!-- html -->

<?php if($options) : ?>

<div id="combobox">

<select name="cb_tree<?php echo $id; ?>" id="cb_tree_id_<?php echo $id; ?>">

<option value="<?php echo $id; ?>">Neue Ebene</option>

<?php foreach ($options as $key => $value) : ?>

  <option name="select_<?php echo $key['id']; ?>" value="<?php echo $key['id']; ?>" ><?php echo $key['name']; ?></option>

<?php endforeach; ?>

</select>

</div>

<?php endif; ?>
Ergänzung ()

Meines wissens nach müssen ids mit einem Buchstaben beginnen. #1 ist keine gültige id. #a_1 dagegen schon.
 
Danke für die Anregungen waren jedoch noch nicht wirklich ziehlführend..

Ist es möglich nach einer div mit einer gewissen ID etwas mittels AJAX einzufügen?
 
Zurück
Oben