Mehrfache Zeitberechnung

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • #16
    Habe mal einen Schritt zurück gemacht:

    Hiermit kommt das Script nicht Klar:

    PHP-Code:
    $wert = array();
    for (
    $i 1$i <= 3$i++)
        
    $wert[$i] = $preisart[$art $i] / 60
    Das Ganze schaut im Augenblick so aus: und funktioniert
    PHP-Code:
    <html>

    <head>
      <title></title>
    </head> <?php

    $tischnr
    =$_GET["tischnr"];

    print 
    " <form><meta http-equiv=\"refresh\" content=\"0; URL=tischbearbeiten.php?tischnr=$tischnr;\">\n";
    print 
    " </form>    \n"?>
    <body>
    <?
    $actDate =date("H:i:s");
    $prozente=$_POST['textfeld'];
    $tischnr=$_GET["tischnr"];
    include ("inc/opendb.inc.php"); // DB öffen

    $sql="Update abr SET zeit2 = '$actDate' WHERE tischnr='$tischnr' ";
    mysql_query($sql);

    $sql = mysql_query("SELECT * FROM config");
    $preisart = mysql_fetch_array($sql);
    $snooker1 =$preisart['snooker1'];
    $snooker2 =$preisart['snooker2'];
    $snooker3 =$preisart['snooker3'];
    $pool1 =$preisart['billard1'];
    $pool2 =$preisart['billard2'];
    $pool3 =$preisart['billard3'];
    $karam1 =$preisart['karam1'];
    $karam2 =$preisart['karam2'];
    $karam3 =$preisart['karam3'];
    $internet1 =$preisart['pc1'];
    $internet2 =$preisart['pc2'];
    $time3 = $preisart['zeit1'];           // Erste Zeitansetzung für Preiserhöhung   Standart 18:00
    $time4 = $preisart['zeit2'];                                                   // Standart 20:00
    $time6 = $preisart['zeit3'];           // Bis Wann am Morgen die Preisberechnung von $time4 läuft
    $time5 = "00:00:00";

    if ($tischnr < 11) {                          // Tisch 1 bis 10  (der Wert 11 wird noch in der Confic-Datei festgelegt
        $art = 'pool';
    } elseif ($tischnr > 10 and $tischnr < 13) {  // Tisch 11 bis 12  (die Werte 10 u. 13 werden noch in der Confic-Datei festgelegt
        $art = 'snooker';
    } elseif ($tischnr > 12) {                    // PC 1 (13) bis 2 (14)  (der Wert 12 wird noch in der Confic-Datei festgelegt
        $art = 'pc';
    }                                           // Die werte für Karambol folgen noch (werden noch nicht benötigt)

    if ($art == "pool")
    {
    $wert_a = $pool1;                            // Minutenpreis für Pool in Preiskategorie 1
    $wert_b = $pool2;                            // Minutenpreis für Pool in Preiskategorie 2
    $wert_c = $pool3;                            // Minutenpreis für Pool in Preiskategorie 3

    }  else  {

    if ($art == "snooker")
    {
    $wert_a = $snooker1;
    $wert_b = $snooker2;
    $wert_c = $snooker3;

    } else  {

    if ($art == "karam")
    {
    $wert_a = $karam1;
    $wert_b = $karam2;
    $wert_c = $karam3;

    } else  {

    $wert_a = $internet1;
    $wert_b = $internet2;
    $wert_c = $internet3;

            }
    }
            }

    // Abfrage der Startzeit, Endzeit, Spielart, anzahl Personen und was schon gezahlt wurde
    $abfrage = mysql_query("SELECT zeit1, zeit2, art, pers, bezahlt FROM abr WHERE tischnr = '$tischnr'");

    $time = mysql_fetch_array($abfrage);
    $time1=$time['zeit1'];
    $time2=$time['zeit2'];
    $bezahlt = $time['bezahlt'];        // bereits gezahlter Betrag
    $pp = $time['pers'];                // Teilnehmer durch die der Gesamtbetrag aufgeteilt wird Preis/Person

    // aufsplitten der Zeiten
    function time_to_hours($time) {
    list($h, $m, $s) = explode(':', $time);
    return $h + $m / 60 + $s / 3600;
    }

     $prices = array(
        array('value' => $wert_b, 'time' => $time3),
        array('value' => $wert_c, 'time' => $time4),
        array('value' => $wert_c, 'time' => $time5),
        array('value' => $wert_a, 'time' => $time6)
    );

    $start_time = time_to_hours($time1);
    $end_time = time_to_hours($time2);
    if ($end_time < $start_time)
        $end_time += 24.0;

    $sum = 0.0;

    for ($i_cnt = 0, $i_max = count($prices) - 1; $i_cnt <= $i_max; $i_cnt++) {
        $current_time = time_to_hours($prices[$i_cnt]['time']);
        $next_time = $i_max > $i_cnt ? time_to_hours($prices[$i_cnt + 1]['time']) : 48.0;

        if ($start_time < $next_time && $end_time >= $current_time) {
            $diff_time  = $end_time < $next_time ? $end_time : $next_time;
            $diff_time -= $start_time > $current_time ? $start_time : $current_time;

            $sum += $prices[$i_cnt]['value'] * $diff_time;
        }
    }

    $summe=$sum;

    if ($prozente <> "")
       { $abzug1 = $summe/100;  $abzug=$abzug1*$prozente;
    $summe = $summe-$abzug;
       }

    $sql="Update abr SET    spiel = '$summe' WHERE tischnr='$tischnr' ";
    $r_update=mysql_query($sql);

    $r_sql="Update bestand SET   zz = zz+'$summe', differ=differ+'$diff_time' WHERE name='$tischnr' ";
    $r_update=mysql_query($r_sql);

    $end_betrag= $summe-$bezahlt;
    $sql="UPDATE kunde SET  zz='$end_betrag' WHERE name ='$tischnr' and gtr ='Spiel'";
    mysql_query($sql);

    ?></body> </html>
    Dein Script muß ich mal durcharbeiten...
    hab noch nicht verstanden warum das so läuft.
    Aber dafür gibt es im Netzt sichlich jede menge Hilfen...

    Kommentar


    • #17
      Das machen, was ich vorher geschrieben habe. Debuggen kannst du nur selber, niemand wird für dich die Arbeit machen und deinen Code bei sich durchtesten, nur damit du nix zu tun hast.

      Kommentar


      • #18
        Durchtesten soll ihn auch niemand...

        hätte ja sein können das du schon beim drüberschauen einen fehler endeckt hättest.

        die kasse habe vollständig selber gebastelt, wenn auch nicht sehr professionel aber funktionstüchtig.

        und da bin ich auch ein wenig stolz drauf.

        ach ja, es funktioniert auch nicht wie im vorangegangenen tread beschrieben..

        geht nur mit

        $prices = array(
        array('value' => $wert_c, 'time' => '00:00:00'),
        array('value' => $wert_a, 'time' => '08:00:00'),
        array('value' => $wert_b, 'time' => '18:00:00'),
        array('value' => $wert_c, 'time' => '20:00:00')
        );

        ich suche ja auch selber nach lösungen ist nur recht schwierig wenn man noch nicht alle variablen kennt du du eingebaut hast.

        aber ich probiere und suche noch ein bißchen rum...

        danke dir auch recht herzlich für deine hilfe

        Kommentar


        • #19
          So, jetzt aber

          $wert = array(); musste nur angepasst werden... es gibt ja 4 zeiten

          PHP-Code:
          $wert = array();
          for (
          $i 1$i <= 4$i++) {
              if (
          $i != 4) {
                  
          $wert[$i] = $preisart[$art $i];
              } else {
                  
          $wert[4] = $preisart[$art 3];
              }


          Das ganze schaut jetzt so aus, falss es mal jemand braucht...


          PHP-Code:
          if ($tischnr 11) {                          // Tisch 1 bis 10  (der Wert 11 wird noch in der Confic-Datei festgelegt
              
          $art 'billard';
          } elseif (
          $tischnr 10 and $tischnr 13) {  // Tisch 11 bis 12  (die Werte 10 u. 13 werden noch in der Confic-Datei festgelegt
              
          $art 'snooker';
          } elseif (
          $tischnr 12) {                    // PC 1 (13) bis 2 (14)  (der Wert 12 wird noch in der Confic-Datei festgelegt
              
          $art 'pc';
          }                                           
          // Die werte für Karambol folgen noch (werden noch nicht benötigt)


          $wert = array();
          for (
          $i 1$i <= 4$i++) {
              if (
          $i != 4) {
                  
          $wert[$i] = $preisart[$art $i];
              } else {
                  
          $wert[4] = $preisart[$art 3];
              }
          }

          // Abfrage der Startzeit, Endzeit, Spielart, anzahl Personen und was schon gezahlt wurde
          $abfrage mysql_query("SELECT zeit1, zeit2, art, pers, bezahlt FROM abr WHERE tischnr = '$tischnr'");

          $time mysql_fetch_array($abfrage);
          $time1=$time['zeit1'];
          $time2=$time['zeit2'];
          $bezahlt $time['bezahlt'];        // bereits gezahlter Betrag
          $pp $time['pers'];                // Teilnehmer durch die der Gesamtbetrag aufgeteilt wird Preis/Person

          // aufsplitten der Zeiten
          function time_to_hours($time) {
          list(
          $h$m$s) = explode(':'$time);
          return 
          $h $m 60 $s 3600;
          }


           
          $prices = array(
              array(
          'value' => $wert[1], 'time' => $time5),
              array(
          'value' => $wert[2], 'time' => $time6),
              array(
          'value' => $wert[3], 'time' => $time3),
              array(
          'value' => $wert[4], 'time' => $time4)

          );

          $start_time time_to_hours($time1);
          $end_time time_to_hours($time2);
          if (
          $end_time $start_time)
              
          $end_time += 24.0;

          $sum 0.0;

          for (
          $i_cnt 0$i_max count($prices) - 1$i_cnt <= $i_max$i_cnt++) {
              
          $current_time time_to_hours($prices[$i_cnt]['time']);
              
          $next_time $i_max $i_cnt time_to_hours($prices[$i_cnt 1]['time']) : 48.0;

              if (
          $start_time $next_time && $end_time >= $current_time) {
                  
          $diff_time  $end_time $next_time $end_time $next_time;
                  
          $diff_time -= $start_time $current_time $start_time $current_time;

                  
          $sum += $prices[$i_cnt]['value'] * $diff_time;
              }
          }

          $summe=$sum;

          if (
          $prozente <> "")
             { 
          $abzug1 $summe/100;  $abzug=$abzug1*$prozente;
          $summe $summe-$abzug;
             } 
          danach die erforderlichen update´s es scheint zu klappen.

          vielen dank an alle die sich hier die mühe gemacht haben mir zu helfen.

          Kommentar

          Lädt...
          X