| px | top | add code | search | signup | login | help |
<?php
define('MYSQL_FETCH_TABARR',0); # Tabellennamen als zusätzliches Array
define('MYSQL_FETCH_TABNON',1); # Tabellennamen ignorieren
define('MYSQL_FETCH_TABSTR',2); # Tabellennamen als String-Präfix
# Funktion mysql_fetch_array_tab: Liefert einen selektierten Datensatz.
# [res] Datenbankresultat
# [typ] Art des Datensatzarrays (Vorgabe: MYSQL_ASSOC)
# [tab] Umsetzung der Tabellennamen (Vorgabe: MYSQL_FETCH_TABNON)
function db_mysql_fetch_array_tab($res,$typ=MYSQL_ASSOC,$tab=MYSQL_FETCH_TABNON) {
# Umsetzung von $typ über mysql_fetch_array() realisieren: Wenn die
# Tabellennamen umgesetzt werden sollen, werden beim Typ DB_ASSOC
# zusätzlich noch numerische Indizes erzeugt.
$arr = mysql_fetch_array($res,$tab!=MYSQL_FETCH_TABNON&&$typ==MYSQL_ASSOC?MYSQL_BOTH:$typ);
# Kein Ergebnis bzw. Tabellennamen ignorieren: Ergebnis zurückliefern.
if (!$arr || $tab==MYSQL_FETCH_TABNON) return($arr);
# Datensatz abarbeiten (nur numerische Indizes):
foreach ($arr as $f => $v) if (is_int($f)) {
# Tabellennamen feststellen:
$t = mysql_field_table($res,$f);
# Bei MYSQL_ASSOC numerischen Index wieder löschen:
if ($typ == MYSQL_ASSOC) unset($arr[$f]);
# Sonst fortlaufenden numerischen Index je Tabelle erzeugen:
else $i = intval($c[$t]++);
# Außer bei MYSQL_NUM noch Feldnamen feststellen:
if ($typ != MYSQL_NUM) $n = mysql_field_name($res,$f);
# Tabellennamen als String-Präfix: Feld(er) erzeugen.
if ($tab == MYSQL_FETCH_TABSTR) {
if (isset($i)) $arr[$t.'.'.$i] = $v;
if (isset($n)) $arr[$t.'.'.$n] = $v;
# Tabellennamen als zusätzliches Array: Array(s) erzeugen.
} else {
if (isset($i)) $arr['.'][$t][$i] = $v;
if (isset($n)) $arr['.'][$t][$n] = $v;
}
}
return($arr);
}
?>
Comments or questions?
PX is running PHP 5.2.11
Thanks to Miranda Productions for hosting and bandwidth.
Use of any code from PX is at your own risk.