Zum Inhalt springen

Berechnungs- Ausführung / Einbindung in einem Feld innerhalb von MyAdmin


grünschnabel

Empfohlene Beiträge

Hallo miteinander,

nachdem mir die Gemeinschaft hier in dankenswerterweise erfolgreich bei der PHP Umsetzung im Einlesen einer SQL Datenbank helfen konnte,

steht "der alte Herr" mal widerum "auf dem Schlauch" und bricht sich trotz durchwühlen aller Handbücher ect. mal wieder die Finger, um die einfache Division von 2 Feldwerten in ein bestimmtes Feld als Berechnungsverknüpfung innerhalb des MyAdmin Datenbankeditors einzubinden, so wie ich es sinngemäß von Excel her kenne.

Meine "Test Tabelle" hat den Namen "Artikel" und beinhaltet folgende Spaltennamen:

Bezeichnung, Menge, Einheit, Preis_Menge, Preis_Einheit

in der ersten Zeile den Spaltennamen wieder mit den klangvollen Werten zugeordnet:

Bezeichnung=Tomaten,

Menge = 1.5 ,

Einheit = kg,

Preis_Menge = € 1.95,

Preis_Einheit = € ?, hier soll die Formel in das leere Feld gebettet werden, aber "verflixt wie !?"

Sinngemäß: Preis_Menge = Preis_Einheit div Menge

analog zur SQL Operation SELECT `Preis_Menge` / `Menge` AS `Preis_Einheit` FROM Artikel

Letzteres wirf mir in MyAdmin zwar die korrekten Ergebnisse zu allen Tabelleninhalten aus, wenn ich diesen im Anzeigemodus der Tabelle im Abruf der SQL Befehleditors einfüge und mit [OK] abschließe ?"

Im Tabellen Strukturmodus ist das Feld von mir lediglich im Typ als decimal(10,2) deklariert.

Wer kann mir bitte nochmals weiterhelfen ?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

das geht auch nicht. Die Datenbank selber kann nicht rechnen. Du kannst zwar mittels select, insert oder update Statement zur Laufzeit einen Wert berechnen aber die Datenbank kann nicht nachdem Du den Einzelpreis geändert hast automatisch Preis_Einheit berechnen. Naja über einen Trigger könnte man das eventuell hinbekommen. Aber das macht man nicht. Berechnete Werte sollten nicht in der Datenbank stehen sondern zur Laufzeit erst berechnet werden.

Frank

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Frank,

das ist ja "eine sch..." Datenbank, wenn man dort keine Vernüpfungen so wie unter Exel einbauen kann,

kein Wunder das ich mich hier in den Handbüchern "totsuche".

D.h., nachdem ich nun etwas mehr in PHP hereingeschaut habe, könnte man dem "bölden" MyAdmin / SQL nur über eine PHP Auslesung durchgeführte Berechnung "auf die Sprünge" helfen, indem der erechnete Wert dem Feld "Preis_Einheit" dann zur Ablage übergegen wird,

im Falle einer über MyAdmin dann etwa geänderter Mengenpreis somit allerdings nicht aktuell wäre, eine Ablage über PHP also unsinnig wäre,

sprich deratige Berechnungen also nur zusätzlich über PHP zu realisieren wären, die SQL Datenbank insofern also nur zur Ablage von rein festen Wertfüllungen geeignet und vom "Erbauer" angedacht ist, wenn ich Dich richtig verstanden habe.

Dann muss man halt damit leben.

Das "Blöde" ist, das derartige Grundinformationen in den Handbüchern nicht so deutlich hervorgehen.

Besten Dank für die Info.

Link zu diesem Kommentar
Auf anderen Seiten teilen

sprich deratige Berechnungen also nur zusätzlich über PHP zu realisieren wären, die SQL Datenbank insofern also nur zur Ablage von rein festen Wertfüllungen geeignet und vom "Erbauer" angedacht ist, wenn ich Dich richtig verstanden habe.[

Nein, Berechnungen kannst Du ohne Probleme in Dein SELECT einbauen. Damit sind deine Daten immer aktuell und Du brauchst auch keine Kapriolen in php zu drehen.

Dim

PS: Lass die Backticks (`) um die Spaltennamen weg - die brauchst Du nicht.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Du kannst Excel nicht mit einer Datenbank (egal von welchem Hersteller) vergleichen. Beide Programme haben einen unterschiedlichen Aufgabenbereich. Das ware genau so wenn Du Äpfel und Bananen vergleichst.

Entweder im SELECT Statement die Berechnung anstellen oder wie schon gesagt eine View benutzen und diese dann für die Ausgabe in PHP nutzen.

Frank

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ja sicherlich, muss man allerdings zunächst auch um die Nutzungsunterschiede wissen.

Bei meinem ersten Bestreben, mir eine Projektstruktur in dem Tabellengeflecht von Hause aus beim Anlegen zu verschaffen, schwebte mir eben im Unwissen des SQL eigenen Tabellenverhaltens von einer Exelähnlichen Tabellenrechnungsart ausgehend im ersten Gedanken vor, hier so bei einer PHP Zuwendung die PHP Berechnungsdurchführung zu umgehen, um das bereits in der Tabelle gefestigte Ergebnis einzig nur auslesen zu müssen, siehe hier meinen Quellcode:

<table bgcolor="floralwhite" border="1" cellpadding="5">
<tr>
<td align='center' bgcolor='papayawhip'><b>Position</b></td>
<?php
$result = mysql_query("SELECT Bezeichnung,Menge,Einheit,Preis_Menge,Preis_Einheit FROM Artikel");
for($i=0; $i<mysql_num_fields($result); $i++)
{
$name = mysql_field_name($result,$i);
echo "<td align='center' bgcolor='papayawhip'><B>".$name."</B></td>";
}
?>
</tr>

<?php
$Zeile = 0;
while($zeile = mysql_fetch_array($result))
{
$Zeile = $Zeile + 1;
echo "<tr><td> Zeile ".$Zeile."</td>";
echo "<td>".$zeile['Bezeichnung']."</td>";
echo "<td>".$zeile['Menge']."</td>";
echo "<td align='center'>".$zeile['Einheit']."</td>";
echo "<td> € ".$zeile['Preis_Menge']."</td>";
echo "<td> € ".$zeile['Preis_Einheit']."</td></tr>"; /* Wunschgedanke des SQL Berechnungseingebundenen Feldergebnisses */
}
?>
</table>[/PHP]

Da ja letztlich eh PHP zum Einsatz der Tabellenwertverwendung kommt, habe ich mir meine hier am Beispiel benötigte Preisaussage per Einheit somit auch über PHP einfach zum Ausdruck bringen lassen und so für mich gelernt,

das es für eine Nutzerzugängliche Aussage im Datenbankwertzugang für die HTML Web Tabellengestaltung am einfachsten ist, [b]diese im Layout der Spaltenanzahl und Spaltenbenennung im Aufbau einer SQL Tabellenanlegung analog zu übernehmen[/b],

anstatt bei der SQL Tabelle im Verzicht auf die dort nicht direkt berechnungsfähige SQL Spalte "Preis_Einheit" die hier verfolgte Ergebnisaussage im Rechnungsvorgang im PHP Umfeld dann mit entsprechend einzubindenden HTML Codex über eine zusätzliche HTML Spalteneinbindung zur Anzeige bringen zu müssen.

[b]Finde ich im Moment zumindest einfacher und im PHP Quellcode übersichtlicher[/b], passt sich die HTML Tabellenbreite ja outomatisch an die einzelnen dort verwendeten SQL Spaltenanzahlen in Übernahme der Spaltennamen im Webseitenauswurf an,

hier im PHP Quellcode gegenüber den ersten Gedanken entsprechend korregierend realisiert:

[PHP]<table bgcolor="floralwhite" border="1" cellpadding="5">
<tr>
<td align='center' bgcolor='papayawhip'><b>Position</b></td>
<?php
$result = mysql_query("SELECT Bezeichnung,Menge,Einheit,Preis_Menge,Preis_Einheit FROM Artikel");
for($i=0; $i<mysql_num_fields($result); $i++)
{
$name = mysql_field_name($result,$i);
echo "<td align='center' bgcolor='papayawhip'><B>".$name."</B></td>";
}
?>
</tr>

<?php
$Zeile = 0;
while($zeile = mysql_fetch_array($result))
{
$Zeile = $Zeile + 1;
echo "<tr><td> Zeile ".$Zeile."</td>";
echo "<td>".$zeile['Bezeichnung']."</td>";
echo "<td>".$zeile['Menge']."</td>";
echo "<td align='center'>".$zeile['Einheit']."</td>";
echo "<td> € ".$zeile['Preis_Menge']."</td>";
$Wert_1 = $zeile['Preis_Menge']; /* Übernahme SQL Feldwert Preis_Menge */
$Wert_2 = $zeile['Menge']; /* Übernahme SQL Feldwert Menge */

$Summe = bcdiv($Wert_1,$Wert_2,2); /* PHP Berechnung */

echo "<td> € ".$Summe."</td></tr>";
}
?>
</table>

Was meint Ihr zum Grundgedanken deratig angewandter SQL Tabellenspaltenstruktur ?

lieber die nichtdirekt berechnungsfähigen Spalten im MyAdmin Aufbau weglassen und entsprechende HTML Ergänzung im PHP Gerüst vornehmen oder so verfahren wie hier.

Gruß vom "alten" Grünschnabel.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ja sicherlich, muss man allerdings zunächst auch um die Nutzungsunterschiede wissen.

Du sltest Dich, bevor Du hier über Datenbanken im allgemeinen fkuchst Dich zuerst mit der Materie auseinander setzen. Z.B. stellt eine Datenbank wie MS Navision / Dynamics über die CalcSum Felder genau das bereit was Du möchtest.

Da Du als DBMS mySQL einsetzt bist Du natürlich darauf gebunden, andere DBMS haben durchaus die Möglichkeit komplexere Structuren zu bilden. Zu diesem Thema empfehle ich Dich darüber zu informieren:

Stored Procedure ? Wikipedia

http://de.wikipedia.org/wiki/Sicht_(Datenbank)

Phil

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Phil,

ja richtig, bei der Telekom bin ich für "billiges" Geld, sprich "Homepage Basic" nun mal einzig im Angebot von SQL MyAdmin an SQL gebunden - und da gibt es im Vorfeld für einen "unbefleckten" "Grünschnabel" keine andere Aussage als aus der allgemeinen Werbung, das man seine HTML Anwendungen mit SQL Datenbanken bestens verknüpfen kann...

... insofern muss zumindest ich ersteinmal damit leben, wobei somit vorläufig alle anderen Datenbanksystemzuwendungen ausscheiden.

Somit wäre es nett, zum Anwendungsfall hier die Meinung zu meiner realisierten Testwebseitenaussage hinsichtlich des vertretenden SQL Tabellen Strukturaufbaues zu vermitteln,

wäre hier die Erfahrung eines Profis für mich sehr hilfreich, bevor ich hier mein Konzept am konkreten Projekt in Tat umsetze.

Gruß Grünschnabel

Link zu diesem Kommentar
Auf anderen Seiten teilen

Grundsätzlich musst Du nicht den Text hervorheben, es ist durchaus klar was gemeint ist.

Mein Vorschlag zu einer Lösung:

Erzeuge, wie schon genannt einen View auf Deine Daten, der die Berechnung beinhaltet. Nimm aus Deiner Tabelle das zu berechnende Feld heraus, da die Daten ausschließlich durch den View bereit gestellt werden. In PHP erstellst Du eine Klasse für den Datenzugriff, in der Du wenn Daten zu lesen sind, sie aus dem View holst, da hast Du dann auch die berechneten Werte zur Verfügung. Wenn Du Daten in die Tabelle einfügen / verändern willst greifst Du aus der Klasse direkt auf die original Tabelle zu. Wenn Du noch eine flexible Datenbankanbindung haben möchtest, mit der Du datenbank-unabhängig und mit Prepare-Statements arbeiten möchtest (was ich empfehle), dann setze ADODB ein

Phil

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...