• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

function zur Tabellen Erstellung

T

ToM80

Guest
Nabend zusammen,

ich sitze hier gerade an einem Problem wo ich nicht auf den grünen Zweig komme.

Ich habe eine Tabelle, die ich aufgrund von AJAX-Abfragen mehrfach ausgeben muss. Ich würde gerne aufgrund der Symblifizierung, der Fehlervermeidung und der Verringerung des Wartungsaufwand diese Tabelle in eine Funktion packen.

Allerdings ist der Tabelleninhalt sehr unterschiedlich und ich würde ihn gern in ein Multi-Array packen, alerdings befinden sich in den Zellen wiederum wieder PHP Anweisungen.

Hier mal ein Beispiel:
PHP:
//ARR ZEILEN DEFINIEREN
$zeilen=Array();
$zeilen[0]=Array("Style" =>'style="width: 180px;"',"Content"=>'$db->f("bdmenuArtikelnummer");');

echo '<table cellpadding="0" cellspacing="0" border="0">';
    $db->query($abfrage);
    while($db->next_record()) {
        $output.='<tr>';
            $output.='<td '.$zeilen[0]["Style"].'>';
		    $output.=$zeilen[0]["Content"];
            $output.='</td>';
        $output.='</tr>';
    }
$output.='</table>';

}

Mir ist klar das obiges Beispiel nicht funktionieren kann, da ja die PHP Anweisung von Content nun als Textausgegeben wird.
Ich denke ich versuche das ganze falsch zu lösen, hat jemand eine Idee wie man das stattdessen beheben kann?
 
ich sehe an diesem Ansatz nichts falsches, habe ähnliche konstrukte letztens erst in perl gebaut... da war es aber noch um einiges mehr verschachtelt
(array of (anonym)arrays of hashes oder so in der art)

was spricht denn dagegen z.B.

PHP:
$zeilen[0]["Content"] = $db->f("bdmenuArtikelnummer")

zu verwenden?
 
Zum Zeitpunkt der Arrayerstllung ist der Datenbankuugang noch nicht erstellt, d. h. erst beim auslesen des Arrays soll und kann
Code:
$db->f("bdmenuArtikelnummer")
einen Wert zurückliefern.
 
Ich glaub ikke bin zu dumm dafür.
Habe jetzt folgendes:
PHP:
<?php
$styles=Array();
$styles[]='style="width: 180px;"';
$zeilen=Array();
$zeilen[]='$db->f("bdmenuArtikelnummer");';

$select="*";
$tbl="tbl_bdmenu";
$where="WHERE bdmenuID='1'";
$sort="";
//AUSGABE
function createTable($tblF,$selectF,$whereF,$sortF,$stylesF,$zeilenF) {
  global $db;
	echo '<table cellpadding="0" cellspacing="0" border="0">';
    $abfrage="SELECT ".$selectF." FROM ".$tblF." ".$whereF." ".$sortF;
    $db->query($abfrage);
    while($db->next_record()) {
      echo '<tr>';
        echo '<td '.$stylesF[0].'>';
		      echo $zeilenF[0];
        echo '</td>';
      echo '</tr>';
    }
  echo '</table>';
}
call_user_func('createTable',$tbl,$select,$where,$sort,$styles,$zeilen);
?>

Ausgabe unverändert:
Code:
$db->f("bdmenuArtikelnummer");

Was mache ich falsch?
 
Zuletzt bearbeitet von einem Moderator:
Ok, habe das Problem gelöst:
PHP:
$styles=Array();
$styles[]='style="width: 180px;"';
$zeilen=Array();
$zeilen[]=Array("Object"=>"db","field"=>"bdmenuArtikelnummer");
$select="*";
$tbl="tbl_bdmenu";
$where="WHERE bdmenuID='1'";
$sort="";
function createTable($tblF,$selectF,$whereF,$sortF,$stylesF,$zeilenF) {
  global $db;
	echo '<table cellpadding="0" cellspacing="0" border="0">';
    $abfrage="SELECT ".$selectF." FROM ".$tblF." ".$whereF." ".$sortF;
    $db->query($abfrage);
    while($db->next_record()) {
      echo '<tr>';
        echo '<td '.$stylesF[0].'>';
	  echo $$zeilenF[0]["Object"]->f($zeilenF[0]["field"]);
        echo '</td>';
      echo '</tr>';
    }
  echo '</table>';
}
call_user_func('createTable',$tbl,$select,$where,$sort,$styles,$zeilen);
 
Ok, zufrüh gefreut. Das ganze Konstrukt funktioniert zwar, aber ich habe die Tabellen komplizierter aufgebaut und ich bekomme das so nicht unter einen Hut. Zumindest weiß ich gerade wieder nicht wie.
Würde ich nur eine ganz einfache Ausgabe der DB in der Tabelle machen wär das alles kein Problem. Ich habe aber in jeder Spalte unterschiedliche Inhalte. Obenstehend gilt für Spalte 1, Spalte 2 sieht wiederum so aus:
PHP:
$content.='<button name="btnName" class="btnTbl" onclick="editItem('.$x.',\'fsMenuContent'.$x.'\',\'bdmenu\','.$db->f("bdmenuID").',\''.$_SESSION['resolution'].'\',600,600);">';
$content.=$db->f("bdmenuName");
$content.='</button>';
Spalte 3 hat ein Selectfeld mit IF Anweisung in dem Notfalls ein UPDATE des Datensatzes gefahren wird. Spalte 5 wiederum hat ebenfalls eine IF Abfrage mit unterschiedlichen Inhalten *grml*

Wie soll man denn sowas in einer einzigen Funktion abbilden?
 
Habe das Problem jetzt anders gelöst.
Die Datenbankabfrage ist eine Funktion für sich, hier erstelle ich den späteren Tabelleninput. Dann springe ich in eine zweite Funktion und erstelle die entsprechende Tabelle mit den Inhalten.
 
Zurück
Oben