You are not logged in.

  • Login

1

Saturday, July 26th 2008, 2:27pm

Bußgeldkatalog

Hi zusammen,

Vielleicht hat jemand die Zeit und sieht sich mal den folgenden Code an - Ich würde ihn gerne "schrumpfen" - jedoch fällt mir nicht wiklich was dazu ein :( Jemand eine Idee? *neugierigschau*

HTML Code

1
2
3
4
5
6
7
8
<form method="POST" action="<?php $PHP_SELF; ?>"><pre>
  Geschwindigkeit :         <input type=text name="speed" size=5 maxlength=3><br>
  Wo hat es dich erwischt?: <select name="loc">
<option value="in_town">Innterhalb geschlossener Ortschaft
<option value="outback">Ausserhalb geschlossener Ortschaft
</select><br>
  <input type="submit" value="Berechnen" name="action">
</pre> </form>


PHP Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
// Deklarierung der notwendigen Parameter für PHP4 Support (aus dem Formular)
$speed = $_POST['speed'];
$loc   = $_POST['loc'];
$action = $_POST['action'];
 
// Deklarierung der Ausgaben
 
$m15 = "15,- EUR";
$m25 = "25,- EUR";
$m35 = "35,- EUR";
$m50 = "50,- EUR";
$m60 = "60,- EUR";
$m100 = "100,- EUR";
$m125 = "125,- EUR";
$m175 = "175,- EUR";
$m300 = "300,- EUR";
$m425 = "425,- EUR";
 
$p1 = "1 Punkt";
$p3 = "3 Punkte";
$p4 = "4 Punkte";
 
 
$nd1 = "1 Monat Fahrverbot";
$nd2 = "2 Monate Fahrverbot";
$nd3 = "3 Monate Fahrverbot";
$nd4 = "4 Monate Fahrverbot";
 
 
 
 
if($action == "Berechnen")
{
  if($loc == "in_town")
  {
    if($speed <= "10")
    {
    echo "Dieser Versto&szlig; kostet dich $m15";
    }
 
    elseif($speed <= "15")
    {
    echo "Dieser Versto&szlig; kostet dich $m25";
    }
 
    elseif($speed <= "20")
    {
    echo "Dieser Versto&szlig; kostet dich $m35";
    }
    elseif($speed <= "25")
    {
    echo "Dieser Versto&szlig; kostet dich $m50 und $p1";
    }
    elseif($speed <= "30")
    {
    echo "Dieser Versto&szlig; kostet dich $m600 und $p3";
    }
    elseif($speed <= "40")
    {
    echo "Dieser Versto&szlig; kostet dich $m100 und $p3 und $nd1";
    }
    elseif($speed <= "50")
    {
    echo "Dieser Versto&szlig; kostet dich $m125 und $p4 und $nd1";
    }
    elseif($speed <= "60")
    {
    echo "Dieser Versto&szlig; kostet dich $m175 und $p4 und $nd2";
    }
    elseif($speed <= "70")
    {
    echo "Dieser Versto&szlig; kostet dich $m300 und $p4 und $nd3";
    }
    elseif($speed > "70")
    {
    echo "Dieser Versto&szlig; kostet dich $m425 und $p4 und $nd3";
    }
  }
}


Grüße,
Matthias

2

Saturday, July 26th 2008, 4:48pm

Hab mal schnell etwas in die Textbox gehämmert:

PHP Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
$speed  = (int)$_POST['speed'];
$loc    = $_POST['loc'];
$action = $_POST['action'];
 
$_fine = array(
                'in_town' => array(
                                    10  => array(15),
                                    15  => array(25),
                                    20  => array(35),
                                    25  => array(50, 1),
                                    30  => array(60, 2),
                                    40  => array(100, 3, 1),
                                    50  => array(125, 4, 1),
                                    60  => array(175, 4, 2),
                                    70  => array(300, 4, 3),
                                    405 => array(425, 4, 3)
                                  ),
                'outback' => array()
              );
 
if($action == "Berechnen") {
	$fine_type = ($loc != 'in_town') ? 'outback' : 'in_town'; 
	foreach ($_fine[$fine_type] as $key => $value) {
		if ($speed <= $key) {
			$penaltie = 'Dieser Versto&szlig; kostet dich ';
			$count_penalties = count($value);
			for ($i=0; $i<$count_penalties; $i++) {
				switch ($i) {
					case 1:
						$penaltie .= ' und '.$value[$i].' Punkt(e)';
						break;
					case 2:
						$penaltie .= ' und '.$value[$i].' Monat Fahrverbot';
						break;				
					default:
						$penaltie .= $value[$i].',- EUR';
						break;
				}
			}
			break; 
		}	
	}
	echo $penaltie;
}


Habe mal symbolisch die 405 Km/h als Maximum gewählt, da derzeit das schnellste Straßenfahrzeug so schnell fährt. Die Prozedur ist zwar mit 0.0002 Sekunden Unterschied etwas langsamer, dafür beliebig mit zusätzlichen Geschwindigkeiten erweiterbar. Die Form ist:

Quoted

Geschwindigkeit => array(Geldbetrag [, Punkte [, Fahrverbot ]])

3

Saturday, July 26th 2008, 5:27pm

Du könntest die Daten extern speichern und mit dem Skript laden. Hilft nicht unbedingt, wenn es eine einmalige Geschichte ist.

4

Sunday, July 27th 2008, 1:53pm

Hi!

Die Idee von dynambee ist sehr schön, die werde ich mir mal genauer ansehen :)

Merci!

Grüße,
Matthias

5

Sunday, July 27th 2008, 9:57pm

So,

Nun habe ich mir den Code angesehen, eine Zeile bereitet mir Kopfzerbrechen:

$fine_type = ($loc != 'in_town') ? 'outback' : 'in_town';

Was bedeutet hier das ? und der : ??

Ich verstehe:

$fine_type = ($loc ungleich 'in_town')

Merci für ne kurze Aufklärung.

P.S. Wie sollte man bei solchen "Problemen" zukünftig suchen? Google => "PHP VARIABLE ?" hat leider nix gebracht :(

Grüße,
Matthias

6

Sunday, July 27th 2008, 10:11pm

P.S. Wie sollte man bei solchen "Problemen" zukünftig suchen? Google => "PHP VARIABLE ?" hat leider nix gebracht :(

Ich glaube am besten beschreibt es die fragezeichen doppelpunkt syntax
Es handelt sich um den Trinitätsoperator.

Gruß

7

Wednesday, July 30th 2008, 9:53pm

Hi!

Super, danke dir donut, perfekt wie immer :)

Grüße,
Matthias

Social bookmarks