Ankündigung

Einklappen
Keine Ankündigung bisher.

Tabellenausgabe.

Einklappen

Neue Werbung 2019

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

  • Tabellenausgabe.

    Ich versuche mal meine Programmieraufgabe zu beschreiben, damit wir gemeinsam nach Lösungen suchen können.

  • #2
    Das ist jetzt nicht dein Ernst?

    Kommentar


    • #3
      Vll. ist das noch immer der 1. April Bot, der sich selbständig gemacht hat

      Kommentar


      • #4
        Hier meine Lösung:
        PHP-Code:
        <?php
        anmelden_db
        ();
        anzeige_verzeichnis();
        mysql_close();

        function 
        anmelden_db() {
            
        mysql_connect("a""m","k") or die ("Keine Verbindung moeglich");
            
        mysql_select_db("m") or die ("Die Datenbank existiert nicht.");
           }

        function 
        anzeige_verzeichnis() {
            
        $sql "SELECT * FROM verzeichnis";
            
        $ergebnis mysql_query($sql);
            echo 
        "<h2>Verzeichnis</h2>";
            echo 
        "<table width='30%' border='5' cellpadding='0' cellspacing='2'>";
            echo 
        "<tr><th>Nr</th><th>Gruppe</th><th>Bezeichnung</th></tr>";
            while(
        $row mysql_fetch_object($ergebnis)) {
                echo 
        "<tr><td>";
                echo 
        $row->nr;
                echo 
        "</td><td>";
                echo 
        $row->gruppe;
                echo 
        "</td><td>";
                echo 
        $row->bezeichnung;
                echo 
        "</td></tr>";          }
            echo 
        "</table>";     }
        ?>
        Ansicht



        Gibt es eine einfáchere Lösung?

        Wie muss die SQL-Anweisung aussehen, damit sich die Gruppenreihefolge aus der nr ergibt?

        Kommentar


        • #5
          Hier meine Lösung:
          PHP-Code:
          <?php
          anmelden_db
          ();
          anzeige_verzeichnis();
          mysql_close();

          function 
          anmelden_db() {
              
          mysql_connect("a""m","k") or die ("Keine Verbindung moeglich");
              
          mysql_select_db("m") or die ("Die Datenbank existiert nicht.");
             }

          function 
          anzeige_verzeichnis() {
              
              
          $sql "SELECT b.*, MIN(a.nr) AS c, a.gruppe FROM verzeichnis AS a ";
              
          $sql .= "INNER Join verzeichnis AS b ON a.gruppe = b.gruppe ";
              
          $sql .= "GROUP BY a.gruppe,b.nr ";
              
          $sql .= "ORDER BY c, b.nr";

              
          $ergebnis mysql_query($sql);
              echo 
          "<h2>Verzeichnis</h2>";
              echo 
          "<table width='30%' border='5' cellpadding='0' cellspacing='2'>";
              echo 
          "<tr><th>Nr</th><th>Gruppe</th><th>Bezeichnung</th></tr>";
              while(
          $row mysql_fetch_object($ergebnis)) {
                  echo 
          "<tr><td>";
                  echo 
          $row->nr;
                  echo 
          "</td><td>";
                  echo 
          $row->gruppe;
                  echo 
          "</td><td>";
                  echo 
          $row->bezeichnung;
                  echo 
          "</td></tr>";          }
              echo 
          "</table>";     }
          ?>
          Ansicht sortiert


          Gibt es eine einfáchere Lösung?

          Wie kann man die gefundene Reihenfolge zurückschreiben, also die Nr verändern?[/QUOTE]

          Kommentar


          • #6
            Du willst jetzt was von uns ? Simplifizierung ohne Wissen über die Komplexität darüber was du wirklich umsetzen möchtest ?

            Kommentar


            • #7
              Ist mir schon bewusst, dass die Aufgabenstellung nicht besonders gut umschrieben ist, aber vielleicht hat doch jemand einen Hinweis auf Grund seiner Erfahrung.

              Kommentar


              • #8
                Die Aufgabenstellung ist gar nicht umschrieben!
                Lies den Thread nochmal, insbesondere deine eigenen Posts...

                Kommentar


                • #9
                  Nach dem die Tabellenausgabe funktioniert konnte auch der Versuch gemacht werden eine Tabelle zu sortieren, die Einträge mit Zwischenräume zu nummerieren und in die Ausgangstabelle zurück zu schreiben.
                  Wie man sieht wird die Reihenfolge sowohl der Gruppen als auch der Bezeichnung innerhalb der Gruppen durch die Nr. festgelegt.
                  Wer hat Verbesserungsvorschläge?
                  PHP-Code:
                  <?php

                  include_once ( 'db1.php' );
                  echo 
                  "<h1>".$_SERVER['PHP_SELF']."</h1>";
                  anmelden_db();

                  $sql1 "DROP TABLE verzeichnis1";
                  echo 
                  $sql1."<br>";
                  $ergebnis mysql_query($sql1);

                  $sql2 "CREATE TABLE verzeichnis1 ";
                  $sql2 .=  "( nr int(5), gruppe text, bezeichnung text ) ";
                  echo 
                  $sql2."<br>";
                  mysql_query($sql2);

                  $sql "INSERT INTO verzeichnis1 VALUES (7,'b','ba'),(9,'a','aa'),(16,'b','bb') ";
                  $sql .= ",(4,'c','ca') ";
                  echo 
                  $sql."<br>";
                  mysql_query($sql);

                  $sql3 "SELECT * FROM verzeichnis1";
                  anzeige_verzeichnis($sql3);

                  $sql4 "SELECT a.nr, a.gruppe, a.bezeichnung FROM verzeichnis1 AS a ";
                  $sql4 .= "INNER JOIN verzeichnis1 AS b ON a.gruppe=b.gruppe ";
                  $sql4 .= "GROUP BY b.gruppe, a.nr ORDER BY b.nr,a.nr";
                  anzeige_verzeichnis($sql4);

                  $sql5 "DROP TABLE verzeichnis2";
                  echo 
                  $sql5."<br>";
                  $ergebnis mysql_query($sql5);

                  $sql "CREATE TABLE verzeichnis2 ";
                  $sql .=  "( nr int(5) AUTO_INCREMENT, gruppe text, bezeichnung text, PRIMARY KEY (nr) ) ";
                  echo 
                  $sql."<br>";
                  mysql_query($sql);

                  $ergebnis mysql_query($sql4);

                  while(
                  $row mysql_fetch_object($ergebnis)) {
                  $sql "INSERT INTO verzeichnis2 (gruppe, bezeichnung) ";
                  $sql .= "VALUES ('".$row->gruppe."', '".$row->bezeichnung."') ";
                  $ergebnis1 mysql_query($sql); }

                  $sql "SELECT * FROM verzeichnis2";
                  anzeige_verzeichnis($sql);

                  echo 
                  $sql1."<br>";
                  $ergebnis mysql_query($sql1);
                  echo 
                  $sql2."<br>";
                  mysql_query($sql2);

                  $sql "INSERT INTO verzeichnis1 (nr,gruppe,bezeichnung) ";
                  $sql .= "SELECT nr*4,gruppe,bezeichnung FROM verzeichnis2  ";
                  echo 
                  $sql."<br>";
                  mysql_query($sql);
                  anzeige_verzeichnis($sql3);

                  echo 
                  $sql5."<br>";
                  $ergebnis mysql_query($sql5);

                  mysql_close();

                  function 
                  anzeige_verzeichnis($sql) {
                      
                  $ergebnis mysql_query($sql);
                      echo 
                  "<h2>Verzeichnis</h2>";
                      echo 
                  "<h4>(".$sql.")</h4>";
                      echo 
                  "<table width='30%' border='5' cellpadding='0' cellspacing='2'>";
                      echo 
                  "<tr><th>Nr</th><th>Gruppe</th><th>Bezeichnung</th></tr>";
                      while(
                  $row mysql_fetch_object($ergebnis)) {
                          echo 
                  "<tr><td>";
                          echo 
                  $row->nr;
                          echo 
                  "</td><td>";
                          echo 
                  $row->gruppe;
                          echo 
                  "</td><td>";
                          echo 
                  $row->bezeichnung;
                          echo 
                  "</td></tr>";          }
                      echo 
                  "</table>"; }

                  ?>
                  Ansicht

                  Kommentar


                  • #10
                    Ich habe nen guten Verbesserungsvorschlag, schmeiß dem ganzen mist über Bord und Versuche ernsthaft zu planen und nachzudenken.

                    Für jedes Verzeichnis ne extra Tabelle ist mist. Stell dir vor du hast 500 Verzeichnisse, oder 20 User hätten jeweils 100 Verzeichnisse. Nun darfst dir vorstellen was das wird.

                    Deine Funktionen sind käse, die bringen einfach null Mehrwert. Denn Funktionen sollten schon auch im prozeduralen dazu dienen Arbeit abzunehmen und mehrfach in einem oder sogar mehreren Projekten wiederverwendet werden zu können, bei dir ist bei nicht einer Funktion gegeben.

                    Kommentar

                    Lädt...
                    X