dedlfix: delete und min?

Beitrag lesen

Tach!

klappt prima - danke. - bis auf die sache, das ich bei 13:00:00 den Wert 01:00:00 bekomme (ohne AM/PM) was beim ORDER BY wichtig wäre.

Wenn ich mal rate, dass du diese Stelle gemeint haben könntest:

$zeit= strtotime("12:00:00");
  $i = 1;
  while ($i < 31) {
    $zeitsec = date('h:i:s',  mktime(date('h', $zeit), date('i', $zeit),  date('s', $zeit) + $i));
    mysql_query(sprintf('insert into test.akt1 (zeitsec, wertsec, maxsec) VALUES ("%s", "100", "20")',
      addslashes($zeitsec) ) );
    $i++;
  };

Kann eigentlich nicht sein, denn damit kommst du nicht auf 13 Uhr. Aber abgesehen davon - wofür steht bei date() der Buchstabe h genau?

Und was ist das für ein abenteuerliches Konstrukt? Wenn du genau weißt, von wo bis wo deine Schleife laufen soll, nimm lieber for, da hast du alle drei laufzeitbestimmenden Dinge schön übersichtlich in einer Zeile.

Die $zeitsec-Zeile kann man sicher noch viel umständlicher schreiben. Einfacher ist es jedoch, zur sowieso schon in Sekunden vorliegenden Zeit einfach nur die $i Sekunden zu addieren und diese neue Sekundenanzahl zu formatieren.

addslashes() ist nicht direkt falsch, aber auch nicht für MySQL vorgesehen sondern mysql_real_escape_string(). In diesem Fall brauchst du es jedoch gar nicht, weil das Ergebnis der date()-Funktion bei dem gegebenen Formatierstring keine für das Escaping relevanten Zeichen zurückgibt. Schaden kann ein (nutzloses) Escapen allerdings auch nicht.

die spalte zeit ist als 'time' festgelegt. gibt es einen anderen typ mit 24h? - ich finde in der auswahl keinen nur:
date, datetime, timestamp, time, year

Die Zeitspalten speichern ihren Wert unabhängig von einer irgendwie gearteten Formatierung. Wenn du also 01 statt 13 bekommst, hast du was bei der Formatierung falsch gemacht.

dedlfix.