kostenloser Webspace werbefrei: lima-city


Php Rechenaufgabe

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    no-smoke

    Kostenloser Webspace von no-smoke

    no-smoke hat kostenlosen Webspace.

    Ich habe mal wieder ein Problem mit einer php Rechenaufgabe.
    Folgende Aufgabe:
    Es gibt eine vorher ausgerechnete Lösung die in einer Variable gespeichert ist. Diese Lösung wird nun hintereinander für verschiedene Werte einer Datenbank ausgegeben. Nun sollen diese Ergebniss die bisher korrekt untereinander mithilfe von echo ausgegeben werden, addiert werden. Nur wie? Es gibt ja nur eine Variable das heißt das klassiche + funktioniert nicht. Ich habe schonmal so etwas ähnliches mit dem Befehl sum hinbekommen doch ich weiß nicht mehr wie ich es gemacht habe.
    Hier mal der Rechencode:
    if ($betrag_heochst == "-") {$betrag_heochstb = "100000000000000000";} else {$betrag_heochstb = $betrag_heochst;}  
    $geld_gesamt_sponsor = $anzahl_runden * $betrag_sp;
    
    if ($betrag_heochstb < $geld_gesamt_sponsor) {$zu_zahlen = $betrag_heochstb;} else {$zu_zahlen = $geld_gesamt_sponsor;}

    Noch zur Erklärung: Die Variablen $betrag_heochst und $betrag_sp werden aus einer Datenbank ausgelsesen. Die Variable $zu_zahlen soll addiert werden.

    Kann mir jemand helfen?
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. jugend-bewegt

    jugend-bewegt hat kostenlosen Webspace.

    Hallo,

    wenn die Datenbankausgabe mittels einer while oder for-Schleife geschieht, wäre eine Möglichkeit, eine zusätzliche Variable $Gesamtsumme = 0; außerhalb der Schleife zu kreieren, und dann in der Schleife ergänzen $Gesamtsumme = $Gesamtsumme + $zu_zahlen; ....

    Geht natürlich auch ohne Schleife, dann halt jeweils an der entsprechenden Stelle im Skript einfügen ...

    Beitrag zuletzt geändert: 11.9.2010 21:04:21 von jugend-bewegt
  4. nalles humbug alles Quatsch

    + geht beim rechnen mit Variablen!

    mehre schleifen hinteieinander, in denen ein krummes ergebnis reinkommt und nachher noch gerundet werden, da kommt ein Krummes ergebnis raus, was unter umständen vom richtigen ergebnis stark abweichen kann. idch hab hier in dem Thread Kreditrechner mal eine Lösung gepostet, wo ein teil für dich auch ganz interessant sein könnte:

    $count = (int)$laufz;
    	$calcterm = "";
    	for ($count; $count > 0; $count--) {
    		$calcterm .= "*(1+".$zins.")";
    	}
    	$formel='$ergebnis='.$kredit.$calcterm.';';
    	//echo $formel;
    	eval($formel);
    	echo $ergebnis;


    $laufz= Laufzeit eines kredits in Jahren
    $count= simuliert die anzahl der schleifendurchläufe
    $calcterm=hier bau ich einen teil der Formel zusammen
    $Formel: hier kommt der komplette PHP-Ausdruck rein, wie er sein muss, wenn man ihn ausführt


    eval fürt im anschluss den PHP-Ausdruck von $formel zur laufzeit aus und du hast dein ergebnis...


    da ich jetzt dein problem nicht verstanden habe, außer dass du nciht weißt, wie man addiert... das, was ich da oben zusammengebaut habe, geht etwas über addieren hinaus... und funktioniert trotzdem...

    der + operator ist in pHP zum rechnen da . ist der verkettungspeator, falls du das verwechselt haben soltest...
  5. Naja so wie ich sie/ihn verstanden habe, sollen Werte aus der DB gelesen werden und anschließend aufsummiert werden. Dabei soll halt vorher die Rechnung ausgegeben werden über echo/print.

    So in der Art:
    5
    +4
    +3
    --
    12


    Hier die Realisierung in PHP und MySQL
    <?php
       $host = 'mysql.lima-city.de';
       $user = '<user>';
       $password = '<password>';
       $dbName = '<dbname>'; 
       $db = mysql_connect($host, $user, $password);
       mysql_select_db($dbName, $db);
       $query = 'SELECT <column> FROM <table>';
       $result = mysql_query($query);
       $sum = 0;
       $firstRow = true; 
       while($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
          $value = $row['<column>'];
          if(!$firstRow) {
             print('+' . $value . '\n');
          } else {
             print($value . '\n');
             $firstRow = false;
          }
          $sum += ((int)$value);
       }
       print('--\n');
       print($sum);
    ?>


    Kurz zur Erklärung:
    * <column> ist der Zahlenwert
    * <table> die Tabelle aus der gelesen werden soll
    * <user> <password> die Zugangsdaten zu deiner lima-city db
    * <dbName> der Datenbankname wo sich die Tabelle befindet

    Den Code habe ich jetzt nur schnell ausm Kopf eingetippt, also nicht getestet.
    Das sollte aber so funktionieren, wenn die entsprechenden Lücken gefüllt werden.

    Grüße
    Christopher

    Beitrag zuletzt geändert: 14.9.2010 11:59:28 von schaedlich
  6. Hoppla, da hab ich wohl das Wort Datenbank überlesen... das macht die geschichte ungemein einfacher:


    wenn es aus einer datenbank geholt wird, ist es doch angenehmer, wenn wir stadt die datenbank halb leer pumpen und dann über PHP den server ordentlich auszulasten, dann die summierung aller werde einer spalte über das folgende SQL-Statement macht:

    //login
    $host = 'mysql.lima-city.de';
       $user = '<user>';
       $password = '<password>';
       $dbName = '<dbname>'; 
       $db = mysql_connect($host, $user, $password);
       mysql_select_db($dbName, $db);
    //------
    
    
    //SQL-Ausdruck, der addiert
       $query = 'SELECT SUM(<column>) FROM <table>';
    //------
    
    //Abfrage machen
    $result = mysql_query($query);
    
    //da das teil trotzdem als array rauskommt, auch wenn da nur ein wert drin steht, reicht ein einfaches
    $summe = (int) mysql_fetch_row($result);  //(int) deswegen, falls du mit dem ergebnis weiterrechnen willst...
    
    echo $summe;


    dann übernimmt das DBMS das rechnen und das ist wesentlich schneller als PHP! ^^
  7. Hehe, das hab ich vor lauter Blindheit vollkommen übersehen. War vorhin zu früh! (scheiß Studenten :D)

    Der SUM Aggregator macht das schneller ;)

    Wenn du die Werte darstellen willst, geht das aber natürlich nicht, es sei denn du lieferst für jede Zeile die SUM mit ^^

    Beste Grüße
    Christopher

    PS: eval ist evil, aber endlich mal ein sinnvoller Verwendungszwecks!

    Beitrag zuletzt geändert: 14.9.2010 15:19:25 von schaedlich
  8. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!