MySQL, Select-Box und readdir

travelsnake

Mitglied
Hallo Gemeinde,

ich habe ein kleines Problem. Als erstes lese ich die Daten aus der Datenbank aus und speicher sie in Variablen

PHP:
## Mit MySQL-Datenbank verbinden ##
	$_DB = mysql_connect($_DB_HOST, $_DB_USER, $_DB_PASS)
	or die("Keine Verbindung möglich: " . mysql_error());
	
	## Datenbank auswählen ##
	mysql_select_db($_DB_BASE, $_DB);
	
	## Datentabelle auswählen ##
	$dz = mysql_query("SELECT * FROM medienobjekte");
	
	## Daten aus Tabelle auslesen ##
	while ($ds = mysql_fetch_object($dz)) {
		$_MED_ID_[]		=	$ds -> id;
		$_MED_TYPE_[]		=	$ds -> type;
		$_MED_AIVA_[]		=	$ds -> aiva;
		$_MED_COUNT_[]	=	$ds -> count;
		$_MED_FILE_[]		=	$ds -> file;
		$_MED_WIDTH_[]	=	$ds -> width;
		$_MED_HEIGHT_[]	=	$ds -> height;
		$_MED_TIME_[]		=	$ds -> time;
	}
	
	## Datenbank schließen ##
	mysql_close($_DB);

funktioniert auch wunderbar. Danach lese ich mein Verzeichnis aus und übergebe die Daten an die Select-Box

PHP:
$dir = opendir('./testmedien');

	$select = "<select name='file'>\n";
	$select .="\t<option value=' '>&nbsp;</option>\n";
	$files = array();

	while($file = readdir($dir)){
		if($file != '.' && $file != '..')
		$files[] = $file;
	}

	$counted = count($files);
	$counted = $counted - 1;
	
	
	for($i = $counted; $i != -1; $i--)
	{
	$select .= "\t<option value='$files[$i]'>$files[$i]</option>\n";
	}

	$select .= "</select>\n";

	closedir($dir);

funktioniert auch, aber nicht wie ich es mir vorstelle. Die Daten werden alphabetisch absteigend sortiert :eek:

1. Was muss ich ändern, damit die Daten in der Select-Box aufsteigend sortiert werden?
2. Wie kann ich die Select-Box so ausgeben, dass eine bereits in der Datenbank hinterlegte Datei ($_MED_FILE_[]) per selected='selected' vorausgewählt wird? In der Datenbank stehen max. 10 Dateinamen.

PS: ich bin noch Anfänger. Bitte erschlagt mich nicht gleich mit Fachbegriffen ;)

LG
 
Hi,

zu 1.: Du kannst deine Abfrage sortieren lassen, in dem du an deinen Befehl "ORDER BY spaltenname ASC" (bzw DESC für absteigend) anhängst.

zu 2.: Ich bin mir nicht sicher, ob ich dich richtig verstehe, aber: Wenn du alle Dateinamen, die sowohl im Array $files, als auch im Array $_MED_FILE_[] vorkommen vorselektieren willst, dann sieh einfach in deiner $files-Schleife nach, ob der aktuelle Wert in beiden Arrays vorkommt (z.B. per in_array()) und wenn ja, gibst du es mit aus. :)

Gruß

.:lay-z-cow:.
 
Hi lay-z-cow,

zu deinem ersten Tipp:

Es handelt sich dabei um die Daten aus dem Ordner Testmedien. Diese werde in der Select-Box ausgegeben. Sie kommen nicht aus der Datenbank.

zu deinem zweiten Tipp:

Die Theorie ist mir klar, aber ich weiß nicht wie ich es praktisch umsetzen soll. Das müsste dann doch über eine if-Anweisung gehen, aber dann hätte ich doch den Wert (falls er schon in der Datenbank vorhanden ist) doppelt :confused:

LG
 
Heute ist wieder Array-Tag, so wie jeden Mittwoch. Wir haben doch Mittwoch oder?

Bei deinem ersten Problem geb ich dir den Tip erst alle Dateinamen in ein Array zu packen und dieses dann mit arsort oder ähnlichem zu sortieren.

Für das zweite Prob ist mein Kopf noch zu Simpsons-geschädigt um das zu verstehen.
 
Ich habe es jetzt folgendermaßen gelöst

PHP:
<select>
		<optgroup label="Ausgewählte Datei">
		<option selected='selected' value='<?PHP echo $_MED_FILE_[1]; ?>'><?PHP echo $_MED_FILE_[1]; ?></option>
		</optgroup>
		<option value=''>&nbsp;</option>
		<optgroup label ='Vorhandene Dateien'>
<?PHP 
	$dir = opendir('./testmedien');
	
	while($file = readdir($dir)){
		if($file != '.' && $file != '..' && $file != $_MED_FILE_[1])
		$files[] = $file;
	}
	
	$anzahl = count($files);
	
	for ($i = 0; $i < $anzahl; $i++) {
		echo "\t<option value='$files[$i]'>$files[$i]</option>\n";
	};
	closedir($dir);
?>
		</optgroup>
	</select>

Habt ihr Verbesserungsvorschläge?

LG
 
Zurück