phpbar.de logo

Mailinglisten-Archive

[php] =?ISO-8859-1?Q?Verzwickte_UPDATE-Anweisung_f=FCr_MySQL?=

[php] Verzwickte UPDATE-Anweisung für MySQL

Markus Nemetz php_(at)_phpcenter.de
Wed, 29 Aug 2001 15:01:58 +0200


Hallo!

Zuerst einam wirklich vielen Dank fuer die Beantwortung meiner Frage nach
einem "Denkanstoss für Datum/Select"!!!
Ein anderes Problem ist aufgetreten:
In einer MySQL-tabelle werden Einzelleistungen von verschiedenen Aufträgen
verwaltet. Sie ist so aufgebaut:
 -----------
| id | nrez |
 -----------
| 1  | 1    |
 -----------
| 1  | 2    |
 -----------
| 2  | 1    |
 -----------
| 1  | 3    |
 -----------
| 2  | 2    |
 -----------
   ....
Wobei id aus einer anderen Tabelle entnommen wird. Dieser id wird eine
bestimmte Einzelleistung zugeordnet (mit der Nummer nrez).
In meinem Programmist es möglich, eine Einzelleistung zu löschen. Nehmen wir
an, ich will die Einzelleistung 1 mit der id 1 löschen. Das ist kein Problem
- nur leider wird es nachher problematisch, wenn neue Leistungen hinzugefügt
werden. Dann entstehen Redundanzen.
Ich kann die Redundanzen nicht umgehen, indem ich die Tabelle spalte, weil
sie in einem Netzwerk vieler Tabellen eingebunden und eigentlich nur für die
Dauer einer Session angelegt ist (hinsichtlich der einzelleistungen).
Daher habe ich mir überlegt, die nrez upzudaten, nur leider funktioniert
folgendes Skripterl nicht:

		if (! $link )
			die ("Keine Verbindung zu MySQL!");
		mysql_select_db( $db, $link )
			or die ("Konnte Datenbank   \"$db\" nicht
öffnen!:".mysql_error() );
		$update="DELETE FROM sonst WHERE nrez='$nrdel' AND
id='$idso'";
		mysql_query($update);
		$query="SELECT * FROM  sonst WHERE id='$idso'";
		$result=mysql_query($query);
		for( $nrnew=0; $nrnew<=mysql_num_rows($result); ) {
			$update="UPDATE sonst SET nrez='$nrnew' WHERE
id='$idso'";
			mysql_query($update);
			$nrnew++;
		}

Weiß jemand Rat?

LG und Dank im voraus
Markus


php::bar PHP Wiki   -   Listenarchive