into DB mit Klausel

quidnovi

Erfahrenes Mitglied
Hi Helferlein,

weil ich nicht weiß, wie ich dieses Problem beseitigen soll, könnte ich hier falsch sein. Wenn dies zutrifft, dann bitte verschieben, danke.

Übergebe Daten aus einem Eingabeformular in eine Mysql Db. Nachdem diese Daten in die Db geschrieben wurden, werden sie überprüft - genauer gesagt, einige Zahlenwerte.

Ein Beispiel:
4.1.2007; 9;
5.1.2007; 9;

Eintrag 1 und Eintrag 2 haben je einen Gesamtzahlenwert von 9.
Da nun aber der Zahlenwert 8,5 nicht übersteigen darf, werden diese auf 8,5 geändert.
4.1.2007; 8,5;
5.1.2007; 8,5;

Nun muss ich die jeweils 0,5 den Einträgen wieder zuführen, sprich einen neuen Eintrag in die Db bezogen auf die Einträge durchführen.

Soll dann so aussehen:
4.1.2007; 8,5;
4.1.2007; 0,5;

5.1.2007; 8,5;
5.1.2007; 0,5;

Einzeln kann ich das sehr wohl mittels SQL und PHP lösen, aber das ist nicht möglich, da die Menge der Einträge aus dem Eingabeformular bis zu 20 gleichzeitig betragen können.

Da man - meines bescheidenen Wissens und dem Internet zu Folge keine WHERE Klausel an INSERT INTO anhängen kann, weiß ich nun nicht mehr weiter.

Gibt es mittels PHP eine Lösung? Bitte um Eure Hilfe, danke
 
Es gibt aus deiner Sicht 2 Möglichkeiten das Problem zu lösen.
1. wie schon beschrieben: via php werte kontrollieren und umwandeln...
2. cronjob: zeitgesteuerte aufträge...

Falls die werte zeitnah geändert werden müssen sollte die kontrollfunktion genutzet werden...
Als nächstes ist wichtig, hast du überhaupt die Möglichkeit cronjobs auszuführen...
In fall 1 solltest du jedoch erst eine Abfrage erstellen die die vorhanden werte addiert, da mehrfach werte einheiten mit 8,5 + einträge mit überschüssigenwerten existieren...
Als nächstes die addierten werte durch 8,5 teilen, die alten einträge entfernen und die neuen einfügen...
In punkto Serverauslastung sollte es jedoch bei 20 zugriffen zeitgleich eigendlich keine probleme geben, wenn der server nicht umbedingt von 1000 usern genutzt wird...

PHP:
$selectquery = select id, sum(wertefeld) as summe from ...tabelle where datum =.....;
$insertdatensaetze = $value / 8,5;
$vollwerte = abrunden($insertdatensaetze); //ceil ist glaube ich...
$restwerte =... //modulo für restwerte
for($i=0; $i<$vollwerte; $i++){
insertquery...
}
insertquery...restwert...
 
Zurück