Zum Inhalt springen

Schaltjahr


Empfohlene Beiträge

Hi,

hab ein kleines problem. Ich möchte, dass eine meldung kommt, dass es kein eintrag eingegeben wurde. Wie mach ich das? :(

<?php

    function check_leapyear($jahr)

    {

        if( ($jahr % 400 == 0) || (($jahr % 4 == 0) && ($jahr % 100 != 0) ))

        {

            echo $jahr." ist ein Schaltjahr";

        }

        else

        {

            echo $jahr." ist kein Schaltjahr";


			if($jahr == "")

           	{

           	echo "Sie haben kein Jahr eingegeben!";

           	}

        }

    }



    echo check_leapyear ($jahr);

?>

Ich bin nun seit 2 wochen FI-AE-Azubi und übe grad PHP, kenne mich aber wahrscheinlich im gegensatz zu euch so gut wie gar nicht aus :/

könntet ihr mir bitte helfen? :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

ich versteh die Frage nicht.

Ich würde allerdings die Abfrage ob überhaupt ein Jahr eingegeben wurde schon vor dem ersten if abhandeln und nicht erst im else Zweig.

Frank

Ich mache PHP-Grundübungen, da ich mich da gar nicht auskenne und es gerade erst lerne. Nun muss ich etwas simples schreiben: Schaltjahrprüfung

sprich ich hab ein kleines feld wo man das jahr reinschreibt und es kommt die meldung obs ein schaltjahr ist oder nicht.

Danke für deinen Tipp! Durch das Nach-Oben-Setzen funktioniert es, allerdings kommt dann hinter der meldung "ist ein schaltjahr" es soll aber nur die meldung "Sie haben kein Jahr eingegeben!" kommen wenn nichts im Feld drin steht.

Könntest du mir da evtl. auch helfen? :)

Gruß

Link zu diesem Kommentar
Auf anderen Seiten teilen

also ich hab das jetzt so und es funktioniert :) ist es aber richtig in der programmierwelt?

<?php


$jahr = $_POST['jahr'];




?>



<html>

<head> </head>

	<body>

	<table width="100%" height="100%">

	 <tr>

	 <td align="center">

<?php

    function check_leapyear($jahr)

    {

        if($jahr == "")

           	{

           	echo "Sie haben kein Jahr eingegeben!";


        }elseif( ($jahr % 400 == 0) || (($jahr % 4 == 0) && ($jahr % 100 != 0) ))

        {

            echo $jahr. " ist ein Schaltjahr";

        }

        else

        {

            echo $jahr. " ist kein Schaltjahr";


           	}

        }




    echo check_leapyear ($jahr);

?>

	</body>

</html> 

und eine letzte frage hab ich noch: wie definier ich es, dass buchstabe unzulässig sind? denn wenn ich nämlich buchstaben in das feld eingeben heißt es z. B. "asdf ist ein Schaltjahr"

Gruß, Raziel

Link zu diesem Kommentar
Auf anderen Seiten teilen

Nein so meinte ich das nicht.


function check_leapyear($jahr)
{
if($jahr == "" || is_numeric($jahr)==false)
{
echo "Sie haben kein Jahr eingegeben!";
}
else
{
if( ($jahr % 400 == 0) || (($jahr % 4 == 0) && ($jahr % 100 != 0) ))
{
echo $jahr. " ist ein Schaltjahr";
}
else
{
echo $jahr. " ist kein Schaltjahr";
}
}
}
[/php]

Es gibt die Funktion is_numeric um zu prüfen ob es Zahlen sind.

Was soll eigentlich das echo bei "echo check_leapyear ($jahr);"?

Frank

Link zu diesem Kommentar
Auf anderen Seiten teilen

Was soll eigentlich das echo bei "echo check_leapyear ($jahr);"?

Also ich bin kein fachmann, aber wenn ich das lösche, dann prüft er vielleicht, aber zeigt nichts an.

Sprich ich sehe nur einen weißen bildschirm ohne Meldung.

Danke für deine Hilfe und deinen Tipp! Es funktioniert!

eine frage hab ich aber noch: Die zeile

if($jahr == "" || is_numeric($jahr)==false)

also bis || ist ja klar aber wie definiert sich is_numeric($jahr)==false?

|| ist sowas wie "oder"?

is_numeric($jahr)==false Variable muss nummerisch sein, wenn nicht = falsche -> echo?

Gruß, Raziel

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das verstehe ich ehrlich gesagt auch nicht :/

Ganz egal ob ich das Jahr / Text / Nichts eingebe, ich werde einfach auf eine leere seite weitergeleitet.

Wenn ich das echo aber drin lasse, funktioniert alles wie es soll.

Und ein großes DANKESCHÖN nochmal für deine Hilfe! :)

Gruß, Raziel

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also bei folgendem Code kommt als Output "2008 ist ein Schaltjahr".


<html>
<body>
<?PHP

function check_leapyear($jahr)
{
if($jahr == "" || is_numeric($jahr)==false)
{
echo "Sie haben kein Jahr eingegeben!";
}
else
{
if( ($jahr % 400 == 0) || (($jahr % 4 == 0) && ($jahr % 100 != 0) ))
{
echo $jahr. " ist ein Schaltjahr";
}
else
{
echo $jahr. " ist kein Schaltjahr";
}
}
}

check_leapyear (2008);

?>
</body>
</html>
[/php]

Frank

Link zu diesem Kommentar
Auf anderen Seiten teilen

achso... habs falsch verstanden...

dachte es soll die ganze zeile raus.. aber dabei ist ja "check_leapyear ($jahr);" das entscheidende (was logisch ist) und benötigt kein echo...

ich dachte der befehl gehört mit "echo" zusammen *g*

naja übung macht den meister ;) auch wenn der weg lang ist *g*

danke nochmal!

Gruß, Raziel

Link zu diesem Kommentar
Auf anderen Seiten teilen

Es gibt unter PHP noch zwei Funktionen, die hier hilfreich sein könnten.

Kontrollieren ob eine Variable leer ist: empty PHP: empty - Manual

Kontrollieren ob eine Variable definiert ist: isset PHP: isset - Manual

isset($var) prüft, ob überhaupt ein Wert in dieser Variable steckt, oder ob sie noch gar nicht gesetzt, oder per unset() "geleert" wurde. Falls sie gesetzt ist, gibt sie TRUE zurück, ansonsten FALSE.

empty($var) prüft, ob die Variable den Wert NULL, "", 0 oder "0" hat und gibt in diesen Fällen TRUE aus.

Und dann gibts noch die Möglichkeit if($var)

Hier wird afaik geprüft, ob die Variable einen Wert hat und falls das der Fall ist, wird TRUE zurückgegeben.

Mittels ! ist auch die Negation möglich. Also aus TRUE wird FALSE und umgekehrt.

Beispiell:

if(!$var) { //mach etwas, wenn die Variable leer ist }

Zwischen PHP4 und PHP5 existieren hier jedoch Unterschiede!

Link zu diesem Kommentar
Auf anderen Seiten teilen

Moin,

mal ungeachtet der bisherigen Diskussion mit natürlich richtigen Hinweisen befremdet es mich, dass deine Funktion selbst Ausgaben macht.

Ich meine, es wäre besser, wenn deine Funktion true oder false zurück liefert und eventuelle Ausgaben vom aufrufenden Teil übernommen werden. Damit wäre die Funktion flexibler.

Also z.B. etwas wie


echo "Das Jahr " . $_POST['jahr'] . " hat "
. (365 + (check_leapyear($_POST['jahr'])?1:0))
. " Tage."
[/PHP]

Nur mal so nebenbei

Reinhold

Link zu diesem Kommentar
Auf anderen Seiten teilen

Auch mal so nebenbei, zusätzlich zu dem was Reinhold grad gesagt hat, würd ich die Funktion dann auch isLeapyear nennen ;)


...
if (isLeapyear($jahr))
...
[/php]

Und noch nebenbeier: Ich habe JesterDay soeben als Kandidat für die "goldene Axt" als "Haarspalter des Monats" vorgeschlagen. :mod::hells:

Reinhold

Link zu diesem Kommentar
Auf anderen Seiten teilen

Und noch nebenbeier: Ich habe JesterDay soeben als Kandidat für die "goldene Axt" als "Haarspalter des Monats" vorgeschlagen. :mod::hells:

Und nebenbei mal nebenbei gesagt: Ein passender Name für eine Funktion sagt auf den ersten Blick gleich, was die tut. check_leapyear kann alles mögliche tun, eine Funktion die isBlaBla (oder auch mit _ von mir aus) heißt, gibt im Normalfall einen Booleanwert zurück ;) Das macht ja schon der Name verständlich.

Außerdem sollte das eine Ergänzung zu deinem Code sein, keine Kritik daran :P

Link zu diesem Kommentar
Auf anderen Seiten teilen

Und nebenbei mal nebenbei gesagt: Ein passender Name für eine Funktion sagt auf den ersten Blick gleich, was die tut. check_leapyear kann alles mögliche tun, eine Funktion die isBlaBla (oder auch mit _ von mir aus) heißt, gibt im Normalfall einen Booleanwert zurück ;) Das macht ja schon der Name verständlich.

Außerdem sollte das eine Ergänzung zu deinem Code sein, keine Kritik daran :P

Ich wollte ja auch nur den deppen Spruch anbringen, aber bei einem Monnemer sollte man das vielleicht mit dazu schreiben *SCNR*

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...