Mysql Abfrage in Tabelle ganz speziell ausgeben

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

  • Mysql Abfrage in Tabelle ganz speziell ausgeben

    Hallo zusammen :-)

    folgende Situation:

    ich habe eine Tabelle in einer Mysql DB mit folgenden 2 Spalten:

    Durchmesser | Koernung

    Der Durchmesser kann in Grössen von 008 - 055 vorkommen.
    Es sollen allerdings nur die auch wirklich vorkommenden grössen der Abfrage angezeigt werden.
    Desweiteren gibt es 6 verscheidene Körnungsarten die zu jedem Durchmesser charakteristisch sind.

    so sollte das ganze ungefähr aussehen :

    Beispiel 1:

    Beispiel2:


    so sieht das ganze bis jetzt aus :-(

    Stand der Dinge:

    Der Code zum ganzen sieht bisher so aus :

    PHP-Code:
    <? 
    include "connect.php"; 

    $query = "SELECT DISTINCT durchmesser,koernung FROM webtest WHERE form like '878K%' "; 
    $result = mysql_query($query);

    echo "<table width=\"100\" border=\"1\">\n"; 
    $i = 0; 

       while ($data = mysql_fetch_array($result)) 
       { 
         if ( ! ($i % 10)) 
          echo "   <tr>\n"; 

        echo "    <td>" ; ?>
     <a href="testheader1.php?form=<? echo $data['form']; ?>">
        <? echo $data['durchmesser'] ;?>
        </a>
    <? "</td>\n";  
        if ($i % 1) 
          echo "   </tr>\n"; 
                $i++; 
       } 

       if ( ! ($i % 3)) 
       { 
          echo "    <td>&nbsp;</td>\n"; 
          echo "   </tr>\n"; 
       } 
       echo "</table>\n"; 
    mysql_close($sql); 
    ?>

    Kann mir jemand helfen

    Vielen dank im voraus

    Ronny
    Zuletzt geändert von romu2000; 31.05.2005, 19:23.

  • #2
    Bitte erstmal die Regeln lesen:
    http://www.php-resource.de/forum/sho...threadid=50454

    Kommentar


    • #3
      Sorry

      Ist es so besser?

      Gruß

      Ronny

      Kommentar


      • #4
        besser!

        Auch wenn ich den code was unübersichtlich finde.

        WO genau liegt jetzt das Problem? Werden die richtigen Daten aus der DB geliefert und fehlt nur die richtige formatierung, oder liefert deine query schon die falschen daten?

        Kommentar


        • #5
          Cool .-)

          Ich bin noch nicht wirklich Firm mit PHP, bin egrade am lernen :-)

          Also die Query liefert die richtigen Daten.

          Nur lässt die Formatierung wie auf den links zu erkennen zu wünschen übrig. (Siehe "stand der Dinge")

          So wie in den beiden beispielen wäre es wunderbar.

          Also: zu jedem durchmesser --> unten drunter die entsprechend vorhandenen Koernungen angeben.
          Dann in einer 2ten spalte wieder oben den durchmesser und dann unten die entsprechenden vorhandenen Koernungen ...


          Ich hoffe das war verständlich .-)

          Danke

          Gruß

          Ronny

          Kommentar


          • #6
            nun,

            dann musst du dir als nächstes gedanken machen, wie du die daten sortierst.

            ich würde spontan vorschlagen

            ein array (mehrdimensional):
            in dem du alle vorhandenen durchmesser speicherst. und vielleicht als unterarray dann die körnungen.

            dann musst du das array auslesen (evtl. hier ein hilfsarray mit allen möglichen körnungen).

            am besten machste dir mal ne skizze, wie du das im kopf machen würdest.

            Bedenke dabei, dass du zeilenweise vorgehen muss, NICHT spaltenweise.

            BTW: Wenn du fuschen willst, dann kannst du auch verschachtelte Tabellen nehmen. Eine Tabelle, die dafür sorgt, dass die Spalten exisitieren und dadrin dann jeweils die durchmesser samt körnung. sehr unsauber. (Tu bitte so, als ob du diesen Tipp von jemandem anderes bekommen hast! )

            Kommentar


            • #7
              Frage!

              Hallo Tobiaz,

              erstmal vielen Dank für deine raschen antworten.

              eine frage tut sich mir dennoch auf:

              wieso zeilenweise???

              heisst es, das ich zuerst alle vorhandenen durchmesser abfragen muss, dann die erste koernung zum jeweiligen durchmesser, dann die 2te dann die 3te usw?

              wie soll so eine abfrage aussehen?

              ist es nicht möglich eine abfrage zu gestalten die spaltenweise vorgeht und am ende "eines (z.b. = 012")" Durchmessers und dessen keornungen einen spaltenumbruch amche ?

              Vielen dank

              Ronny

              Kommentar


              • #8
                wieso zeilenweise???
                Na, guck dir doch mal ne Tabelle im Quelltext an, dann weißt du warum.

                heisst es, das ich zuerst alle vorhandenen durchmesser abfragen muss, dann die erste koernung zum jeweiligen durchmesser, dann die 2te dann die 3te usw?
                Im Prinzip brauchst du nur eine Abfrage. (vermutl. die, die du schon hast.) Du musst die Daten nur entsprechend aufbereiten.

                ist es nicht möglich eine abfrage zu gestalten die spaltenweise vorgeht und am ende "eines (z.b. = 012")" Durchmessers und dessen keornungen einen spaltenumbruch amche ?
                mit sauberen HTML kannst du nicht erst die zeilen in spalte1 voll machen, dann in spalte2 usw. Dafür müsstest du die Dirty-Methode - die du von diesem seltsamen typen hast - benutzen, oder sagen wir missbrauchen.

                Das ganze ist nicht ganz easy (afaik), aber mit ner groben skizze und nen paar logischen gedanken sollte man das hinbekommen. auch mit sauberen HTML.

                Kommentar


                • #9
                  grad noch mal nen ansatz:

                  die abfrage ist ja okay, soweit waren wir schon.

                  das aufbereiten der daten, könntest du auch so versuchen:

                  aber anstatt die körnungen den durchmessern zuzuordnen, ordnest du die durchmesser den körnungen zu. dann machst du noch ein hilfsarray, in dem zu alle vorkommenen durchmesser reinspeicherst.

                  die durchmesser schreibst du in die erste zeile. FERTIG

                  dann die größte körnung (das array hast du vorher sortiert - könnte schon in der query passiert sein) ausgeben.

                  geht ganz einfach mit einer foreach-schleife anhand des hilfsarrays.
                  Nächste Zeile - nächste Körnung. Das gleiche nochmal.

                  Kommentar


                  • #10
                    Nur kommts bei so einer Konstellation auch auf die Menge der abgefragten Daten drauf an. Ab 20 Datensätzen stellt sich da bestimmt auch die horizontale Scrollleiste ein (ohne LIMIT in der Abfrage). Ansonsten würde ich ebenfalls die Abfrage in einen Array einlesen und ihn nachher über den Index und den Spaltennamen ansprechen und Zeilenweise ausgeben. Jedenfalls, falls ich mir nicht gerade was zusammenträume..

                    Kommentar


                    • #11
                      realisierung

                      Du bist echt Klasse,

                      aber wie vornherein erwähnt bin ich absoluter newbie auf dem gebiet mit PHP.

                      Wäre es denn evtl. möglich das Du mir einen kleinen Codeschnipsel zur verfügung stellst an dem ich dann weiter arbeiten kann????

                      ich kann dir auch gerne einen kleinen ausschnitt aus der DB zur verfügung stellen....


                      Wäre eine echt klasse sache.

                      Grüße

                      Ronny

                      Kommentar


                      • #12
                        Klar, vergiss bitte Rechnungsadresse und Auftragsbestätigung nicht.

                        Kommentar


                        • #13
                          kostenß

                          was würde so eine hilfestellung kosten ???

                          Gruß

                          Ronny

                          Kommentar


                          • #14
                            Mal ne Frage in die Runde.. Wäre sowas sinnvoll, oder zu umständlich.?.:
                            PHP-Code:
                             $query=mysql_query($sql) or die (mysql_error());
                             
                            $num=mysql_num_rows($query) or die (mysql_error());

                             while(
                            $row=mysql_fetch_assoc($query))
                                  {
                                  
                            $erg[]=$row;
                                  }

                             echo 
                            "<table>\n";
                             echo 
                            " <tr>\n";
                             echo 
                            "  <td>Zeile1</td>\n";


                             for(
                            $i=0;$i<$num;$i++)
                                {
                                echo 
                            " <td>".$erg[$i]['spalte1']."</td>";
                                }

                             echo 
                            "\n </tr>\n <tr>\n";
                             echo 
                            "  <td>Zeile2</td>\n";

                             for(
                            $i=0;$i<$num;$i++)
                                {
                                echo 
                            "  <td>".$erg[$i]['spalte2']."</td>";
                                }
                            echo 
                            "\n </tr>\n";
                            echo 
                            "</table>\n"
                            Ich habe noch nie eine Tabellenausgabe auf so einem Weg gemacht, und das ist die einzige Möglichkeit, die mir jetzt eingefallen ist...

                            Kommentar


                            • #15
                              Ich habe noch nie eine Tabellenausgabe auf so einem Weg gemacht, und das ist die einzige Möglichkeit, die mir jetzt eingefallen ist...
                              Wenn man bedenkt, dass ich schon zwei hier gepostet habe!

                              Kommentar

                              Lädt...
                              X