Tabelle dyn. generieren

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

  • Tabelle dyn. generieren

    Hallo,

    ich möchte eine Funktion schreiben die mir die Tabelle dyn. generiert.
    D.h wenn später eine Spalte in der DB hinzugefügt wird, soll das Skript die neue Spalte mit einbeziehen.


    Die Tabelle schaut derzeit so aus:

    Zimmernr beschreibung tv balkon
    58 mit ausblick 1 1
    89 oberster stk. 1 0

    PHP-Code:
    public function ms_table_form($sql,$post_formurl)
    {
        
    $dbconnect $this->mssql;

        if(
    $dbconnect==false)
            return 
    trigger_error("Class dbcon_functions: Es wurde noch keine Verbindung von dieser Instanz zur DB aufgebaut! dbconnect(false)",E_USER_ERROR);
        else
        {
            
    $result mssql_query($sql);
            
    $i=0;
            while (
    $i mssql_num_fields($result))
            {
                
    $meta mssql_fetch_field($result$i);
                if (!
    $meta)
                    return 
    trigger_error("Class dbcon_functions: Keine Information verfügbar ".var_dump($meta)."! dbconnect(false)",E_USER_ERROR);
                else
                    
    $datentyp[] = $meta->type;
                
    $i++;
            }
            
    $spaltenanzahl Count($datentyp);
            
            echo 
    "\n".'<form action="'.$post_formurl.'" method="POST" name="form1">';
            echo 
    "\n\t<table border=\"1\">";

            
    $result mssql_query($sql);
            if(
    gettype($result)!="boolean")
            {
                
                for(
    $int 0$int<$spaltenanzahl;$int++)
                    
    $names[] = mssql_field_name ($result,$int);
                
    $count 0;

                while(
    $row mssql_fetch_array($result))
                {
                    echo 
    "\t<tr>";
                    for(
    $int 0;$int<$spaltenanzahl;$int++)
                    {
                        switch (
    $datentyp[$count])
                        {
                            case 
    "int":
                                echo 
    "\t\t<td>".$row[$count]."</td>\n";
                                break;
                            case 
    "text":
                                echo 
    "\t\t<td><textarea name=\"".$names[$count].trim($row[0])."\" cols=\"35\" rows=\"4\">".trim($row[$count])."</textarea></td>\n";
                                break;
                            case 
    "bit":
                                if(
    $row[$count]=="1")
                                    
    $checkbox "checked=\"checked\"";
                                else
                                    
    $checkbox "";
                                echo 
    "\t\t".'<td><input type="checkbox" name="'.$names[$count].trim($row[0]).'" value="'.$names[$count].'" '.$checkbox.'> '.$names[$count].'<br></td>'."\n";
                                break;
                            default:
                                echo 
    "Für den ".$datentyp." gibt es kein passendes Steuerelement.";
                        }
                    }
                    echo 
    "\t</tr>";
                }
            }
            else
                return 
    trigger_error("Class dbcon_functions: Die übergebene Query $sql = ".$sql." ist fehlerhaft",E_USER_ERROR);    
            
            echo 
    "\n\t</table>";
            echo 
    "\n\t".'</form>';

        }

    Passen dazu sollen auch die richtigen Formelemente platziert werden. Also bei einer bool Spalte eine checkbox usw.

    Bei meinem Script erhalte ich die Ausgabe:

    58 58 58 58 58 58 58
    89 89 89 89 89 89 89

    Es wird also nur die erste Spalte ausgeben. ICh weiß nicht wie ich die weiteren Spalten bekomme.

    Lösche ich die for schleife weg, erhalte ich das ergebniss:

    58
    89

    Das switch wird also nur einmal pro Zeile durchlaufen. Was muss ich tun damit das swicht pro Zeile durch jede Spalte lauft?

    mfg
    Zuletzt geändert von Briefkasten; 11.02.2007, 17:08.

  • #2
    erstmal lesen und umsetzen: Forum-Regel

    Kommentar


    • #3
      man man man...was'n code...

      was mir auf anhieb auffällt: die for-Schleife wird mit $int aufgerufen, im switch jedoch $count verwendet!? Ansonsten solltest du vielleicht den relevanten SQL Code mitposten (Wenn man schon im sql Bereich postet) und unbedingt (vor allem anderen) auf meinen Vorposter hören ;-)

      Kommentar

      Lädt...
      X