Problem mit UPDATE

toboli

Erfahrenes Mitglied
Hallo,

ich möchte in einer Schleife Datenssätzen einen anderen Wert zuweisen.
Die soll direkt nach dem Login eines Users geschehen um gewissen Daten zu sperren.

Hier meine Abfrage

PHP:
$result = mysql_query("SELECT * FROM users");
while ($row = mysql_fetch_array($result)) {
 $id = $row[user_id];

 if ($row->work == 1 ) 
 {
 // Kein Eintrag 
 }  else {
 $result2 = "UPDATE users SET disabled= '1' WHERE user_id = '$id'";
 }

}

Die Variable work wird direkt nach dem Login gesetzt und soll verhindern, dass auch der aktive User gesperrt wird.

Leider werden die Änderungen aber in den DB nicht vorgenommen. Ich erhalte auch keine Fehlermeldung.

Kann mir hier jemand weiterhelfen ?
 
Zuletzt bearbeitet:
PHP:
// wenn Du eh nur die user_id brauchst:
$result = mysql_query("SELECT user_id FROM users");
while ($row = mysql_fetch_array($result)) {
 $id = $row[user_id];

 if ($row->work == 1 ) 
 {
 // Kein Eintrag 
 // zum debuggen ganz brauchbar:
echo $row->work;
 }  else {
// nummerische Werte also weg mit '
 $sql2 = "UPDATE users SET disabled=1 WHERE user_id = $id";
// was vergessen:
 $result2 = mysql_query($sql2);
 }

}
 
danke mal,

jetzt wird überall die 1 eingetragen. allerdings auch bei dem eintrag mit work=1 ?!
weiß jetzt auch nicht wo der fehler liegt. das if sollte das ja eigentlich ausschließen....
 
Versuch mal folgendes:
PHP:
<?php
	[…]
	$query = "
		UPDATE
		        `users`

		  SET
		        `disabled` = 1

		  WHERE
		        `user_id` = ".$user_id."
		    AND `work` != 1
	"; 
	if( !mysql_query($query) ) {
		echo '<p><strong>MySQL Error <tt>'.mysql_errno().'</tt>:</strong> '.htmlspecialchars(mysql_error()).'<pre>'.$query.'</pre></p>';
		exit;
	}
	[…]
?>
 
Original geschrieben von toboli
jetzt wird überall die 1 eingetragen. allerdings auch bei dem eintrag mit work=1
Wo kommt work eigentlich her?
Sollte das aus der user-Tabelle kommen mußt Du mit
$row[user_id] drauf zugreifen, nicht mit $row->work.

Ach ja in den SELECT gehörts natürlich auch rein.

Aber Sinn macht das ja dann auch keinen, denn wenn work direkt nach dem Login gesetzt wird kannst Du ja auch gleich disabled auf 1 setzen :confused:
 
@ Gumbo: geht leider auch nicht...aber danke

@ German: jetzt verliere ich langsam elber den plan :-) also, dass work wird direkt nach dem login in die tabelle users gesetzt. sobald dieses gesetzt wurde soll die schleife in allen useraccounts das disabled auf 1 setzten. mit dem disabled wird angefragt ob account frei oder gesperrt ist. das work dachte ich mir dafür, dass die schleife erkennt wer auf disabled gesetzt werden soll.

beides, also work und disabled, wird nach dem login wieder auf den standard gesetzt.

sch... urlaubsvertretung...ich habe nicht allzuviel plan von php. daher auch mein
hilferuf...

wo soll ich das $row[user_id] setzten ?! sorry...
 
Original geschrieben von toboli
wo soll ich das $row[user_id] setzten?
Eigentlich in die if-Bedingung


beides, also work und disabled, wird nach dem login wieder auf den standard gesetzt.
Wenn auch beides zur gleichen Zeit auf "nichtStandard" gesetzt wird ist wohl eines davon überflüssig.

Mir ist auch nicht ganz klar wer einloggt, der User, der Admin, soll das eine Verriegelung werden?

Erklär doch bitte mal die näheren Zusammenhänge Step by Step, da gibts bestimmt eine einfachere Lösung.
 
ok, hier mal schritt für schritt.

es gibt mehrere user die zugriff auf eine datei zum download haben sollen.
diese datei soll aber nur dann verfügbar sein, wenn gerade kein user
diese bearbeitet.

das heißt, ein user loggt sich ein und zieht die datei zum bearbeiten. solange
sollen die anderen user keinen zugriff auf diese datei haben. wenn der user die datei bearbeitet hat und diese auf den server gespielt, muss dieser die datei wieder freigeben um den anderen usern den zugriff auf diese zu ermöglichen. das wars eigentlich schon...
 
Na dann reichts ja wirklich wenn disabled auf 1 gesetzt wird, allerdings noch nicht beim Login sondern erst in dem Script mit dem Download sonst sperrt sich der User ja selber aus ;)
 
Zurück