Ausgabe einer kompletten Tabelle mit Hilfe von Variablen!

phily

Grünschnabel
Moin!
Ich habe ein kleines Problem... Und zwar möchte ich eine PHP Datei erstellen, in der ich zu Beginn nur den Namen der Tabelle sowie Zugangsdaten für die DB eingeben muss. Jedoch ist irgendetwas mit der Ausgabe der einzelnen Zeilen noch nicht ganz in Ordnung. Wär toll wenn mir jemand helfen könnte;)

PHP:
<? 
/******************************************************************/

$host=		"";															//Datenbank Host
$user=		"";															//Datenbank Benutzer eingeben
$pw=		"";															//Datenbank Passwort eingeben
$db=		"pm";														//Datenbank Name eingeben

$table=		"news";														//Tabelle auswählen

/******************************************************************/

$con=mysql_connect($host, $user, $pw) or die(mysql_error);				//Verbindung zur Datenbank herstellen
mysql_select_db($db);													//Datenbank auswählen

$query="SELECT * FROM $table";											//Anfrage an Datenbank
$action=mysql_query($query);											//Anfrage senden
$rows=mysql_num_rows($action);											//Anzahl der Zeilen
$cols=mysql_num_fields($action);										//Anzahl der Spalten

/******************************************************************/

echo '<table>
	<tr>';																//Definition der Tabelle
for ($a=0; $a<$cols; $a++)
	{ 	
		$field_name[]=mysql_field_name($action,$a);
		echo '<td>', mysql_field_name($action,$a), '</td>
		'; 																//Ausgabe der Feldnamen als erste Zeile der Tabelle
	}						
echo '</tr>';

/******************************************************************/

for ($b=0;$b<$cols;$b++)
{
echo '<tr>';
	for ($c=0; $c<$cols; $c++)
	{
		$row=mysql_fetch_assoc($action);
		echo '<td>';
			for ($d=0; $d<cols; $d++)
			{
				$field_name[]=mysql_field_name($action,$d);
				echo $row[$field_name[$d]];
			}
		echo '</td>';
	}
echo '</tr>';
}
echo '</table>';

/******************************************************************/

mysql_close($con);														//Verbindung zur Datenbank schließen
?>

Gruß
Philipp
 
Frage:
Warum machst Du diese ganzen for-Schleifen?
Du kannst doch ganz bequem mit einer while-Schleife die einzelnen Zeilen auslesen:
PHP:
while ($row=mysql_fetch_assoc($action)) {
    //...
}
Das Skript könnte mit wesentlich weniger Hilfsvariablen auskommen:
PHP:
<?
/******************************************************************/
 //Datenbank Host:
$host=        "";
//Datenbank Benutzer eingeben:
$user=        "";
//Datenbank Passwort eingeben:
$pw=        "";
//Datenbank Name eingeben:
$db=        "pm";
//Tabelle auswählen:
$table=        "news";

/******************************************************************/

//Verbindung zur Datenbank herstellen:
$con=mysql_connect($host, $user, $pw) or die(mysql_error);
//Datenbank auswählen:
mysql_select_db($db);

//Anfrage an Datenbank:
$query="SELECT * FROM $table";
//Anfrage senden:
$action=mysql_query($query);
/*Werden zum reinen Anzeigen der Tabelle nicht benötigt:
$rows=mysql_num_rows($action);
$cols=mysql_num_fields($action);
*/
/******************************************************************/

echo "<table>\n";
echo "    <tr>\n";
$fields=array();
while ($field_name=mysql_fetch_field($action)) {
    //Felder merken:     
    $fields[]=$field_name;
    //Ausgabe der Feldnamen als erste Zeile der Tabelle:
    echo "        <th>".$field_name."</th>\n";
}                        
echo "    </tr>\n";

/******************************************************************/
//Zeilen auslesen:
while ($row=mysql_fetch_assoc($action) {
    echo "    <tr>\n";
    //Felder in (dem Header) entsprechender Reihenfolge ausgeben:
    foreach ($fields AS $f) {
        //Prüfung gegen Fehlermeldung bei NULL im DB-Feld:
        if (isset($row[$f])) {
            echo "        <td>". $row[$f]."</td>\n";
        } else {
            echo "        <td></td>\n";
        }
      
    }
    echo "    </tr>\n";
}
echo "</table>\n";

/******************************************************************/

/*An sich überflüssig:
//Verbindung zur Datenbank schließen:
mysql_close($con);
*/
?>
 
Zurück