Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

MySQL Abfrage aus Textarea ausführen und anzeigen.

Frage Entwicklung PHP

Mitglied: MrHToast

MrHToast (Level 1) - Jetzt verbinden

13.05.2014, aktualisiert 10:51 Uhr, 2374 Aufrufe, 2 Kommentare

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:

01.
  
02.
<?php 
03.
 echo "<html><head></head><body>"
04.
 echo "<h2>Ergebnis der SQL-Abfrage</h2>"
05.
  
06.
$verbindung = mysql_connect("server", "nutzername", "passwort"
07.
or die ("Fehler Fehler Fehler Keine Verbindung mit MySQL Fehler Fehler Fehler"); 
08.
mysql_select_db("dbit12gru5")  
09.
or die ("Verbindung mit der Datenbank nicht möglich"); 
10.
 
11.
 // SQL-Abfrage ausführen 
12.
	$ab = $_POST['meSQL']; 
13.
	$re = mysql_query($ab); 
14.
 
15.
        # Jetzt können wir die Daten als Array oder Objekt bekommen 
16.
        # wir nehmen die Daten in einem Array 
17.
 
18.
    while($daten = mysql_fetch_array($re, MYSQL_ASSOC)) 
19.
20.
    print_r($daten); 
21.
	echo "<br />"
22.
23.
mysql_close($verbindung); 
24.
?> 
25.
 
26.
// Bei der festen Abfrage habe ich es so gemacht 
27.
<?php 
28.
 echo "<html><head></head><body>"
29.
 echo "<h2>Ergebnis der SQL-Abfrage</h2>"
30.
 
31.
$verbindung = mysql_connect("server", "nutzername", "passwort"
32.
or die ("Fehler Fehler Fehler Keine Verbindung mit MySQL Fehler Fehler Fehler"); 
33.
mysql_select_db("dbit12gru5")  
34.
or die ("Verbindung mit der Datenbank nicht möglich"); 
35.
   
36.
 // SQL-Abfrage ausführen 
37.
$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"
38.
$ergebnis= mysql_query($abfrage); 
39.
?> 
40.
	<table border="1" width="450"
41.
  <colgroup> 
42.
    <col width="33%"
43.
    <col width="33%"
44.
    <col width="33%"
45.
  </colgroup> 
46.
  		<tr> 
47.
    			<th>ArtikelNr</th> 
48.
    			<th>Einzelpreis</th> 
49.
    			<th>Gesamtbestellmenge</th> 
50.
  		</tr> 
51.
<?php 
52.
while($row = mysql_fetch_object($ergebnis)) 
53.
54.
	?> 
55.
	<table border="1" width="450"
56.
  <colgroup> 
57.
    <col width="33%"
58.
    <col width="33%"
59.
    <col width="33%"
60.
  </colgroup> 
61.
  		<tr> 
62.
    			<td><?php echo $row->ArtikelNr?></td> 
63.
    			<td style="text-align:right;"><?php echo number_format($row->Einzelpreis,2,",",".")." &euro;"; ?></td> 
64.
    			<td style="text-align:right;"><?php echo $row->Gesamtbestellmenge?></td> 
65.
  		</tr>	 
66.
	<?php 
67.
68.
 mysql_close($verbindung); 
69.
 echo "</body></html>"
70.
?>
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
01.
  
02.
<html> 
03.
 <head> 
04.
  <title>SQL-Abfragen auf MySQL-Tabellen</title> 
05.
 </head> 
06.
 <body> 
07.
  <h2>Datenbank dbit12gru5<br>Abfragen</h2>  
08.
  <p>Top-20-Liste der Artikel nach ihrem Bestellwert.</p> 
09.
  <form name="fmFest" action="abfrage_fest.php" method="post"> 
10.
   	<input type="submit" value="ausführen" /> 
11.
  </form> 
12.
   
13.
  <form name="fmFrei" action="abfrage_frei.php" method="post"> 
14.
    <textarea name="meSQL" cols=60 rows=6>SELECT  
15.
    </textarea><br> 
16.
  	<input type="submit" value="ausführen" /> 
17.
	<input type="reset" value="abbrechen" /> 
18.
  </form> 
19.
   
20.
 </body> 
21.
</html>

Ich hoffe ihr könnt mir weiterhelfen.
Mitglied: Arano
13.05.2014, aktualisiert um 11:10 Uhr
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

01.
<?php 
02.
$sQuery = "SELECT * FROR `table`" 
03.
$rTab = mysql_query( $sQuery ); 
04.
// fehlerabfangen nicht vergesen ;) 
05.
 
06.
if( 0<mysql_num_rows( $rTab ) ) 
07.
08.
    $aDs = mysql_fetch_assoc( $rTab ); 
09.
    $aKeys = mysql_keys( $aDs ); 
10.
 
11.
    // tabellenkopf bauen 
12.
    echo '<table><tr>'
13.
    foreach( $aKeys as $sKey
14.
        echo '<th>'.$sKey.'</th>'
15.
    echo '</tr>'
16.
 
17.
    // ersten datensatz ausgeben 
18.
    echo '<tr>'
19.
    foreach( $aDs as $sKey=>$sValue
20.
        echo '<td>'.$sValue.'</td>'
21.
    echo '</tr>'
22.
 
23.
    // restlichen datensätze ausgeben 
24.
    while( FALSE!==($aDs=mysql_fetch_assoc($rTab)) ) 
25.
26.
        echo '<tr>'
27.
        foreach( $aDs as $sKey=>$sValue
28.
            echo '<td>'.$sValue.'</td>'
29.
        echo '</tr>'
30.
31.
 
32.
    // schließe tabelle 
33.
    echo '</table>'
34.
35.
 
36.
// wenn keine datensätze ausgelesen wurden 
37.
else 
38.
39.
    echo '<p> :-P nix gefunden ;) </p>'
40.
41.
?>

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
Bitte warten ..
Mitglied: MrHToast
13.05.2014 um 14:00 Uhr
Danke für deine Antwort habe eine andere Lösung von einem Kollege bekommen.

01.
$sql_ein=stripslashes($_POST["meSQL"]); 
02.
$ausgabe= mysql_query("$sql_ein"); 
03.
if (!$ausgabe) echo "Kein Ergebnis"; 
04.
else{$anz_zeilen=mysql_num_rows($ausgabe); 
05.
$anz_felder=mysql_num_fields($ausgabe); 
06.
echo"<table border=2>\n<tr>\n"; 
07.
for ($i=0; $i<$anz_felder; $i++) 
08.
echo "<th align=center>".htmlentities(mysql_field_name($ausgabe,$i)).'&nbsp'."</th>\n"; 
09.
echo "</tr>\n"; 
10.
while ($zeile=mysql_fetch_row($ausgabe)) 
11.
{echo"<tr>\n";				 
12.
for ($i=0;$i<$anz_felder;$i++) 
13.
echo "<td>".htmlentities($zeile[$i]).'&nbsp'."</td>\n"; 
14.
echo "</tr>\n";} 
15.
echo "</table>\n";}
Bitte warten ..
Ähnliche Inhalte
Datenbanken
MYSQL Abfrage
gelöst Frage von datadexxDatenbanken20 Kommentare

Halo an alle MySQL Spezialisten! Wie kann ich denn am besten folgende Werte abfragen und berechnen? Ausgang für die ...

PHP
Suchfeld mit Abfrage auf eine MySQL-Datenbank
gelöst Frage von SaschaRDPHP6 Kommentare

Hallo zusammen, ich steh mal wieder auf dem Schlauch. Bin dabei ein Suchfeld auf die Webseite zu bringen. Jedoch ...

Datenbanken
MySQL Abfrage für eine Umsatzauswertung kombinieren
gelöst Frage von RedBullmachtfitDatenbanken2 Kommentare

Hallo zusammen, ich möchte Kundenumsätze aus einer MySQL (v5.6, Windows) Datenbank ziehen. Ich komme mit der Struktur jedoch nicht ...

PHP
PHP MySQL Abfrage aus Datenbank
Frage von Lost144PHP12 Kommentare

Hallo, Ich habe in einer Datenbank daten über VM's stehen. Angaben wie hostname,adresse, serverat usw. Wie kann ich in ...

Neue Wissensbeiträge
Verschlüsselung & Zertifikate

19 Jahre alter Angriff auf TLS funktioniert immer noch

Information von BassFishFox vor 3 StundenVerschlüsselung & Zertifikate

Interessant zu lesen. Der Bleichenbacher-Angriff gilt unter Kryptographen als Klassiker, trotzdem funktioniert er oft noch. Wie wir herausgefunden haben, ...

Windows 10

Windows 10 Fall Creators Update - Neue Funktion Hyper-V Standardswitch kann ggf. Fehler bei Proxy Configs verursachen

Erfahrungsbericht von rzlbrnft vor 14 StundenWindows 102 Kommentare

Hallo Kollegen, Da wir die Gefahr lieben, haben wir bei einigen Usern nun mittlerweile das Creators Update drauf. Einige ...

Sicherheit

TLS-Zertifikat und privater Schlüssel von Microsofts Dynamics 365 geleakt

Information von Penny.Cilin vor 16 StundenSicherheit

Microsoft hat versehentlich das TLS-Zertifikat inklusive dem privaten Schlüssel seiner Business-Anwendung Dynamics 365 geleakt. TLS-Zertifikat und privater Schlüssel von ...

Viren und Trojaner

Deaktivierter Keylogger in HP Notebooks entdeckt

Information von bitcoin vor 1 TagViren und Trojaner3 Kommentare

Ein Grund mehr warum man Vorinstallationen der Hersteller immer blank bügeln sollte Der deaktivierte Keylogger findet sich im vorinstallierten ...

Heiß diskutierte Inhalte
Netzwerkmanagement
Firefox Profieles im Roaming
gelöst Frage von Hendrik2586Netzwerkmanagement17 Kommentare

Hallo liebe Leute. :) Ich hab da ein kleines Problem, welches anscheinend nicht unbekannt ist. Wir nutzen hier in ...

Netzwerkmanagement
NAS über zwei weitere Ethernet Anschlüsse verbinden
gelöst Frage von Sibelius001Netzwerkmanagement16 Kommentare

Sorry - ich bin hier wahrscheinlich als kompetter IT Trottel unterwegs. Aber eventuell kann mir jemand ganz einfach helfen: ...

LAN, WAN, Wireless
Häufig Probleme beim Anmelden in WLAN
Frage von mabue88LAN, WAN, Wireless15 Kommentare

Hallo zusammen, in einem Netzwerk gibt es relativ häufig (1-2 mal pro Woche) Probleme mit der WLAN-Verbindung. Zunächst mal ...

Netzwerkgrundlagen
Hi eine blöde frage. xD
Frage von 132954Netzwerkgrundlagen13 Kommentare

Also: Habe 2012 r2 essentials neuinstalliert, allerdings installiert diese version ja gleich diesen gangen AD kram mit, den hab ...