dynamische Matrix aus Datenbankinhalt generieren

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

  • dynamische Matrix aus Datenbankinhalt generieren

    Hallo,
    ich möchte gerne eine dynamische Matrix aus einer Datenbank generieren.
    Dabei soll zuerst "DISTINCT" ausgelesen werden für wieviele Typen es etwas von einer Marke gibt und dann eine Übersicht erstellt werden.

    Ungefähr so:
    Das Ergebnis soll ungefähr wie folgt aussehen:

    Für Sockel "A" wurde gefunden:

    Marke/Chip |KT 266 | KT 266A | KT333 | KT400
    -----------------------------------------------------------
    Asus | ja | ja | ja | ja |
    ECS | ja | nein | nein | ja |
    Epox | nein | ja | ja | ja |
    Gigabyte | nein | nein | ja | ja |

    Ich habe folgenden Codeansatz, der nicht schön ist aber soweit funktioniert, bis auf ein Problem, wenn ich z.B. keinen "KT266A" finde
    für ECS, dann rutscht er mir eine Spalte nach links.
    Ich müsste also irgendwie das Array von allen Typen die gefunden wurden, mit dem aktuellen Hersteller vergleichen und dann wenn er es nicht findet ein "nein" in die <td> schreiben. Ich bekomme das nicht hin mit dem Arrays vergleichen.
    Habe folgenden Codeansatz, der ziemlich "wild" ist:
    Code:
         <?
    include ('dbconfig.php');
    if (!$verbindung) {
    		echo "Keine Verbindung zur Datenbank möglich!\n";
    		exit;
    	}
    if (isset($AH_Wahl) && $AH_Wahl !="" ) {
    		$abfrage1 = "SELECT DISTINCT AT from auspuffanlage WHERE AH = '$AH_Wahl' ORDER BY AT";
    		$abfrage2 = "SELECT DISTINCT MM from auspuffanlage WHERE AH = '$AH_Wahl' ORDER BY MM";
    					
    		$tabellenkopf = mysql_db_query($db,$abfrage1,$verbindung);
    		$tabellenmarke = mysql_db_query($db,$abfrage2,$verbindung);
    		$test_ob_leer = mysql_db_query($db,$abfrage1,$verbindung);
    	
    	
    	if (mysql_fetch_row($test_ob_leer)==0) 
    		  {  
    		  echo "Von Hersteller <b>\"$AH_Wahl\"</b> leider keine Anlage gefunden.";
    		  mysql_close($verbindung);
    		  }
    		  else 
    		{	
    		echo "Matrix für Hersteller $AH_Wahl:<br>";	
    		echo "<table border=\"1\" width=\"594\"><tr><td align = \"center\">Marke</td>";
    		while ($kopf = mysql_fetch_array($tabellenkopf)) 		
    		{
    		echo "<td align=\"center\">$kopf[AT]</td>"; 
    		}echo "</tr>";
    		
    		
    		while ($marke = mysql_fetch_array($tabellenmarke)) 
    		{
    		echo "<tr><td align=\"center\">$marke[MM]</td>";
    		
    		$abfrage3 = "SELECT DISTINCT AT from auspuffanlage WHERE AH = '$AH_Wahl' and MM ='$marke[MM]' ORDER BY AT";
    		$tabelleninhalt = mysql_db_query($db,$abfrage3,$verbindung);
    		
    		  while ($vergleich = mysql_fetch_array($tabellenkopf))
    		  {//vergleich
    		           echo "$vergleich[AT]";
    				   echo "$inhalt[AT]";
    		           $inhalt = mysql_fetch_array($tabelleninhalt);
    		   		   if ($vergleich[AT] == $inhalt[AT])
    				   {
    		           echo "<td>$inhalt[AT]</td>";
    		           }
    				   else
    				   {
    				   echo "<td>x</td>";
    				   } 
    		   }//Vergleich 								  
    		echo "</tr>";
    		}
    		}
    		echo "</tr>";
    		echo "</tr></table>";
    		}?>
    thx 4 all help !

  • #2
    wie sieht denn deine tabelle aus?

    ps. kannst du bitte den code oben in PHP tags einklammern. NICHT in CODE tags. bei php wird bunt, und man kann es besser lesen.
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      Sorry, so siehts in PHP aus:

      PHP-Code:
        <?
      include ('dbconfig.php');
      if (!$verbindung) {
              echo "Keine Verbindung zur Datenbank möglich!\n";
              exit;
          }
      if (isset($AH_Wahl) && $AH_Wahl !="" ) {
              $abfrage1 = "SELECT DISTINCT AT from auspuffanlage WHERE AH = '$AH_Wahl' ORDER BY AT";
              $abfrage2 = "SELECT DISTINCT MM from auspuffanlage WHERE AH = '$AH_Wahl' ORDER BY MM";
                          
              $tabellenkopf = mysql_db_query($db,$abfrage1,$verbindung);
              $tabellenmarke = mysql_db_query($db,$abfrage2,$verbindung);
              $test_ob_leer = mysql_db_query($db,$abfrage1,$verbindung);
          
          
          if (mysql_fetch_row($test_ob_leer)==0) 
                {  
                echo "Von Hersteller <b>\"$AH_Wahl\"</b> leider keine Anlage gefunden.";
                mysql_close($verbindung);
                }
                else 
              {    
              echo "Matrix für Hersteller $AH_Wahl:<br>";    
              echo "<table border=\"1\" width=\"594\"><tr><td align = \"center\">Marke</td>";
              while ($kopf = mysql_fetch_array($tabellenkopf))         
              {
              echo "<td align=\"center\">$kopf[AT]</td>"; 
              }echo "</tr>";
              
              
              while ($marke = mysql_fetch_array($tabellenmarke)) 
              {
              echo "<tr><td align=\"center\">$marke[MM]</td>";
              
              $abfrage3 = "SELECT DISTINCT AT from auspuffanlage WHERE AH = '$AH_Wahl' and MM ='$marke[MM]' ORDER BY AT";
              $tabelleninhalt = mysql_db_query($db,$abfrage3,$verbindung);
              
                while ($vergleich = mysql_fetch_array($tabellenkopf))
                {//vergleich
                         echo "$vergleich[AT]";
                         echo "$inhalt[AT]";
                         $inhalt = mysql_fetch_array($tabelleninhalt);
                            if ($vergleich[AT] == $inhalt[AT])
                         {
                         echo "<td>$inhalt[AT]</td>";
                         }
                         else
                         {
                         echo "<td>x</td>";
                         } 
                 }//Vergleich                                   
              echo "</tr>";
              }
              }
              echo "</tr>";
              echo "</tr></table>";
              }?>

      Kommentar


      • #4
        danke. aber wie sieht denn deine tabelle aus?
        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


        Kommentar


        • #5
          Hi Abraxax,
          die schaut so aus:


          Kommentar


          • #6
            jetzt bin ich total verwirrt?

            das sieht mir eher nach nem screenshot deiner ausgabe aus.

            kannst du mir mal bitte die tabellenstruktur senden.

            danke
            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


            Kommentar


            • #7
              jetzt habe ich deinen anderen post zufällig entdeckt. hier macht man eignetlich keine arbeit doppelt !!!!

              http://www.php-resource.de/forum/sho...threadid=14469

              bitte bleibe bei einem thread.

              da das matrizenproblem gelöst zu sein scheint, mache ich hier auch nichts mehr.
              INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


              Kommentar


              • #8
                Sorry, das Problem besteht immer noch.
                Ich habe alles in einer Tabelle Namens "auspuffanlagen" drin, sieht so aus:




                Ich bekomme es nicht gebacken, dass er mir bei der Abfrage

                PHP-Code:
                while ($marke mysql_fetch_array($tabellenmarke)) 

                echo 
                "<tr><td align=\"center\">$marke[MM] Durchlauf $i</td>";  
                    
                $abfrage3 "SELECT DISTINCT AT from auspuffanlage WHERE AH = '$AH_Wahl' and MM ='$marke[MM]' and AT ='$vergleich[AT]' ORDER BY AT";
                $tabelleninhalt mysql_db_query($db,$abfrage3,$verbindung);

                jeweils ein neues Query Ergebnis liefert und in der $Abfrage3 den Wert
                $marke[MM] für jeden While durchlauf ändert.
                D.h. ich bekomme nur den ersten Datensatz angezeigt und beim 2. gibts kein Ergebnis mehr.
                Sorry for Doppelpost, dachte vorher ich habe das Problem gelöst. *sniff*

                Kommentar


                • #9
                  Problem hat sich erledigt, Rechner wurde soeben zerstört ;-)

                  Kommentar

                  Lädt...
                  X