phpbar.de logo

Mailinglisten-Archive

[php] autom. UPDATE-SET generieren

[php] autom. UPDATE-SET generieren

Steffen Kother steffen.kother at gmx.net
Mit Nov 24 14:56:09 CET 2004


Hallo Leute,

trotz des herrlichen Wetters draussen und des vielen Sonnelichts komme 
ich nciht weiter.

Bei einer "Sicherheitsfrage" werden geänderte Felder wie folgt für die 
UPDATE-Funktion aufbereitet:

<snip>
foreach ($WerteArr as $Key => $kVal) {
    $Tabelle.= '<input type="hidden" name="SET[]" value="';
    $Tabelle.= base64_encode($Key.'@'.$kVal).'">'."\r\n";
}
</snip>

"SET[]" einfach, damit ich alle mit einem Rutsch verarbeiten kann 
(s.u.). Beim endgültigen Sichern sollen bestimmte $Key extra 
verarbeitet werden. So hier alles, was nciht mit "INV" zu tun hat:

<snip>
/*
$SET  = Felder zu ändern in Form Schlüssel at Wert
$dSET = zerlegtes $SET, Schlüssel in $dSET[0], Wert in $dSET[1]
$cSET = Anzahl der Felder
$mSET = MySQL UPDATE-SET
$sSET = 1 sofern Schlüssel "INV" enthält sonst 0
*/

$SET = decode_base64($_POST['SET']);
$cSET = count($SET);

$mSET = '';
for ($x = 0; $x < $cSET; $x++) {
    $dSET = explode('@', $SET[$x]);
    $sSET = substr_count($dSET[0], 'INV');

    if (empty($sSET)) {
        if ($dSET[0] == 'KND_NR') $dSET[0] = 'kunnr';
        if ($dSET[0] == 'VERKAEUFER') $dSET[0] = 'an';

        $mSET.= strtolower($dSET[0]).' = "'.$dSET[1].'"';
        if ($x + 1 < $cSET) $mSET.= ', ';
        else $mSET.= ' ';
    }
}
</snip>

Es bleibt aber immer noch ein Komma übrig. Geändert wurden 3 Felder (2x 
anderes, 1x Bzgl. "INV").

"UPDATE fibu_db.probleme SET kunnr = "4711", problem = "Das...", WHERE 
lfd_nr = 1".

Gibt es da noch eine passende Möglichkeit oder muss ich es doch mit 
"str_replace()" entfernen?

Vielen Dank für eure Tipps schonmal.
-- 
Mit freundlichen Grüßen / Kind regards

Steffen Kother


php::bar PHP Wiki   -   Listenarchive