Kalle_B: Meine Anwendung: Auslagerung der Anzeige

Beitrag lesen

Hallo, dedlfix,

Sag doch mal, was dein Problem ist, dass du nicht assoziativ zugreifen kannst?

Ich habe die Bildschirm-Ausgabe komplett ausgelagert.

Einerseits in eine htm-Datei MIT PLATZHALTERN. Damit kann ich das Layout vorab lokal ohne PHP und ohne Daten betrachten und bearbeiten:

<style .... /style>
<!-- [kopf] -->
<table>
<tr>
  <th>Name</th>
  <th>Tel</th>
</tr>
<!-- [/kopf] -->
<!-- [position] -->
<tr>
  <td>[vorname]</td>
  <td>[mobilnr]</td>
</tr>
<!-- [/position] -->
<!-- [fuss] -->
</table>
<!-- [/fuss] -->

Andererseits in ein function, dessen Aufgabe es ist, diese htm-Datei einzulesen, die Platzhalter zu ersetzen und per echo auszugeben. Dieses function ist natürlich für ALLE Programme des Projekts dieselbe, also kennt sie nicht die Namen der Platzhalter.

Im ersten Anlauf habe ZWEI Arrays übergeben, im ersten die Namen und im zweiten die Werte. Das ist beim Aufbau der beiden Arrays natrlich sehr fehleranfällig, wie leicht kann man da was übersehen.

$platzhalter = array(
  array( "position","[vorname]","[mobilnr]" )
 ,array( "position","[vorname]","[mobilnr]" )
 ,array( "position","[vorname]","[mobilnr]" )
);
$daten = array();
$zeile = 0;
while ( $row = ...
  $daten[$zeile][0] = $row['vname'];
  $daten[$zeile][1] = $row['mobil'];
  $zeile++;
}

Änderungen/Erweiterungen sind umständlich und fehlergefährdet, weil die Anzahl und Reihenfolge der Elemente in beiden Tabellen genau eingehalten werden muss. Da kam ich auf die Idee mit dem assoziativen Array, das enthält ja die gewünschten Paare:

$daten = array();
$zeile = 0;
while ( $row = ...
  $daten[$zeile] = array(
    'segment' => 'position'
   ,'[vorname]' => $row['vname']
   ,'[mobilnr]' => $row['mobil']
   );
  $zeile++;
}

Also muss das function die Keys aus dem Array fischen, weil sie die Platzhalter sind.

Habe dieses Verfahren der Auslagerung vor ein paar Tagen diskutieren wollen, bekam aber nur eine Antwort. Habe ich jetzt selbst entwickelt, obwohl das doch Thema in fast jedem größeren Projekt sein müsste.

LG Kalle