Array nachträglich Sortieren

Thomas_Jung

Erfahrenes Mitglied
Hallo

Gibt es eine Möglichkeit das Array ($sql_columns_type) in die Reihenfolge von $find_fields zu sortieren?

PHP:
	$find_fields = 'benutzername type firma vorname name';
   	$find_fields_array = explode(" ", $find_fields);

    $sql = "SHOW COLUMNS FROM `".$database."`.`".$db_prefix.$table."`";
    $result_colums = mysql_query($sql,$conn);
    check_mysql(__LINE__,__FILE__,$sql);
    while ($columns = mysql_fetch_assoc($result_colums)){
    $field =  $columns["Field"];
    if (in_array($field, $find_fields_array)) {
    $sql_columns_type[] = $columns["Type"];
    }

Gruß Thomas
 
Hallo asipak4you

1
Die Werte von $find_fields_array werden mit
foreach($sort_fields_array as $key => $value)
in ein Drop-Down-Menü eingefügt
2
Nun möchte ich die Werte von $columns["Type"] in ein weiteres
Drop-Down-Menü einfügen. (In der gleichen Reihenfolge wie $find_fields_array)

Gruß Thomas
 
Hi,

Und warum lässt Du sie dir nicht gleich von MySQL sortieren?

in einem SHOW COLUMNS Statement? ;)

@ Thomas: Du könntest aber zumindest die Auswahl der Felder schon in der Abfrage beschränken:

SQL:
show columns from tabelle 
   where `Field` in ('benutzername', 'type', ...)

Sortieren kannst Du das dann mit [phpf]usort[/phpf]. Das Array $find_fields und [phpf]array_search[/phpf] in der Callback-Funktion sollten helfen.

LG
 
Hallo kuddeldaddeldu
Das Script macht ja eigendlich das was ich will.
Die Felder in der Tabelle sind folgendermaßen angelegt:

benutzer_id - type - benutzername (diese Reihenfolge möchte ich auch nicht ändern)

Ich möchte Sie aber in der Ausgabe (Drop-Down-Menü) so haben.

benutzer_id
benutzername
type

Ist das überhaupt möglich? Oder Denke ich zu Kompliziert?

Gruß Thomas

PHP:
    $sql_columns		= array();
    $sql_columns_type	= array();
	$sql = "SHOW COLUMNS FROM `".$database."`.`".$db_prefix.$table."` WHERE `Field` IN ('benutzer_id','benutzername','type')";
    $result_colums = mysql_query($sql,$conn);
    check_mysql(__LINE__,__FILE__,$sql);
    while ($columns = mysql_fetch_assoc($result_colums)){
    $sql_columns[] = $columns["Field"];
    $sql_columns_type[] = $columns["Type"];
    }

	echo '<select size="1">';
	foreach($sql_columns as $key => $value){
	echo '<option value="'.$value.'">'.ucfirst(strtolower($value)).'</option>'."\n";
	}
	echo '</select>';

	echo '<select size="1">';
	foreach($sql_columns_type as $key => $value){
	echo '<option value="'.$value.'">'.ucfirst(strtolower($value)).'</option>'."\n";
	}
	echo '</select>';
 
Hi

usort() und array_search() sind mir bekannt.

Allerdings habe ich keinen blassen Schimmer wie ich das mit der Callback-Funktion
anstellen soll.

Gruß Thomas
 
Zurück