Denkfehler im Update-Script?

Hallo miteinander!
Ich habe seit knapp einem Jahr nicht mehr gecodet und deswegen gleich von vorneweg die Entschuldigung für meine evtl. dummen Fehler...

Jetzt zu meinem Script! Ich habe in meiner MySQL Datenbank eine Tabelle, die die Spalte duration enthält. Diese müsste von Zeit zu Zeit mit einer UPDATE Funktion auf den neusten Stand gebracht werden...

Da es 963 Datensätze sind in der Tabelle nutze ich eine for Schleife! Danach nehm ich den aktuellen Wert von duration mittels SELECT aus der Datenbank und erneure schließlich mit UPDATE das ganze!

Im Script zeigt er mir an das er die Datensätze nicht aktualisieren kann!
Hab ich einen Denkfehler da drin oder einen Leichtsinnsfehler?
Wäre nett wenn ihr mir helfen würdet! Dank im voraus!

PHP:
  for($x=1; $x <= 963; $x = $x+1)
  {
  $sql = "SELECT `duration` FROM `dohl_league_player` WHERE `id` = $x";
  $p = mysql_query($sql,$con);
  if ($p)
  {
  $sqlo = "UPDATE `dohl_league_player` SET `duration` = ".$p."-1 WHERE `id` = $x";
  if (mysql_query($sqlo))
  {
  echo "Datensatz ".$x." wurde erfolgreich aktualisiert!<br>\n";
  }
  	else
  	{
  	echo "Datensatz ".$x." konnte nicht aktualisiert werden!<br>\n";
  	}
  }
  	else
  	{
  	echo "Der Datensatz konnte nicht sortiert werden!<br>\n";
  	}
  }

keep on checking
Hockeyfan
 
Das erste Problem das ich sehe, ist dass du

PHP:
$p = mysql_query($sql,$con);
nicht mit mysql_fetch_array(); weiterverarbeitest. D.h. du setzt den Wert, der SQL-Anfrage, der in $p gespeichert wird, danach wieder bei duration ein und nicht den jeweiligen Wert der Spalte Duration.

Ich würde $p also wiefolgt weiterverarbeiten:
PHP:
$rows = mysql_fetch_array($p);
$new_duration = $rows['duration'];

und dann den Wert $new_duration im Update anstelle von $p verwenden.
Das ist das eine. Das andere ist eine Frage an dich: Hast du die 936 Datensätze mit
mysql_num_rows(query); dir anzeigen lassen oder weißt du sicher, dass die IPs von 1-936 durchlaufen?
Und, was möchtest du mit $p oder bei mir $new_duration genau anstellen? Speicherst du darin eine Zahl, die dann um 1 kleiner sein soll? Dann versuch das ganze doch mal außerhalb von mysql vorzunehmen, d.h.:

PHP:
$new_duration--;
und einfach den Wert einzutragen.
 
Zuletzt bearbeitet:
Schau mal was
PHP:
 $sql = "SELECT `duration` FROM `dohl_league_player` WHERE `id` = $x";
 $p = mysql_query($sql,$con);
 echo $p;
ergibt, vieleicht klingelts ja dann schon ;)


Abgesehen davon macht
PHP:
$sqlo = "UPDATE `dohl_league_player` SET `duration` = duration-1 WHERE `id` <= 963";
schon das was Du vor hast
 
German hat gesagt.:
Schau mal was
PHP:
  $sql = "SELECT `duration` FROM `dohl_league_player` WHERE `id` = $x";
  $p = mysql_query($sql,$con);
  echo $p;
ergibt, vieleicht klingelts ja dann schon ;)


Abgesehen davon macht
PHP:
 $sqlo = "UPDATE `dohl_league_player` SET `duration` = duration-1 WHERE `id` <= 963";
schon das was Du vor hast
Jetzt gehen mir einige Lichter auf!
Danke @ all!
Hab jetzt die SELECT Abfrage entfernt und jediglich die UPDATE so wie oben da stehen...
perfekt!

keep on checking
Hockeyfan
 
Zurück