Mailinglisten-Archive |
Hallo Norbert,
Am 6. Mai 2004 um 14:48 schrieb Norbert Pfeiffer:
> Nun kann man einen Select absetzen, das Ergebnis tauschen
> und wieder Updaten. Das ergibt auch wieder 2 Querys.
>
> z.B.:
> <?
> $ID = array(2, 4); /* Reccord-ID's */
> sort($ID); /* Ordnung absichern */
> $ids = implode($ID, ',');
> $query = "SELECT KatBez FROM kategorien
> WHERE KatNr IN ($ids) ORDER BY KatNr";
> $EG = $DB->get_data($query, '*');
> /* Argument '*' erzeugt einspaltiges Array */
> krsort($EG); /* vertauschen der Werte */
> $i = 0;
> foreach($EG as $val) {
> $query = "UPDATE kategorien SET KatBez = '$val'
> WHERE KatNr = ".$ID[$i];
> echo $query."\n";
> $ok = $DB->get_access($query);
> $i++;
> }
> ?>
Ja, so in etwa habe ich es bisher gelöst (etwas weniger Absicherung und
mit deutlich mehr Code, aber im Prinzip). Meine Frage war, ob man das
über geschickte mysql-Queries vereinfachen könnte. Immerhin hängt da
eine Menge Aktion dran: Array erstellen, in String umwandeln, eine
SELECT-Abfrage, Arrayreihenfolge ändern und zwei UPDATE-Queries.
Aber trotzdem vielen Dank, als (relativer) Anfänger kann ich auf jeden
Fall was rausziehen. Die Ordnung des $ID-Arrays hätte ich z. B. nicht
abgesichert . Sollte man das machen? Ich habe gerade nachgelesen, dass
PHP eigentlich keinen Unterschied zwischen assoziativen und einfachen
Arrays macht. Obiges Array würde von PHP doch dann so interpretiert:
[0] => 2
[1] => 4
womit es kein Reihenfolgeproblem geben dürfte.
Peter
--
----------------------------------------------------------------
Peter Linzenkirchner
Lisardo Multimedia GmbH
Herrenbachstraße 19, 86161 Augsburg
Tel. ++49-821-150565, Fax ++49-821-150595
----------------------------------------------------------------
php::bar PHP Wiki - Listenarchive