helmuthelmut2000
Goto Top

Formularfeld mit mssql Feld vergleichen und daten in anderes Feld speichern

Hallo,

Ich habe eine Tabelle mit php und mssql.
Mit einem Formlar werden da Daten in eine mssql DB gespeichert.
Mit einer Seite kann man die Daten verändern.

Jetzt hätte ich gern, das wenn man einen Wert verändert und den zurückspeichert,
sollte der dann Farbig unterlegt sein.

Ich dachte mir da sollte das Eingabe Feld mit dem DB Feld verglichen werden und
wenn was unterschiedlich ist, sollte eine Farbe in ein anders Feld geschrieben werden.

Kann mir da jemand einen Tipp geben wie und mit welchen Befehlen ich das Eingebefeld
mit dem DB-Feld vergleiche?

Gruß
Helmut

Content-Key: 195217

Url: https://administrator.de/contentid/195217

Printed on: April 18, 2024 at 14:04 o'clock

Member: nxclass
nxclass Dec 02, 2012 at 11:43:46 (UTC)
Goto Top
... ich verstehe das nicht so ganz wie du das willst.
Aber ich würde sagen, du musst vor dem UPDATE einfach nochmal ein SELECT über alle Felder machen und den Vergleich in PHP durchführen und zwischen speichern bis dein Formular wieder aufgebaut wird.

also für den Speichervorgang:
  • Form Daten empfangen
  • SELECT ausführen
  • Daten vergleichen und Ergebniss speichern
  • UPDATE ausführen
  • Formular mit Daten und Ergebniss anzeigen
Member: Guenni
Guenni Dec 02, 2012 at 15:18:53 (UTC)
Goto Top
Hi,

leider verrätst du die Strategie nicht, die du mit dem Vorhaben verfolgst, eine Änderung farblich zu hinterlegen.

Ergebnis wäre ja z.B., ich würde deine Seite aufrufen, da erscheint ein Wert in rot. Was sagt mir das?

Und selbst wenn ich weiß, dass die Farbe rot eine Änderung kennzeichnet, was hab' ich davon?

Der alte Wert ist futsch, weil er überschrieben wurde.


Dann hast du eine Tabelle, die ja sicherlich mehr als eine Spalte enthält. Somit stellt sich noch die Frage,

willst du den Datensatz kennzeichnen und eine Farbe hinterlegen oder willst du tatsächlich für jedes Feld ein Farbfeld hinterlegen.

Beispiel 1:

id Vorname Nachname Telefon Satz_geändert
1 Wilhelm Busch 0123/4567 Farbangabe

oder Beispiel 2:

id Vorname Nachname Telefon id_geändert Vorname_geändert Nachname_geändert Telefon_geändert
1 Wilhelm Busch 0123/4567 Farbangabe Farbangabe Farbangabe Farbangabe


Ich würde im Änderungsformular die Daten ausgeben, die Daten zum Ändern nochmals in Textfelder ausgeben, damit die Felder schon mal

mit Werten vorbelegt sind und man nicht jedes Feld neu eingeben muß, und zusätzlich die Daten noch in Hiddenfelder speichern.

Dann kannst du mit dem Trinitäts-Operator die Textfelder mit den Hiddenfeldern vergleichen, und den Variablen für dein Update den Wert zuweisen.

Beispiel:

$var_vorname = $_Post['text_feld_vorname_neu'] == $_Post['hidden_feld_vorname_alt'] ? $_Post['hidden_feld_vorname_alt'] : $_Post['text_feld_vorname_neu'];


Um Änderungen zu verfolgen, würde ich das jedoch anders machen. Eine Tabelle, in der gespeichert wird . . .

- welche Tabelle wurde geändert
- welches Feld wurde geändert
- den alten Wert
- den neuen Wert
- wann fand die Änderung statt
- wer hat die Änderung vorgenommen

id_tabellen_datensatz tabellenname Feld Alter_Wert Neuer_Wert Änderungsdatum von_wem_geändert
1 Dichter Vorname Wilhelm Willimaus 01.04.1910 Max und Moritz
2 Dichter Vorname Willimaus Wilhelm 02.04.1910 Wilhelm Busch


Gruß
Günni
Member: helmuthelmut2000
helmuthelmut2000 Dec 03, 2012 at 18:44:59 (UTC)
Goto Top
Hallo Günni,

Das ist eine Tabelle wo die Aufträge von Kunden verwaltet werden. Und sollte sich da eine Stückzahl
ändern, sollte das Farblich hervorgehoben sein. Jetzt hab ich da eine Spalte in meiner DB hinzugefügt
mit dem Namen Markierung.
Wenn ich das Änderungsformular aufrufe, dann sind die Textfelder schon vorbelegt.

Jetzt möchte ich das mit dem Trinitäts-Operator hinbekommen, das der Farbwert nur bei einer Änderung
im Stückzahl Feld in die DB geschrieben wird.

Gruß
Helmut
Member: helmuthelmut2000
helmuthelmut2000 Dec 05, 2012 at 12:23:53 (UTC)
Goto Top
Hallo Günni,

Ich bin da jetzt ein Stück weitergekommen, komme aber nicht ans Ziel.
Kannst Du mir da noch ein Weiterhelfen?

Ich hab das jetzt so, das wenn ich 2 Unterschiedliche Zahlen habe, werden mir 2
Unterschiedliche Texte in en DB Feld geschrieben.

$a = 3;
$b = 4;
if ($a == $b) echo "<input type='hidden' value='1000' name='markieren_stueck' id='markieren_stueck' />";
if ($a != $b) echo "<input type='hidden' value='2000' name='markieren_stueck' id='markieren_stueck' />";

Wenn ich $a = $b gleich mach dann wird die Zahl 1000 geschrieben und bei Unterschiedlichen Zahlen die Zahl 2000.

Jetzt hab ich das Problem mit dem Textfeld $a = 3 und das was in der DB steht $b = 4.

Wie bringt man das noch hin?

mfG
Helmut
Member: Guenni
Guenni Dec 10, 2012 at 10:26:55 (UTC)
Goto Top
Hi Helmut,

also irgendwie versteh' ich nicht, worauf du hinaus willst.

Gehen wir mal nur von deiner Stückzahl aus.

Also du fragst eine Tabelle nach Feld Stückzahl ab.

Dann zeigst du ein Formular mit . . .

- Textfeld, Inhalt (value) = Stückzahl, User gibt neuen Wert ein

- Hiddenfeld, Inhalt (value) = Stückzahl aus einer Tabelle

Nach Absenden prüfst du einfach, ob der Wert des Textfeldes mit dem Wert des Hiddenfeldes übereinstimmt.

<?php
if(isset($_POST['cmd'])){  
	$stueck = $_POST['txt_stueck'] == $_POST['hidden_txt_stueck'] ? $_POST['hidden_txt_stueck'] : $_POST['txt_stueck'];  
	$query='update tabelle set stueck = '.$stueck.' where id = 1';  
}
echo $query;
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
<html>
<head>
<title>Untitled</title>
</head>
<body>
<?php
/*
* Stückzahl aus einer Tabelle
*/
$stueck=98;
?>
<form action="" method="post">  
<p>Stückzahl <input type="text" name="txt_stueck" value="<?php echo $stueck  ?>" /></p>  
<p><input type="hidden" name="hidden_txt_stueck"  value="<?php echo $stueck; ?>" /></p>  
<p><input type="submit" name="cmd" value="Edit" /></p>  
</form>
</body>
</html>

Genauso setzt du dann den Farbwert, wenn etwas geändert wurde.

Gruß
Günni
Member: helmuthelmut2000
helmuthelmut2000 Dec 12, 2012 at 21:57:18 (UTC)
Goto Top
Hallo Günni,

Wo setzt ich da den Farbwert?

Gruß
Helmut
Member: Guenni
Guenni Dec 14, 2012, updated at Mar 08, 2013 at 22:33:24 (UTC)
Goto Top
Zitat von @helmuthelmut2000:
Hallo Günni,

Wo setzt ich da den Farbwert?

Gruß
Helmut


Hi Helmut,

"da" nicht.

Ich hatte geschrieben Genauso setzt du dann den Farbwert, wenn etwas geändert wurde.,

und gedacht, das würde dich inspirieren, mal etwas auszuprobieren.


Da du den Farbwert ja in der Tabelle speichern willst, würde ich diesen auch auslesen und . . .

- als "Style" im Textfeld verwenden
- in einem Hiddenfeld speichern

Um einen neuen Farbwert zu setzen, könnte man diesen z.B. in einem select-Feld auswählen.

<?php
if(isset($_POST['cmd'])){  
	$stueck = $_POST['txt_stueck'] == $_POST['hidden_txt_stueck'] ? $_POST['hidden_txt_stueck'] : $_POST['txt_stueck'];  
	$farbwert = $_POST['txt_stueck'] == $_POST['hidden_txt_stueck'] ? $_POST['hidden_txt_farbwert'] : $_POST['sel_farbwert'];  
	$query='update tabelle set stueck = '.$stueck.', farbwert = '.$farbwert.' where id = 1';  
}
echo $query;
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
<html>
<head>
<title>Untitled</title>
</head>
<body>
<?php
/*
* Stückzahl aus einer Tabelle
*/
$stueck=98;
/*
* Farbwert aus einer Tabelle
*/
//$farbwert='white'; 
?>
<form action="" method="post">  
<p>Stückzahl <input type="text" style="background-color: <?php echo $farbwert; ?>;"  name="txt_stueck" value="<?php echo $stueck  ?>" /></p>  
<p><input type="hidden" name="hidden_txt_stueck"  value="<?php echo $stueck; ?>" /></p>  
<p>Farbwert <select name="sel_farbwert">  
<option value="<?php echo $farbwert; ?>"> -- Farbwert wählen -- </option>  
<option value="red">Rot</option>  
<option value="lightgreen">Grün</option>  
</select></p>
<p><input type="hidden" name="hidden_txt_farbwert"  value="<?php echo $farbwert; ?>" /></p>  
<p><input type="submit" name="cmd" value="Edit" /></p>  
</form>
</body>
</html>

Gruß
Günni
Member: helmuthelmut2000
helmuthelmut2000 Mar 03, 2013 at 12:54:06 (UTC)
Goto Top
Hallo Günni,

Ich hatte leider einige Zeit etwas anderes zu tun und konnte an dem Thema nicht
weiter Arbeiten.

Ich muß ich die Sache erneut angehen und mal zu Ende bringen.

Kannst Du mir bitte das obige script etwas näher Erklären?
Ich komm da nicht so ganz klar.
Wo schreib ich denn da den DB Wert rein?

Danke.
Member: Guenni
Guenni Mar 08, 2013 at 22:39:00 (UTC)
Goto Top
Zitat von @helmuthelmut2000:
Hallo Günni,

Ich hatte leider einige Zeit etwas anderes zu tun und konnte an dem Thema nicht
weiter Arbeiten.

Ich muß ich die Sache erneut angehen und mal zu Ende bringen.

Kannst Du mir bitte das obige script etwas näher Erklären?
Ich komm da nicht so ganz klar.
Wo schreib ich denn da den DB Wert rein?

Danke.

Hi Helmut,

das ist ja nur ein kleines Beispiel.

In Stückzahl würdest du den neuen Wert eintragen, mit Farbwert wählst du eine

neue Farbe für den Hintergrund des Stückzahl-Felds.

Der alte Stückzahlwert steht außerdem in einem Hiddenfeld.

Das Script vergleicht nun den neuen mit dem alten Wert. Bei Ungleichheit(Änderung) wird der

neu gewählte Farbwert für den Hintergrund gesetzt.


Gruß
Günni