Ankündigung

Einklappen
Keine Ankündigung bisher.

Formular Felder vorausfüllen

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

  • Formular Felder vorausfüllen

    Ja, ich weiß ich habe keine Ahnung vom coden. Ein Link zur Lösung würde mir dann auch "schon" reichen. Aber irgendwie bin ich so blöd.

    Ich bin gerade dabei, kleine Helferlein zu bauen, die zwar jeder 30cent Rechner bewältigen kann, aber wäre halt was nettes.

    Code:
    <form method="post" action="<?php echo $_Server['SCRIPT_NAME'] ?>">
     
    
    Bitte geben sie die Werte ihres Akkus und den Ladestrom ihres Ladeger&auml;tes ein.</p>
    
     
    
    Kapazit&auml;t des Akkus eintragen (in mAh):
    
     <input type="text" name="akkukapa" /></p>
     
    
    Ladesstrom eintragen (in mA):
    
     <input type="text" name="ladestrom" /></p>
     <input type="submit" value="Berechnen" />
    </form>
    
    
    
    
    <?php
    	$akku = $_POST['akkukapa'];
    	$laden = $_POST['ladestrom'];
    	$multi = 1.3;
    	
    	$ladezeit = $akku / $laden * $multi;
    	echo '
    
    Ihr Akku mit einer maximalen Kapazit&auml;t von ' . $akku . 'mAh brauch ' . '' . $ladezeit . '' . 'h, um geladen zu werden.</p>';
    ?>
    Das habe ich mir jetzt mit meinem Wissen und einem PHP Buch zusammengeschrieben. Funktioniert auch, irgendwie.
    Es kommt beim erstmaligen aufrufen: "Warning: Division by zero". Ist auch logisch warum. Am liebsten würde ich die Formularfelder vorausfüllen, damit die Fehlermeldung nicht mehr erscheint. Nurr wie mach ich das?

    Die Ausgabe der Zeit würde ich auch gern in XXh XXmin ausgeben und den Rest abknappsen.

    Wäre für Links oder evtl. Hilfe dankbar.

  • #2
    Aw: Formular Felder vorausfüllen

    Formularfelder mit Defaultwerten: Das ist so gesehen rein HTML.

    <input type="text" name="ladestrom" value="hier der defaultwert" />

    Das bringt so gesehen aber nocht nichts, wenn einer den Defaultwert löscht. Hier ist in PHP die Funktion empty() Dein Freund. Wenn irgendwas "empty", dann Fehlermeldung, ansonsten berechnen.

    Ausgabe in Stunden und Minuten:
    Das ist nur eine Berechnung eigentlich.
    z.B. $ladezeit = 4.7053
    floor() gibt die nächst kleinere Ganzzahl an, oder den eigentlichen Wert, wenn es eine Ganzzahl ist.

    $stunden = floor($ladezeit);

    Ergibt in dem Beispiel 4.

    Nun der Rest, also ladezeit - stunden:
    $rest = $ladezeit - $stunden;
    ergibt in dem Fall dann 0.7053 Stunden. Eine Stunde hat 60 Minuten, also
    $minuten = $rest * 60;

    Sind dann also 42.318 Minuten
    Also noch mit round() runden auf die gewünschten Nachkommastellen.

    Alles ungetestet und nur ein Schnellschuss.

    http://de2.php.net/manual/de/function.round.php
    http://de2.php.net/manual/de/function.floor.php
    http://de2.php.net/manual/de/function.empty.php

    Theoretisch auch noch eine Prüfung, ob die Werte auch Ziffern sind und keine Buchstaben oder andere Zeichen ;-)

    Kommentar


    • #3
      Aw: Formular Felder vorausfüllen

      Danke habs gleich mal ausprobiert! Funzt super.

      Code:
      <form method="post" action="<?php echo $_Server['SCRIPT_NAME'] ?>">
       
      
      Bitte geben sie die Werte ihres Akkus und den Ladestrom ihres Ladeger&auml;tes ein.</p>
      
       
      
      Kapazit&auml;t des Akkus eintragen (in mAh):
      
       <input type="text" name="akkukapa" value="1200" /></p>
       
      
      Ladesstrom eintragen (in mA):
      
       <input type="text" name="ladestrom" value="500" /></p>
       <input type="submit" value="Berechnen" />
      </form>
      
      
      
      
      <?php
         
      
      	$akku = $_POST['akkukapa'];
      	$laden = $_POST['ladestrom'];
      	$multi = 1.3;
      	
      	if (empty($akku)) {
              echo 'Bitte den Kapazit&auml;tswert ihres Akkus und den Ladestrom ihres Laders in die daf&uuml;r vorgesehenen Felder eintragen';
      }
      	if (isset($akku)) {
      	$ladezeit = $akku / $laden * $multi;
      	
      	$stunden = floor($ladezeit);
      	$rest = $ladezeit - $stunden;
      	$minuten = $rest * 60;
      	
      	
      	echo '
      
      Ihr Akku mit einer maximalen Kapazit&auml;t von ' . $akku . 'mAh brauch ' . '' . $ladezeit . '' . 'h, um geladen zu werden.</p>';
              echo '
      
      Ihr Akku mit einer maximalen Kapazit&auml;t von ' . $akku . 'mAh brauch ' . '' . $stunden . '' . 'h und ' . ceil($minuten) . ' min, um geladen zu werden.</p>';
              }
      ?>
      Ist jetzt noch nicht schön gemacht, aber klappt herrlich. :freu: (und jetzt versteh ichs, das vorausfüllen war eine doofe idee)
      Mit dem prüfen schaue ich mir auch noch an.

      Ich hab dann noch ein Problem mit dem Komma und Punkt, dazu dann aber mal bei Gelegenheit ein neues Thema. ^^
      Vielen vielen Dank!

      Kommentar


      • #4
        Aw: Formular Felder vorausfüllen

        Zitat von "Lunte" post=4841
        Ist jetzt noch nicht schön gemacht, aber klappt herrlich. :freu: (und jetzt versteh ichs, das vorausfüllen war eine doofe idee)
        Mit dem prüfen schaue ich mir auch noch an.
        irgendwie stimmt die Klammerung nicht
        Code:
        	if (empty($akku)) {
                echo 'Bitte den Kapazit&auml;tswert ihres Akkus und den Ladestrom ihres Laders in die daf&uuml;r vorgesehenen Felder eintragen';
        }
        	if (isset($akku)) {
        kerrektur ... die eine { ist soweit nach links gerutscht, das ich sie übersehen habe

        aber nochn Fehler
        Code:
        	if (isset($akku)) {
        	$ladezeit = $akku / $laden * $multi;
        sollte doch wohl sein
        Code:
        	if (isset($laden)) {
        	$ladezeit = $akku / $laden * $multi;
        oder wie wäre es mit
        Code:
        function sicherdividieren($zahl, $divisor)
        {
          if ( $divisor ) $zahl /= $divisor;
          return( $zahl );
        }
        
        	$ladezeit = sicherdividieren($akku, $laden) * $multi;


        Es sollte mal Jemand die Mathematik "Revolutionieren" bzw "Reformieren"

        Gegenrechnung ....
        Irgendwas * NULL = NULL
        also
        Irgendwas / NULL = NULL

        bei (ist es ja auch das Ergebniss)
        NULL / Irgendwas = NULL

        Zitat von "Lunte" post=4841
        Ich hab dann noch ein Problem mit dem Komma und Punkt, dazu dann aber mal bei Gelegenheit ein neues Thema. ^^
        Vielen vielen Dank!
        Meinst Du jetzt (nur) die Landesübliche Dezimalversion
        oder auch das Tausendertrennzeichen


        simple (make English)
        $zahl = str_replace( ',' , '.' , $zahl );

        kompliziert
        Code:
        function PCzahl($zahl)
        {
          if ( $POSkomma=strpos($zahl,',') 
          &&  $POSpunkt=strpos($zahl,'.')  )
          {
            if ( $POSpunkt < $POSkomma )
               $zahl = str_replace( '.' , '' , $zahl );
            else
               $zahl = str_replace( ',' , '' , $zahl );
          }
          $zahl = str_replace( ',' , '.' , $zahl );
          return( $zahl );
        }
        
        	$zahl = PCzahl($zahl);
        Du verstehst mich NiCHT? „ich nehm keine Drogen!“ ... Andy verstehen

        Kommentar


        • #5
          Aw: Formular Felder vorausfüllen

          Zitat von "800XE" post=4845
          kompliziert
          und dann noch die Version ....


          .... TausenerTrennung aber kein Dezimal

          $zahl_lang = strlen($zahl);
          $last_dot = strrpos($zahl,'.'); // str(r)pos

          strlen = Anzahl zeichen
          strrpos = Position // achtung, 1. Position nicht 1 sondern 0


          23.486

          strlen = 6
          strrpos = 2 // Problem 1 ist 0 .... korriegieren durch erhöhen

          strlen = 6
          strrpos = 3

          Code:
          $zahl_lang = strlen($zahl);
          $last_dot = strrpos($zahl,'.') +1 ;
          if ( $zahl_lang - 3 == $last_dot )
          {
            könnte Tausendertrenner sein ... oder 3stelliges Dezimal
          }

          ähm, besser
          Code:
          $zahl_lang = strlen($zahl);
          $last_dot = strrpos($zahl,'.');
          if ( $last_dot )
          {
            $last_dot++;
            if ( $zahl_lang - 3 == $last_dot )
            {
              könnte Tausendertrenner sein ... oder 3stelliges Dezimal
            }
          }
          oder
          Code:
          if ( $last_dot++ )
          {
            if ( $zahl_lang - 3 == $last_dot )
          Du verstehst mich NiCHT? „ich nehm keine Drogen!“ ... Andy verstehen

          Kommentar


          • #6
            Aw: Formular Felder vorausfüllen

            Nur zum Verständnis für mich.
            Mit ging es ja "nur" darum das nicht gleich losgerechnet wird

            isset sagt ja aus das wenn da ein wert steht, darfst du losmachen. So war es für mich egal ob ich nun $akku oder $laden dort einsetze. nicht egal?

            Die simple Variante (, .) habe ich verstanden. Beim Rest brauch ich noch eine Weile.
            Danke Danke. :)

            Kommentar


            • #7
              Aw: Formular Felder vorausfüllen

              Zitat von "Lunte" post=4847
              So war es für mich egal ob ich nun $akku oder $laden dort einsetze. nicht egal?
              Da Du schon selbst das ODER ansprichst, solltest Du es dann imho auch nutzen ;-)
              In deinem Fall geht er in die Schleife, wenn $akku gefüllt ist - $laden interessiert in diesem Fall nicht...

              if (!isset($akku) || !isset($laden))
              oder
              if (isset($akku) && isset($laden))

              /edit: ähhh - musste nochmal
              eine Prüfung auf Eingabe einer Zahl würde ich auch durchführen http://php.net/manual/en/function.is-numeric.php

              Kommentar


              • #8
                Aw: Formular Felder vorausfüllen

                Sauber! Mit so viel Input habe ich definitiv nicht gerechnet. Danke.

                Kommentar


                • #9
                  Aw: Formular Felder vorausfüllen

                  Mit ging es ja "nur" darum das nicht gleich losgerechnet wird
                  Das ist noch ein anderes Thema.

                  Prüfe einfach, ob das Formular bereits gesendet wurde.

                  Also um den gesamten PHP-Bereich ein

                  if(isset($_POST))
                  {
                  hier der eigentliche Code zur Berechnung und die Auswertung
                  }

                  Somit wird alles innerhalb der {} nur abgearbeitet, wenn der POST-Button auch geklickt wurde. Dennoch muss da dann die Prüfung rein, ob die Felder auch gültige Werte enthalten.

                  Kommentar


                  • #10
                    Aw: Formular Felder vorausfüllen

                    @Synonym
                    Danke
                    @800xe
                    So langsam steige ich durch deine beiden Posts durch. Hatte es gestern überhaupt nicht mehr gerallt. Aber deine Erweiterungen, auch wenn ich sie nicht wollte, finde ich gut.

                    Soo viele Regeln für so eine kleine doofe Formel. ^^ Klasse, das ihr mir helft!

                    Kommentar

                    Lädt...
                    X

                    Das Rechtliche
                    Impressum | Widerruf | Datenschutz | Disclaimer |