PHP und MySql Aktualisierungsproblem
Martin
- php
Hallo miteinander,
als Newbie hat man so seine Problemchen:
Ich habe ein Formular indem der Kunde seine Daten eingibt.
Unten im Formular wird über php der aktuelle verfügbare Bestand angezeigt (DB-Abfrage).
Nachdem der Kunde die Daten ausgefüllt hat werden die Daten verarbeitet (verarbeitung.php) und als Mail an den Kunden und den Homepagebesitzer geleitet. Gleichzeitig wird die Anzahl der Produkte, die der Kunde haben will vom Bestand in der Datenbank abgezogen. Soweit funktioniert alles, aber:
Es wird auf dieser Seite nochmals der aktuelle Bestand angezeigt, der ja jetzt um die bestellten Produkte kleiner ist.
Bsp: Bestand 10 Stück - bestellt 3 Stück - aktuell 7 Stück
Leider wird der Bestand der in der Datenbank ist zwar aktualisiert, aber noch nicht auf dieser Seite angezeigt.
Der Kunde kann auch die Ansicht dieser Seite aktualisieren lassen, wobei die Rechenoperation erneut durchgeführt wird und damit ist alles nicht mehr so wie es sein sollte.
Was muß ich tun damit auf dieser Seite der aktuelle Bestand angezeigt wird?
Muß ich die Rechenoperation woanders durchführen lassen ?
Wie kann ich verhindern das per "Aktualisierung im Browser" mein Produktbestand nicht mehr stimmt.
Wie kann ich die Rechenoperation nur einmal durchgeführen lassen ?
Die Seiten liegen auf Strato.
Code der Auswertungsseite:
$z = 1;
$z++;$b[$z]="xxxxx".date("d m Y") ."\n\n";
$z++;$b[$z]="xxxxxxxxxx";
$z++;$b[$z]="Vorname: ".$Vorname."\n";
$z++;$b[$z]="Name: ".$requiredName."\n";
$z++;$b[$z]="Funktion: ".$Funktion."\n";
$z++;$b[$z]="Firma: ".$requiredFirma."\n";
$z++;$b[$z]="Produkt: ".$requiredFahrzeug."\n";
$z++;$b[$z]="Anzahl: ".$requiredAnzahl."\n";
$z++;$b[$z]="Strasse: ".$Strasse."\n";
$z++;$b[$z]="PLZ: ".$Plz."\n";
$z++;$b[$z]="Ort: ".$Ort."\n";
$z++;$b[$z]="Telefon: ".$requiredTelefon."\n";
$z++;$b[$z]="Telefax: ".$Telefax."\n";
$z++;$b[$z]="Email: ".$requiredemail."\n";
$letter = implode($b,"");
$vonadr = "from:xxxxxxxxxxx";
/* eMail an den Kunden */
mail($requiredemail, "xxxxxxxxxx", $letter, $vonadr);
mail($cc_to, "xxxxxxxxxx", $letter, $vonadr);
mail($bcc_to, "xxxxxxxxx", $letter, $vonadr);
// Anzahl wird abgezogen
$db = mysql_connect ("rdbms.strato.de", "xxxxxxxx", "xxxxxxxxx")
or die ("Nicht verbunden!");
mysql_select_db ("xxxxxxxxx",$db);
$result = mysql_query("SELECT * FROM xxxxxxxxxxx",$db);
$spalte = mysql_fetch_row($result);
$result = mysql_query("SELECT * FROM xxxxxxxxx",$db);
$sql = "UPDATE xxxxxxxxxxxxx SET count=count -$requiredAnzahl";
$result = mysql_query($sql,$db);
if ($spalte[2] >0) {
echo ("nur noch ".$spalte[2]." Kisten <br>");
}
else {
echo ("Kein Angebot mehr verfügbar");
}
mysql_close($db);
Hi!
Wie zeigst Du den aktuellen Bestand denn an? Doch mit SELECT aus der DB, oder? Wie sich das anhört Aktualisiertst Du den BEstand erst NACHDEM Du Dir die Daten zum Anzeigen geholt hast, kannd as sein? Du mußt nur die Reihenfolge ändern - ist zumindest bei mir schon öfter so passiert!
Grüße
Andreas
Danke Andreas!
Aktueller Bestand funktioniert jetzt richtig.
Jetzt habe ich noch das Problem mit der Aktualisierung.
Kann ich den Refresh Button den Browsers sowie seine Tasten sperren, oder ist es besser die Rechenoperation mit der Taste "Submit" im Formular durchzuführen?
Mfg
Martin
Hallo,
also erstmal würde ich nicht eine heiße tabelle vom kunden "bearbeiten" lassen. sondern diese daten erst nach abgleich in deiner wirklichen bestandstabelle aktualisieren.
wenn ein spaßvogel an der url o.ä. rumfummelt wirst du dich schon über deine bestände wundern...
dein anderes pronlem: mach doch dann einen rediret auf eine normale seite zur auslese, die ruhig aktialisiert werden kann, da dort keine rechnungen vorgenommen werden sondern nur die anzeige...
Odium