Antworten auf deine Fragen:
Neues Thema erstellen

Addieren mit php

strichcode

Nicht mehr ganz neu hier

Hallo!
Für Euch ist es bestimmt ganz einfach, aber ich finde hier nach langen googlen auch nicht die richtige Lösung für mich:
Ich möchte bei der Ausgabe von Daten aus einer DB zwei oder drei zahlen addieren und ausgeben.

Beispiel:
<?php
$ergebnis = mysql_query($abfrage);
while ($daten = mysql_fetch_array( $ergebnis, MYSQL_ASSOC)) {
echo '
<tr>
<td>...</td><td>'.$daten['KAPAZITAET'].' + '.$daten['ZUS_BETTEN_1'].'</td><td>...</td>
</tr>
'
;}?>

In meinem Script schreibt er nun beispielsweise 50+10, ich hätte dort aber gerne eine 60 stehen.

Ich finde über google nur Informationen über das Zusammenaddieren ganzer Spalten, aber nichts über das Addieren von zwei Zahlen, die ich doch eigentlich schon im query habe?

Meine Lieblings-Anfänger-Seite: schattenbaum.net erklärt das addieren in php so:
$addition = $zahl1 + $zahl2;
echo $addition;

Damit habe ich jetzt eine Weile rumgedocktert, komme aber nicht weiter, weil ich wahrscheinlich Reihenfolge oder Syntax nicht richtig schreibe.

Könnt Ihr mir weiter helfen?
Lieben Dank

ps: warum kann ich den code nicht mehr in den code-tag einfügen? Gibt es den Button nicht mehr?
 

Hi!

Du musst vorher rechnen und anschließend das Ergebnis per "echo" ausgeben:
PHP:
$ergebnis = $daten['KAPAZITAET'] + $daten['ZUS_BETTEN_1'];
echo $ergebnis;

Also genau so, wie im Beispiel auf Schattenbaum.net. Aktuell gibst du nur einen zusammengesetzten String aus.
 
Zuletzt bearbeitet:
Du kannst doch in dein Mysqlbefehl bei Select gleich rechnen wie zum Beispiel:

SELECT
Feld 1,
Feld 2,
(((Zahl1) + (zahl2))) AS ergebnis
FROM
Tabelle

Wenn du alle Zahlen aller Datensätze summieren willst dann musst halt mit sum arbeiten. Dann werden alle DS berücksichtigt je nachdem wie deine whereklausel aufgebaut ist.
SELECT
Feld 1,
Feld 2,
SUM((((Zahl1) + (zahl2))) )AS ergebnis
FROM
Tabelle

Siehe hier welche Mathematischen Funktionen du schon beim Select anwenden kannst:
 
Hi,

da war der Herr dcmagie etwas fixer. Lass einfach die Datenbank für dich rechnen. Dies bedeutet auch eine leichte Performance-Steigerung deines Scripts.
 
Danke, daß Ihr mir helfen wollt.
Ich fürchte, ich hab's immer noch nicht.

Meine Abfrage lautet:
$abfrage = "SELECT * FROM dbname WHERE irgendwas LIKE 'on'";

Dann geht es wie oben genannt weiter mit dem Code. Ich fülle mein html mit den Inhalten der einzelnen DB-Feldern. z.B.

<?php
$ergebnis = mysql_query($abfrage);
while ($daten = mysql_fetch_array( $ergebnis, MYSQL_ASSOC)) {
echo '
<tr>
<td>...</td><td>'.$daten['KAPAZITAET'].'</td><td>...</td>
</tr>
'
;}?>

Der Versuch mit dem was MyBAD schreibt:
$ergebnis = $daten['KAPAZITAET'] + $daten['ZUS_BETTEN_1'];
echo $ergebnis;
so etwas einzufügen scheitert mit:
Parse error: syntax error, unexpected '$ergebnis' (T_VARIABLE), expecting ',' or ';' in /.../start.php on line 152

Ebenso habe ich Probelme mit dem was dcmagie und Pixelaner vorschlagen so meine Probleme, weil ich ja schon
Select *
schreibe um an alle Daten zu kommen.

Ich hänge (glaube ich) an der Schreibweise vom Ganzen fest, oder?
Oder kann ich zwei SELECT-Fragen in einem schreiben?


PS, ich habe immer noch nicht gefunden, wie ich den Code hier übersichtlich darstellen kann, in meiner Eingabemaske hier gibt es keinen Code-Button mehr dafür.
 
Moin,
keine 2. Abfrage, dcmagie meint sicher etwa in der Art:
$abfrage = "SELECT *, KAPAZITAET + ZUS_BETTEN_1 AS ergebnis FROM dbname WHERE irgendwas LIKE 'on'";
Wobei dbname sicher der Tablename sein soll?

Gruß Ulli
 
Moin,
keine 2. Abfrage, dcmagie meint sicher etwa in der Art:
$abfrage = "SELECT *, KAPAZITAET + ZUS_BETTEN_1 AS ergebnis FROM dbname WHERE irgendwas LIKE 'on'";
Wobei dbname sicher der Tablename sein soll?

Gruß Ulli
Ja das meinte ich: Und wenn man nur eine Summe braucht aller Datensätze dann kann man mit der Funktion Sum() arbeiten darf dann aber nicht Group by vergessen wenn man auch andere Felder mit ausgibt hatte ich vergessen zu sagen.
 
Ah, mit einem Komma kann ich der Abfrage so zu sagen die Berechnung beifügen?!
Ja dbname ist Tabellenname, ein Fehler von mir.

Wie kann ich die Summe jetzt ausgeben?
<?php
$ergebnis = mysql_query($abfrage);
while ($daten = mysql_fetch_array( $ergebnis, MYSQL_ASSOC)) {
echo '
<tr>
<td>...</td><td>'.$daten['KAPAZITAET'].'</td><td>HIER DIE SUMME</td>
</tr>
'
;}?>

Schreibe ich dort
<td>...</td><td>'.$daten['KAPAZITAET'].'</td><td>'$ergebnis'</td>
bekomme ich
Parse error: syntax error, unexpected '$ergebnis' (T_VARIABLE), expecting ',' or ';' in /.../start.php on line 149

Ist da noch ein Schreibfehler?
 
"ergebnis" kannst du als (virtuelles) Feld der Tabelle zu behandeln, also nach deiner Schreibweise
$daten['ergebnis'].
Es sind also 2 Sachen falsch.
<td>'$ergebnis'</td>
sollte so aussehen
<td>' . $daten['ergebnis'] . '</td>
Punkte nicht vergessen :)
 
Ihr seid so großartig! Und besonderen Dank an hub.
Da wäre ich nie drauf gekommen.

Ich hab immer rumgedocktert, weil ich das Wort "ergebnis" mir irgendwie "schon vergeben" vorgestellt habe. Ich dachte $ergebnis ist der Inhalt von $abfrage und kann nicht auch noch gleichzeitig Summe aus KAPAZITAET + ZUS_BETTEN_1 sein.
Deshalb hatte ich wohl so ein Brett vor dem Kopf.

$abfrage = "SELECT *, KAPAZITAET + ZUS_BETTEN_1 AS ergebnis FROM tabellenname WHERE irgendwas LIKE '00'";
und
$ergebnis = mysql_query($abfrage);
while ($daten = mysql_fetch_array( $ergebnis, MYSQL_ASSOC)) {
echo '<td>' . $daten['ergebnis'] . '</td>
.....
So funktioniert es. Danke.
 
Du kannst ja statt ergebnis einen anderen, eindeutigeren Namen verwenden ... es ist ja nur ein Beispiel für das Prinzip :)
Auf der Seite von mysql findest du gut sortierte Informationen und Beispiele, die dir das Leben leichter machen. Wenn du mehr vor hast, lohnt es sich auf alle Fälle dort vorbei zu schauen.
 
Kleiner Tipp für die Zukunft. Überlege dir eine einheitliche Namenskonvention für deine Programmiersprache(n). Dann kommst du nicht so schnell durcheinander :)
 
Hallo
Ich bin ebenfalls php und MySql Neuling.
ich möchte ebenfalls eine Summe im Browser ausgeben
Ich habe eine Datenbank mit mehreren Tabellen. Hier relevant sind die tabellen Products und Categories
folgendeQueries führen in der Datenbank zu den richtigen Ergebnissen:

wenn ich nur die Elemente selektieren will:
SELECT `products_quantity` FROM `products` WHERE `section_id`=4 and `product_type`="P"
liefert 164 Datensätze, 1 Spalte mit Nullen und Einsen
SELECT `categories_quantity_remaining` FROM `categories` WHERE `section_id` = 4 and `categories_GA`=1
Liefert 4 Datensätze mit mit 1 Spalte mit den Werten 50, 98,33,18

wenn ich gleich die Summe bilden will
SELECT sum(products_quantity) FROM `products` WHERE `section_id`=4 and `product_type`="P"
(liefert 199)
SELECT sum(`categories_quantity_remaining`) FROM `categories` WHERE `section_id` = 4 and `categories_GA`=1
(liefert 155)

aber wie kriege ich das ausgegeben?

Nach Lektüre Eures Threads habe ich es so versucht:
$abfrage = "SELECT `categories_quantity_remaining`
AS ergebnis FROM `categories` WHERE `categories_GA`=1 and `section_id`=4 ";
$ergebnis = mysql_query($abfrage);
print_r($ergebnis);
while ($daten = mysql_fetch_array( $ergebnis, MYSQL_ASSOC)) {
echo '<td>' . $daten['ergebnis'] . '</td>}'}

Ich wäre für Hilfe sehr dankbar
 
  • Du nutzt mysql_query, das veraltet und nicht mehr verfügbar ist. Nutze stattdessen mysqli.
  • print_r($ergebnis) zeigt nur den Resource-Typ, nicht den Inhalt.
  • In deiner while-Schleife hast du einen kleinen Syntaxfehler (&lt;/td&gt;} am Ende).
  • Wenn du nur die Summe brauchst, solltest du in SQL gleich SUM() nutzen.
So sollte es gehen:

PHP:
<?php
// Verbindung zur Datenbank herstellen
$host = "localhost";
$user = "dein_benutzername";
$pass = "dein_passwort";
$db = "dein_datenbankname";

$mysqli = new mysqli($host, $user, $pass, $db);

// Verbindung prüfen
if ($mysqli->connect_error) {
    die("Verbindung fehlgeschlagen: " . $mysqli->connect_error);
}

// SQL-Abfrage mit SUMME
$sql1 = "SELECT SUM(products_quantity) AS summe_products
         FROM products
         WHERE section_id = 4 AND product_type = 'P'";

$sql2 = "SELECT SUM(categories_quantity_remaining) AS summe_categories
         FROM categories
         WHERE section_id = 4 AND categories_GA = 1";

// Erste Abfrage ausführen
$result1 = $mysqli->query($sql1);
$row1 = $result1->fetch_assoc();
echo "<p>Summe products_quantity: " . $row1['summe_products'] . "</p>";

// Zweite Abfrage ausführen
$result2 = $mysqli->query($sql2);
$row2 = $result2->fetch_assoc();
echo "<p>Summe categories_quantity_remaining: " . $row2['summe_categories'] . "</p>";

// Verbindung schließen
$mysqli->close();
?>
 


Schreibe deine Antwort....
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.781
Beiträge
1.539.440
Mitglieder
67.735
Neuestes Mitglied
jayjay33
Oben