dedlfix: while(dynamisch) - Wie?

Beitrag lesen

echo $begrüßung;

Ich habe das jetzt so gelöst:

Das Prinzip dieser Lösung ist schon mal gut. Du trennst damit das Erzeugen/Abfragen der Daten von deren Verarbeitung. Durch diese Trennung fällt es später einmal leichter, die einzelnen Aufgaben auszulagern oder zu überarbeiten, ohne dass der andere Teil in Mitleidenschaft gezogen wird.
Doch einige Details sind verbesserungsfähig.

if(test == 1) {
$sql    = $site_db->query("SELECT id, herst, bez, typ, sernr, bemerk, coords, zbv FROM maschinen WHERE standort = 'Schleiferei'");
$anz = 0;

while($dat[$anz] = $site_db->fetch_array($sql)) {
  $daten[$anz] = $dat[$anz];
  $anz++;
}
}

Wofür nimmst du diese Zählvariable $anz? Beim Verwenden von leeren Klammern hinter einer Array-Variable ($array[]) wird der Key automatisch von 0 an fortlaufend hochgezählt.[1]
Es ist auch nicht nötig, die Elemente eines weiteren Arrays als Zwischenvariable zu verwenden. Eine normale Variable reicht dafür. Durch das Wiederverwenden wird auch nicht unnötig viel Speicher für Nichts verwendet.
Auch ist es empfehlenswert, das Array das die abzufragenden Datensätze aufnehmen soll, als Array zu initialisieren, sonst fällst du später auf die Nase, wenn du bei einer Abfrage, die keine Datensätze liefert, das nicht vorhanden Array mittels foreach durchlaufen willst.

$sql = $site_db->query("...");
  $daten = array();
  while ($record = $site_db->fetch_array($sql))
    $daten[] = $record;

else {
$where  = array("Versand", "Handfertigung", "Betriebstechnik", "Druckluftraum");

foreach($where as $key) {
  $sql = $site_db->query("SELECT id, herst, bez, typ, sernr, bemerk, coords, zbv FROM maschinen WHERE standort = '".$key."'");

Warum nimmst du hier nicht eine einzelne Abfrage mit OR-verknüpfter Bedingung statt 4 einzelner Abfragen? Jede einzelne Abfrage ist "teuer", weil sie neu geparst werden muss, und der Datenbestand muss erneut durchsucht werden.

$query = "SELECT ... WHERE standort='" . implode("' OR standort='", $where) . "'";
  // echo $query; // Kontrollausgabe, um zu sehen, dass die Abfrage richtig zusammengesetzt wird
  $sql = $site_db->query($query);
  // weiter wie oben

while(list($key, $data) = each ($daten)) {
viele Befehle
}

Statt while-list-each zum Durchlaufen eines Array nimmt man besser als foreach:

foreach ($array as $key => $value)

echo "$verabschiedung $name";

[1] Genauer gesagt: Ein [] bewirkt, dass der bis jetzt höchste numerische Key-Wert um eins erhöht als Key für das neue Element verwendet wird.