Das ist das komplizierteste SQL Statement:
UPDATE lieferschein SET termin = '$termin', anSchgl = 'j', bemerkung = '$text', anSchgl_gesendet = 'j', anSchgl_gesendet_datum = '$datum' WHERE ls_num = '$id'
Da kann ich mir nicht vorstellen, dass es daran liegt.
Die Komplexität des Statements ist nicht entscheidend. Du kannst je nach Konstellation mit noch einfacheren Statements die DB quälen.
Wie die anderen schon sagten, hier fehlt noch input. Ein Dump der Tabellenstruktur wäre schon einmal hilfreich sowie die Anzahl der Records der Tabelle.
Allerdings fällt mit bei Deinem SQL eine Sache schonmal auf: "ls_num = '$id'". Das impliziert, ls_num könnte ein Zahlenfeld sein, richtig? Dann kannst Du Dir mit den unscheinbar wirkenden "'" um "$id" schon heftig ins Knie schießen, weil Mysql je nach Version darauf sehr allergisch reagiert. Die Bedingung wird zwar umgesetzt, aber ein etwaiger Index dabei missachtet.