Zur Navigation

Zahlen mit PHP runden

1 Peter

Hallo,

ich würde gerne einige Berechnung durchführen, mit javascript haut es auch hin. Wie muss ich vorgehen, wenn es php erledigen soll?

Also nun zur Berechnung:

Die einzugebende Höhe (EinH) wird durch den Rapport geteil.
Das Ergebnis wird auf die nächste ganze Zahl aufgerundet und mit der Rapporthöhe mal genommen.

z.B.: 1258 / 150 = 8,386666 => 9

9 x 150 = 1350 mm

Funktioniert auch , wenn ich aber jetzt folgendes mache:

$Rapport = ceil($EinH/150)*150;
$band = $mitnhemer* 2 * $Rapport;

Wird der Variabeln $band nicht der Wert der Rechnung zugeordnet.
$mitnehmer wird durch eine Datenbankabfrage ermittelt.

Hier der Code
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head>
 <title>Fokus</title>
 <?php
   include "connect.inc.php";
   ?>
</head>
<body>

<?php
  // lokale Variablen setzen
  $vars = array("EinB", "breite", "EinH","mitnehmer", "halter", "preis", "band");
 
  foreach ($vars as $var)
    $$var = $_POST[$var];
 
  if ($sender)
    printf("Die Daten wurden von %s aus verschickt.",
           htmlentities($sender));
   // defaultwerte setzen        
   if (!isset($breite))
     $breite = '80';
   if (!isset($mitnehmer))
     $mitnehmer = '2';  
   if (!isset($band))
     $band = '0';      
   if (!isset($halter))
     $halter = '2';  
   if (!isset($preis))
     $preis = '74.60';   
  //varianten------------------------------------
   if (!isset($variante1_1))
     $variante1_1 = $EinB;    
   if (!isset($variante2_1))
     $variante2_1 = $EinH;  
   $Rapport = ceil($EinH/150)*150;
   $band = $mitnhemer * 2 * $Rapport;
  // Datenbankabfrage
  
   $sqlab= "select breite, halter, mitnehmer, preis from fokus where breite = '$breite'";
   $res = mysql_query($sqlab) OR die(mysql_error());
   $num = mysql_num_rows($res);

   if ($num==0) echo "keine passenden Datensätze gefunden". "<br>";

   while ($dsatz = mysql_fetch_assoc($res))
   {
      $preis = $dsatz['preis'];
      $mitnehmer = $dsatz['mitnehmer'];
      $halter = $dsatz['halter'];      
         }
         echo "$Rapport";
         echo "$band";
?>


<form name="fokus" action="fokus01.php" method="post">
<input type="hidden" name="sender" value="fokus01.php">
Breite in mm <input type="text"size="5" name="EinB" onblur="anz(this.value,this.name)" 
value='<?php
      printf("%s", htmlentities($EinB));
         ?>'/><br />

  Rasterbreite: <input type="text" name="breite" size="5"
    value='<?php
      printf("%s", htmlentities($breite));
         ?>'><br>
         
H&ouml;he in mm <input type="text"size="5" name="EinH" onblur="anz(this.value,this.name)" 
value='<?php
      printf("%s", htmlentities($EinH));
         ?>'/><br />         
<input  type="hidden" size="5" name="halter"
    value='<?php
      printf("%s", htmlentities($halter));
         ?>'/><br>
<input  type="hidden" name="mitnehmer" size="5"
    value='<?php
      printf("%s", htmlentities($mitnehmer));
    ?>'><br>
Band<input  type="text" name="band" size="50"
    value='<?php
      printf("%s", htmlentities($band));
    ?>'> in cm<br>    
 <?php
 echo "Der Grundpreis der Technik betr&auml;gt : " . $preis . " € <br>";
 echo "Es sind " . $halter . " Tr&auml;ger und " . $mitnehmer . " Mitnehmer enthalten.";
 ?><br><br>
  <input type="submit" value="Grundpreis berechnen">
</form>
<script type="text/javascript">
var doc = document.fokus;
var H = doc.EinH.value;
var M = doc.mitnehmer.value;

function anz(a,c){
d = c;
a = parseFloat(a.replace(/,/gi,'.'));
b = Math.ceil(a/100)*10;
if (b<=80){
     b=80;}
if (doc.EinB.getAttribute("name", 0) == d){
doc.breite.value = b;}
}
/*
function Band (H, M) {
var H = doc.EinH.value;
var M = doc.mitnehmer.value;
var Ergebnis = eval((M*2)*(Math.ceil(H/150)*150)/ 10);
return Ergebnis;
}
function SchreibeBand () {

var Wert = Band();
doc.band.value = Wert;
}
*/


</script>

</body>
</html>

Hier der Link zur Seite
http://www.windeko.de/php/fokus01.php

Vielen Dank schon mal im voraus,
Viele Grüße
Peter



11.04.2008 23:14

2 Jörg Kruse

An anderen Stellen heißt die Variable $mitnehmer:

$band = $mitnhemer* 2 * $Rapport;

12.04.2008 09:01

3 Peter

Hallo Jörg,

Danke für die Hilfe, man sieht vor lauter Buchstaben keine Fehler mehr.

Habe es jetzt anderes gelöst:
 // Datenbankabfrage
  
   $sqlab= "select breite, halter, mitnehmer, preis from fokus where breite = '$breite'";
   $res = mysql_query($sqlab) OR die(mysql_error());
   $num = mysql_num_rows($res);

   if ($num==0) echo "keine passenden Datensätze gefunden". "<br>";

   while ($dsatz = mysql_fetch_assoc($res))
   {
      $preis = $dsatz['preis'];
      $mitnehmer = $dsatz['mitnehmer'];
      $halter = $dsatz['halter'];      
         }
   //Rollobandberechnung----------------
   $Rapport = ceil($EinH/150)*150;
   $band = 2* $Rapport* $mitnehmer/1000;
   $bandpreis = $band * 0.90;
So rechnet er mit dem aktuellen Wert für den "mitnehmer".

Hast Du eine Idee, wie ich es beim ersten laden der Seite den Wert von [+ 0€] in [Wert noch nicht berechnet] vorbelegen kann.
Siehe hier unter Schritt 4
http://www.windeko.de/php/fokus02.php
Für das andere Problem werde ich einen neuen Beitrag verwenden.

12.04.2008 10:44

4 Jörg Kruse

So z.B.:

<td><input type="radio" name="rolloband" tabindex="10" onchange="spezialvariante1()" ; value="ja" rechts <? echo $rollobandchecked ?>>ja [+ 0 &euro;]</td>

Weiter oben definierst du entsprechend $rollobandchecked, z.B.:

if (!isset($_POST['irgendwas'])) {
    $rollobandchecked = "checked";
} else {
    $rollobandchecked = "";
}

PS: was für eine Funktion hat das "rechts" im input Element?

12.04.2008 12:20

5 Peter

Das "rechts" hat keine funktion, es ist völlig überflüssig ;-)

Habe Dein Beispiel mal aufgeriffen, leider verstehe ich es nicht genau.
<input type="radio" name="rolloband" tabindex="10" onchange="spezialvariante1()" ; value="ja"> ja [+ <?php echo $rollobandchecked ?> <?php echo $bandpreis?>&euro;]

"<?php echo $bandpreis?>" steht nur zur Kontrolle

  //rolloband----------------------------------
   if (!isset($rolloband))
    $rolloband = 'nein';
   if (!isset($_POST['rollobandchecked'])) {
    $rollobandchecked = "Wert noch nicht berechnet";
} else {
    $rollobandchecked = "$bandpreis";
}  

Jetzt steht immer "Wert noch nicht berechnet", eigendlich sollte dann der Betrag hier stehen?

12.04.2008 16:41

6 Jörg Kruse

Ich hatte dich so verstanden, dass der Radio Button "ja [+ 0 &euro;]" markiert werden soll, wenn die Seite zum ersten Mal aufgerufen wird? Das kann man anhand des Vorhandenseins irgendeiner POST-Variable überprüfen. Je nachdem wird dann an der Stelle von $rollobandchecked entweder gar nichts eingesetzt oder das Attribut "checked", wodurch der Button markiert wird

Edit:
achso ich verstehe, du möchtest nur den Wert 0 ersetzen - dann hatte ich dich missverstanden

if (!isset($_POST['rollobandchecked'])) {
Du musst hier eine Variable prüfen, die vom Formular übertragen wird, also z.B. $_POST['rolloband'];

12.04.2008 17:09

7 Peter

Haut hin, habe es so gelöst:
Nach der Datenbankabfrage platziert, funktioniert es
     //rolloband----------------------------------
   if (!isset($rolloband))
    $rolloband = 'nein';
   if (!isset($_POST['rolloband'])) {
    $rollobandchecked = "Wert noch nicht berechnet";
} else {
    $rollobandchecked = "+&nbsp; $bandpreis &euro;";
} 

Super Danke nochmals für die Hilfe

12.04.2008 18:12 | geändert: 12.04.2008 18:13

Beitrag schreiben (als Gast)

Die Antwort wird nach der Überprüfung durch einen Moderator freigeschaltet.





[BBCode-Hilfe]