Raziel Geschrieben 25. Januar 2008 Geschrieben 25. Januar 2008 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? Zitieren
robotto7831a Geschrieben 25. Januar 2008 Geschrieben 25. Januar 2008 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 Zitieren
Raziel Geschrieben 25. Januar 2008 Autor Geschrieben 25. Januar 2008 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ß Zitieren
robotto7831a Geschrieben 25. Januar 2008 Geschrieben 25. Januar 2008 Pack in den else von if($jahr == "") die anderen Klamotten rein. Denn es geht ja nur eins von beiden. Entweder es ist keine Zahl eingetragen oder es wird auf Schaltjahr geprüft. Frank Zitieren
Raziel Geschrieben 25. Januar 2008 Autor Geschrieben 25. Januar 2008 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 Zitieren
robotto7831a Geschrieben 25. Januar 2008 Geschrieben 25. Januar 2008 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 Zitieren
Raziel Geschrieben 25. Januar 2008 Autor Geschrieben 25. Januar 2008 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 Zitieren
robotto7831a Geschrieben 25. Januar 2008 Geschrieben 25. Januar 2008 Du hast doch in der Funktion schon echos drin. Darum sollte auch was zu sehen sein. || = oder && = und PHP: is_numeric - Manual Frank Zitieren
Raziel Geschrieben 25. Januar 2008 Autor Geschrieben 25. Januar 2008 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 Zitieren
robotto7831a Geschrieben 25. Januar 2008 Geschrieben 25. Januar 2008 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 Zitieren
Raziel Geschrieben 25. Januar 2008 Autor Geschrieben 25. Januar 2008 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 Zitieren
Crash2001 Geschrieben 26. Januar 2008 Geschrieben 26. Januar 2008 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! Zitieren
Reinhold Geschrieben 26. Januar 2008 Geschrieben 26. Januar 2008 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 Zitieren
geloescht_JesterDay Geschrieben 26. Januar 2008 Geschrieben 26. Januar 2008 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] Zitieren
Reinhold Geschrieben 26. Januar 2008 Geschrieben 26. Januar 2008 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 Zitieren
geloescht_JesterDay Geschrieben 26. Januar 2008 Geschrieben 26. Januar 2008 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 Zitieren
Reinhold Geschrieben 26. Januar 2008 Geschrieben 26. Januar 2008 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 Ich wollte ja auch nur den deppen Spruch anbringen, aber bei einem Monnemer sollte man das vielleicht mit dazu schreiben *SCNR* Zitieren
Empfohlene Beiträge
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.