MySQL Abfrage aus Textarea ausführen und anzeigen.
Hallo,
ich habe die Aufgabe eine HTML Seite zu erstellen. Mit der man eine variable MySQL Abfrage ausführen kann, die man in ein Eingabefeld einträgt. Ich habe es hinbekommen ,dass ich eine Ausgabe habe. Möchte aber diese Ausgabe in Tabellenform haben. Bei einer festen Ausgabe habe ich es hinbekommen. Ich weiß bloß nicht, wie ich bei einer Variablen SELECT Abfrage eine Tabelle hinbekommt. Es muss ja irgendwie die Anzahl der Spalten und Zeilen gezählt werden.
Das ist mein PHP Skript zur variablen Abfrage:
Bei dieser Abfrage kommt z.B. bei SELECT * FROM Artikel WHERE ArtikelNr=1
Ergebnis der SQL-Abfrage
Array ( [ArtikelNr] => 1 [LieferantenNr] => 1 [KategorieNr] => 1 [Artikelname] => Chai [Liefereinheit] => 10 Kartons x 20 Beutel [Einzelpreis] => 18 [Lagerbestand] => 39 [Bestellte_Einheiten] => 0 [Mindestbestand] => 10 [Auslaufartikel] => 0 )
Das ist mein HTML Formular
Ich hoffe ihr könnt mir weiterhelfen.
ich habe die Aufgabe eine HTML Seite zu erstellen. Mit der man eine variable MySQL Abfrage ausführen kann, die man in ein Eingabefeld einträgt. Ich habe es hinbekommen ,dass ich eine Ausgabe habe. Möchte aber diese Ausgabe in Tabellenform haben. Bei einer festen Ausgabe habe ich es hinbekommen. Ich weiß bloß nicht, wie ich bei einer Variablen SELECT Abfrage eine Tabelle hinbekommt. Es muss ja irgendwie die Anzahl der Spalten und Zeilen gezählt werden.
Das ist mein PHP Skript zur variablen Abfrage:
<?php
echo "<html><head></head><body>";
echo "<h2>Ergebnis der SQL-Abfrage</h2>";
$verbindung = mysql_connect("server", "nutzername", "passwort")
or die ("Fehler Fehler Fehler Keine Verbindung mit MySQL Fehler Fehler Fehler");
mysql_select_db("dbit12gru5")
or die ("Verbindung mit der Datenbank nicht möglich");
// SQL-Abfrage ausführen
$ab = $_POST['meSQL'];
$re = mysql_query($ab);
# Jetzt können wir die Daten als Array oder Objekt bekommen
# wir nehmen die Daten in einem Array
while($daten = mysql_fetch_array($re, MYSQL_ASSOC))
{
print_r($daten);
echo "<br />";
}
mysql_close($verbindung);
?>
// Bei der festen Abfrage habe ich es so gemacht
<?php
echo "<html><head></head><body>";
echo "<h2>Ergebnis der SQL-Abfrage</h2>";
$verbindung = mysql_connect("server", "nutzername", "passwort")
or die ("Fehler Fehler Fehler Keine Verbindung mit MySQL Fehler Fehler Fehler");
mysql_select_db("dbit12gru5")
or die ("Verbindung mit der Datenbank nicht möglich");
// SQL-Abfrage ausführen
$abfrage = "SELECT Artikel.ArtikelNr, Artikel.Einzelpreis, Sum(Bestelldetails.Anzahl)AS Gesamtbestellmenge FROM Artikel INNER JOIN Bestelldetails ON Artikel.ArtikelNr = Bestelldetails.ArtikelNr GROUP BY Artikel.ArtikelNr, Artikel.Einzelpreis ORDER BY Artikel.Einzelpreis DESC LIMIT 20";
$ergebnis= mysql_query($abfrage);
?>
<table border="1" width="450">
<colgroup>
<col width="33%">
<col width="33%">
<col width="33%">
</colgroup>
<tr>
<th>ArtikelNr</th>
<th>Einzelpreis</th>
<th>Gesamtbestellmenge</th>
</tr>
<?php
while($row = mysql_fetch_object($ergebnis))
{
?>
<table border="1" width="450">
<colgroup>
<col width="33%">
<col width="33%">
<col width="33%">
</colgroup>
<tr>
<td><?php echo $row->ArtikelNr?></td>
<td style="text-align:right;"><?php echo number_format($row->Einzelpreis,2,",",".")." €"; ?></td>
<td style="text-align:right;"><?php echo $row->Gesamtbestellmenge?></td>
</tr>
<?php
}
mysql_close($verbindung);
echo "</body></html>";
?>
Bei dieser Abfrage kommt z.B. bei SELECT * FROM Artikel WHERE ArtikelNr=1
Ergebnis der SQL-Abfrage
Array ( [ArtikelNr] => 1 [LieferantenNr] => 1 [KategorieNr] => 1 [Artikelname] => Chai [Liefereinheit] => 10 Kartons x 20 Beutel [Einzelpreis] => 18 [Lagerbestand] => 39 [Bestellte_Einheiten] => 0 [Mindestbestand] => 10 [Auslaufartikel] => 0 )
Das ist mein HTML Formular
<html>
<head>
<title>SQL-Abfragen auf MySQL-Tabellen</title>
</head>
<body>
<h2>Datenbank dbit12gru5<br>Abfragen</h2>
<p>Top-20-Liste der Artikel nach ihrem Bestellwert.</p>
<form name="fmFest" action="abfrage_fest.php" method="post">
<input type="submit" value="ausführen" />
</form>
<form name="fmFrei" action="abfrage_frei.php" method="post">
<textarea name="meSQL" cols=60 rows=6>SELECT
</textarea><br>
<input type="submit" value="ausführen" />
<input type="reset" value="abbrechen" />
</form>
</body>
</html>
Ich hoffe ihr könnt mir weiterhelfen.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 237907
Url: https://administrator.de/contentid/237907
Ausgedruckt am: 25.11.2024 um 20:11 Uhr
2 Kommentare
Neuester Kommentar
Hi,
habs ein wenig eilig, möchte dir aber trotzdem gerne noch eine Antwort da lassen.
Du musst die Tabelle eben auch dynamisch erstellen.
Dazu führst du das Query aus,
liest NUR DEN ERSTEN DATENSATZ aus ($aDs = mysql_fetch_assoc($rTab)),
mit PHP-Manual - array_keys() liest du die Keys aus und baust mit ihnen deinen Tabellenkopf.
nun kannst du alle anderen Datensätze in der while()-Schleife auslesen und ausgeben
Ist nur runtergetippt, aber es geht ja um die Möglichkeit...
~Arano
PS. Stat nur die Keys im Tabellenkopf auszugeben, kannst du dir ja noch ein weiteres Array erstellen, das zu den Keys "schöne" Titel bereithält
habs ein wenig eilig, möchte dir aber trotzdem gerne noch eine Antwort da lassen.
Du musst die Tabelle eben auch dynamisch erstellen.
Dazu führst du das Query aus,
liest NUR DEN ERSTEN DATENSATZ aus ($aDs = mysql_fetch_assoc($rTab)),
mit PHP-Manual - array_keys() liest du die Keys aus und baust mit ihnen deinen Tabellenkopf.
nun kannst du alle anderen Datensätze in der while()-Schleife auslesen und ausgeben
<?php
$sQuery = "SELECT * FROR `table`"
$rTab = mysql_query( $sQuery );
// fehlerabfangen nicht vergesen ;)
if( 0<mysql_num_rows( $rTab ) )
{
$aDs = mysql_fetch_assoc( $rTab );
$aKeys = mysql_keys( $aDs );
// tabellenkopf bauen
echo '<table><tr>';
foreach( $aKeys as $sKey )
echo '<th>'.$sKey.'</th>';
echo '</tr>';
// ersten datensatz ausgeben
echo '<tr>';
foreach( $aDs as $sKey=>$sValue )
echo '<td>'.$sValue.'</td>';
echo '</tr>';
// restlichen datensätze ausgeben
while( FALSE!==($aDs=mysql_fetch_assoc($rTab)) )
{
echo '<tr>';
foreach( $aDs as $sKey=>$sValue )
echo '<td>'.$sValue.'</td>';
echo '</tr>';
}
// schließe tabelle
echo '</table>';
}
// wenn keine datensätze ausgelesen wurden
else
{
echo '<p> :-P nix gefunden ;) </p>';
}
?>
Ist nur runtergetippt, aber es geht ja um die Möglichkeit...
~Arano
PS. Stat nur die Keys im Tabellenkopf auszugeben, kannst du dir ja noch ein weiteres Array erstellen, das zu den Keys "schöne" Titel bereithält