Ankündigung

Einklappen
Keine Ankündigung bisher.

MySQL Abfrage aus Textarea ausführen und anzeigen.

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • 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:

    PHP-Code:
    <?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($reMYSQL_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";
    $ergebnismysql_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,",",".")." &euro;"?></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
    PHP-Code:
    <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.


  • #2
    Du könntest mit SHOW FULL COLUMNS FROM tbl_name die Anzahl der Spalten der Tabelle bestimmen und dann das Feld mit Count auslesen = Anzahl der Spalten. Die zeilen sind m.E. irrelevant da Du bei der Ausgabe eine Schleife laufen lassen wirst.

    Grüße von
    Kami

    Kommentar


    • #3
      Ich würde die erste Zeile aus deinem Array holen und dann über die Keys (welche jeweils die Tabellennamen sind gehen).


      PHP-Code:
      while($row mysql_fetch_array($ergebnisMYSQL_ASSOC)) {
      if (!isset(
      $header)){ //header wird nur beim ersten durchlauf nicht gesetzt sein
      foreach($row AS $name => $inhalt){
      //<td>$name</td>
      }
      $header=true//header variable wird gesetzt -> beim nächsten durchlauf wird der header weg gelassen.
      }

      //normale Ausgabe der Daten (auch die erste Zeile!)
      //<tr><td>$row['a‘]</td><td>$row['b']</td></tr>

      Den Codeschnipsel lass ich dir mal als Denkanstoß da.
      Zum laufen bringen musst du das selber.

      gruß roest
      May the Source be with you.

      Kommentar

      Lädt...
      X