No Database Selected?

ThePhantom

Grünschnabel
Hallo Leute,

bin ein Neuling hier und habe gleich meine erste Frage ;)
Nachdem ich nun diverse Foren etc. durchsucht habe und noch immer nicht wirklich eine Antwort gefunden habe poste ich mein Problem einfach mal:

PHP:
function makedropdown_t($query, $select_name, $connection, $preselect)
{
	$result = @ mysql_select_db ($db_name, $connection) or
		die (mysql_error());
	echo "<select name=\"$select_name\">\n";
		while($row = mysql_fetch_row($result))
		{
		          echo "<option value=\"";
		          echo $row[0];
			
		if($row[1] ==  $preselect)
		           echo "\" selected>";
		else
		           echo "\">";
		           echo $row[1];
		           echo "</option>\n";
		}
	                 echo "<select>\n";
}

Weiter unten auf der Seite sollte dann die Ausgabe erfolgen:

PHP:
<?
     echo "<br>Tabellenauswahl:<br>";
     $query = "SHOW tables FROM test";
     makedropdown_t($query, "columns", $connection, "");
?>

Wenn ich die Seite nun aufrufe schreibt er mir immer das keine Datenbank ausgewählt wurde obwohl diese ja definiert ist und ich habe nun keine Ahnung mehr wo der Fehler liegen könnte, vermutlich liegt die Lösung auf der Hand, je länger man sucht umso weniger Fehler findet man ja bekanntlich da man überhaupt nichts mehr erkennt dann..

Ich hoffe das jemand den Fehler entdeckt und mir weiterhelfen kann :)
 
Wenn ich' srichtig sehe ubergibst du den namen der db zwar in deinem Query aber weswegen der fehler auftrit ist wohl das $db_name in select _db leer ist.
Prüf das mal mit var_dump($db_name);
solltest den namen der db als parameter der funktion mit übergeben.
Hoffe, das stimmt - so auf die Schnelle
cu
 
Ja, ganz richtig,
entweder du übergibst den Datenbanknamen an die Funktion,
oder du setzt an den anfang der Funktion:

PHP:
global $db_name;

d.h. per Global die Variable mit dem Datenbanknamen innerhalb der Funktion verfügbar machen.

mfG Larsi
 
Danke für die Antworten :)
Leider funktioniert die Abfrage trotz der Tips noch immer nicht :rolleyes:

Ich poste hier den aktuellen veränderten Code nochmal (Das was ich bereits versucht habe wurde wieder rausgelöscht)

PHP:
	$db_host="xxx";
	$db_name = "xxx";
	$db_user="xxx";
	$pass="xxx";
	$connection = @mysql_connect($db_host, $db_user, $pass) or
			die ("Verbindung zur Datenbank nicht möglich");
		@mysql_select_db($db_name, $connection) or
			die ("Datenbank $db_name kann zur zeit nicht ausgewählt werden");
			
	function makedropdown_t($query, $select_name, $connection, $preselect, $db_name="xxx")
{
	var_dump($db_name='xxx');
	$result = @ mysql_select_db ($db_name='xxx', $connection) or
			die (mysql_error());
		echo "<select name=\"$select_name\">\n";
			while($row = mysql_fetch_row($result))
		{
			echo "<option value=\"";
			echo $row[0];
			
			if($row[1] ==  $preselect)
				echo "\" selected>";
			else
				echo "\">";
				echo $row[1];
			echo "</option>\n";
		}
	echo "<select>\n";
}
var_dump zeigt mir nun die Anzahl der Tabellen in der DB an, allerdings übergibt er sie noch immer nicht, das Dropdown bleibt weiterhin leer :rolleyes:


Ausgabe:
PHP:
<td align="center">
			<?
			echo "<br>Tabellenauswahl:<br>";
			$query = "SHOW tables FROM $db_name='xxx' ";
			makedropdown_t($query, "tables", $connection, $db_name='xxx', "");
			?>

Vielleicht hat noch jemand eine Idee was ich nicht auf die Reihe kriege bzw. was schieflaufen könnte.
 
Mitlerweile funktioniert es, hier der Code wie es nun klappt ;)

PHP:
	function makedropdown_t($query, $select_name, $connection, $db_name='xxx', $preselect)
{
	/*var_dump($query, $select_name, $connection, $db_name, $preselect); */
	mysql_select_db ($db_name);
	$result = @ mysql_query ($query, $connection) or
			die (mysql_error());
		echo "<select name=\"$select_name\">\n";
			while($row = mysql_fetch_row($result))
		{
			echo "<option>";
			echo $row[0];
			echo "</option>\n";
		}
	echo "</select>\n";
}

Ausgabe:

PHP:
			<?
			echo "<br>Tabellenauswahl:<br>";
			$query = "SHOW tables";
			makedropdown_t($query, "Tables", $connection, $db_name='xxx', "");
			?>
 
Zurück