Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.

Uhrzeit auf gültigkeit prüfen

Ajax, Hijax, Microformats, RDF, Markup, HTML, PHP, CSS, MySQL, htaccess, robots.txt, CGI, Java, Javascript usw.
elvls50
PostRank 1
PostRank 1
Beiträge: 8
Registriert: 17.04.2008, 22:27

Beitrag von elvls50 » 22.04.2008, 20:38

Hi

Ich würde gerne eine Zeit prüfen ob sie auch existiert.

Der Nutzer soll die Zeit im Format hh mm ss eingeben (hh in einem Feld, mm in einem Feld....)

Bei Eingabe von 1 30 soll 01:30:00 rauskommen, also die Leerfelder sollen mit einer Null aufgeführt werden.

Und 24:00:00 soll natürlich wie 22:76:34 nicht existieren...

Also das ich das mit einer If Schleife machen soll weis ich, aber dann hörts schon auf...

mfg elvls50

Anzeige von ABAKUS

von Anzeige von ABAKUS »

SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


grossy
PostRank 6
PostRank 6
Beiträge: 477
Registriert: 21.07.2007, 17:55

Beitrag von grossy » 22.04.2008, 21:39

Code: Alles auswählen

if ((hh>23) || (mm>59) || (ss >56)) 
    {
     echo "error";
     }
else
    {
     echo "richtig";
     }

elvls50
PostRank 1
PostRank 1
Beiträge: 8
Registriert: 17.04.2008, 22:27

Beitrag von elvls50 » 22.04.2008, 21:49

thx, sowiet habe ich mir auch schon gedacht, aber das problem wenn derjenige nur eine 1 eingibt besteht immer noch.. aus der 1 soll eine 01 werden

Wirths Media
PostRank 9
PostRank 9
Beiträge: 2050
Registriert: 20.09.2004, 20:25

Beitrag von Wirths Media » 22.04.2008, 21:58

strlen()

Anonymous

Beitrag von Anonymous » 22.04.2008, 22:32


Hasenhuf
PostRank 9
PostRank 9
Beiträge: 2840
Registriert: 26.12.2005, 22:22

Beitrag von Hasenhuf » 23.04.2008, 08:58

Eventuell müßte man noch negative Zahlen abfangen.

elvls50
PostRank 1
PostRank 1
Beiträge: 8
Registriert: 17.04.2008, 22:27

Beitrag von elvls50 » 23.04.2008, 14:31

also haben tue ich ertsmal das hier:

html:

<html>
<head>
<title>zeitprüfen</title>
</head>

<body>
<form method="POST" action="/zeit.php">
<p><input type="text" name="hh" size="5">
</p>
<p><input type="text" name="mm" size="5">
</p>
<p><input type="text" name="ss" size="5">
</p>
<p>
<input type="submit" value="weiter" name="B1"><input type="reset" value="abbr." name="B2">
</p>

<? } ?>

</form>
</body>
</html>



php


<?PHP

$hh = $_POST['hh'];
$mm = $_POST['mm'];
$ss = $_POST['ss'];



if ( ($hh<=23 && $hh<=0) || ($mm<=59 && $mm<=0) || ($ss<=59 && $ss>=0))
{
header('Location: https://www.weiter.de/weiter.htm');
} else {
echo ' zeit existiert nicht';
}

?>

bei 23.00.00 kommt das richtige raus, aber wenn 25.00.00 eingebe kommt auch als richtig rausd?! wo liegt der fehler?

Anonymous

Beitrag von Anonymous » 23.04.2008, 14:37

elvls50 hat geschrieben: if ( ($hh<=23 && $hh<=0) || ($mm<=59 && $mm<=0) || ($ss<=59 && $ss>=0))
{
die zeile schau dir nochmal genau an... da wimmelt es nur so von logischen Fehlern...

MrJim
PostRank 3
PostRank 3
Beiträge: 84
Registriert: 20.02.2008, 14:49
Wohnort: erkrath

Beitrag von MrJim » 23.04.2008, 14:43

Ich würde es als Funktion machen:

Code: Alles auswählen

function checktime &#40;$hh,$mm,$ss&#41;&#123;
	$out=FALSE;
	if &#40; &#40;$hh>=0 && $hh<=23&#41; && 
	     &#40;$mm>=0 && $mm<=59&#41; && 
	     &#40;$ss>=0 && $ss<=59&#41;  &#41;&#123;
		if &#40;strlen&#40;$hh&#41;<2&#41;&#123; $hh = "0".$hh;	&#125;
		if &#40;strlen&#40;$mm&#41;<2&#41;&#123; $mm = "0".$mm;	&#125;
		if &#40;strlen&#40;$ss&#41;<2&#41;&#123; $ss = "0".$ss;	&#125;
		$out = $hh . "&#58;" .$mm . "&#58;" .$ss;
	&#125;
return $out;
&#125;

elvls50
PostRank 1
PostRank 1
Beiträge: 8
Registriert: 17.04.2008, 22:27

Beitrag von elvls50 » 23.04.2008, 17:50

@ MrJim...

sieht super aus, nur ich würde gerne eine abbruchanweisung drin haben, also ein else... da meckert aber immer das php... was mach ich falsch?

Anonymous

Beitrag von Anonymous » 23.04.2008, 18:08

elvls50 hat geschrieben:... was mach ich falsch?
also dein Fehler ist, das du PHP Scripte erstellen willst, ohne auch nur die Grundlagen von PHP und Scripterstellung verstanden zu haben....

ggf. wäre ein Forum das sich hauptsächlich mit Anfängerfragen zu PHP beschäftigt besser für dich geeignet... hier bei uns bildet PHP/Webcoding nur ein Randthema, während es hauptsächlich um Suchmaschinenoptimierung/Onlinemarketing geht... nur mal so als gutgemeinter Rat...

800XE
PostRank 10
PostRank 10
Beiträge: 5223
Registriert: 02.12.2004, 03:03

Beitrag von 800XE » 23.04.2008, 23:30

net(t)worker hat geschrieben:
elvls50 hat geschrieben: if ( ($hh<=23 && $hh<=0) || ($mm<=59 && $mm<=0) || ($ss<=59 && $ss>=0))
{
die zeile schau dir nochmal genau an... da wimmelt es nur so von logischen Fehlern...
Das ist so unlogisch, das tut weh
man sollte sich überlegen ..... Rechtsberatung ist nicht erlaubt in Foren ..... wann kommt ein Gesetz das man für schmerzhafte ForenPostings SchnerzensGeld verlangen kann?
net(t)worker hat geschrieben:
elvls50 hat geschrieben:... was mach ich falsch?
also dein Fehler ist, das du PHP Scripte erstellen willst, ohne auch nur die Grundlagen von PHP und Scripterstellung verstanden zu haben....
Grundlagen von Programmierung?
Meinten Sie: Grundlagen von logig?
Meinten Sie: Grundlagen von Mathematik?

Code: Alles auswählen

if &#40; &#40;$hh<=23 && $hh<=0&#41; || &#40;$mm<=59 && $mm<=0&#41; || &#40;$ss<=59 && $ss>=0&#41;&#41;
in Worten

Wenn $hh kleinergleich 23 und $hh kleinergleich 0
oder
Wenn $mm kleinergleich 59 und $hh kleinergleich 0
oder
Wenn $mm kleinergleich 59 und $hh größergleich 0


1. Meinten Sie: größer gleich 0?
Denn die Frage nach kleinergleich 0 ist unlogisch wenn es schon kleinergleich 23 oder 59 ist

2. Meinten Sie: und?
Denn, wenn $hh kleinergleich 23 oder $mm kleinergleich 59 sein soll für TRUE
dann ist $hh=800 oder $mm=23 TRUE
dann ist $hh=23 oder $mm=800 TRUE

und nu noch ein wenig mehr als Grundlage

Code: Alles auswählen

$hh = abs&#40; &#40;int&#41;$hh &#41;;
$mm = abs&#40; &#40;int&#41;$mm &#41;;
$ss = abs&#40; &#40;int&#41;$ss &#41;;
if &#40;  $hh<24 && $mm<60 && $ss<60 &#41;
(int) = macht eine Zahl daraus .... für Witzbolde mit "3viertel4" = 3
abs = AbsolutWert .... ist Vorzeichen horhanden, ist es dann nicht mehr vorhanden = macht aus MinusZahl eine Zahl ohne Minus
elvls50 hat geschrieben:Und 24:00:00 soll natürlich wie 22:76:34 nicht existieren...
Wenn ich jetzt irgendwo irgendwie .... immer z.B. 8 Stunden addiere .... dann prüfe ich nicht ob das jetzt 26Uhr ergibt

https://de2.php.net/mktime
mktime( 26, 79, 23, .....DatumvonHeute..
und ich erhalte den Timestamp von 1:19:23 von Morgen
// korektur .... 3:19 ?

CIX88
PostRank 3
PostRank 3
Beiträge: 90
Registriert: 11.05.2007, 11:45

Beitrag von CIX88 » 24.04.2008, 06:41

Anstelle von mehreren IF und ABS könnte man einfach auch mit regulären Ausdrücken (preg_match) und in einer Zeile prüfen.

Hasenhuf
PostRank 9
PostRank 9
Beiträge: 2840
Registriert: 26.12.2005, 22:22

Beitrag von Hasenhuf » 24.04.2008, 18:39

Wie prüfst Du mit preg_match (und mit vernünftigem Aufwand), ob eine Zahl in einem bestimmten Intervall liegt?

CIX88
PostRank 3
PostRank 3
Beiträge: 90
Registriert: 11.05.2007, 11:45

Beitrag von CIX88 » 26.04.2008, 08:40

Hasenhuf hat geschrieben:Wie prüfst Du mit preg_match (und mit vernünftigem Aufwand), ob eine Zahl in einem bestimmten Intervall liegt?
Mein Ansatz würde da so aussehen:

Code: Alles auswählen

$string = <<<EOF
1&#58;30 
01&#58;30 
23&#58;30 
18&#58;30 
3&#58;66 
EOF;

$pattern = '/# 
\b 
&#40;&#91;0-9&#93;|0&#91;0-9&#93;|1&#91;0-9&#93;|2&#91;0-3&#93;&#41; 
&#58; 
&#40;&#91;1-9&#93;|0&#91;0-9&#93;|&#91;1-5&#93;&#91;0-9&#93;&#41; 
\b 
# 
/x';

preg_match&#40;$pattern, $string, $array&#41;; 

echo '<pre>', print_r&#40;$array, true&#41;, '</pre>';

Nehmen wir zum Beispiel den Wert einer Sunde.
Wird nur eine Zahl eingetippt, kann die nur vom 0 bis 9 sein.
Werden 2 Zahlen eingetippt, wo die erste eine 1 ist, muss die zweite 0 bis 9 sein.
Werden 2 Zahlen eingetippt, wo die erste eine 2 ist dann muss die zweite eine 0 bis 3 sein - logisch, was sonst.
Und Minuszeichen etc.. werden gar nicht erst angenommen.

Und ebenso kann ich das auf Minuten, Sekunden oder weis der Geier übertragen.

Antworten
  • Vergleichbare Themen
    Antworten
    Zugriffe
    Letzter Beitrag