Ankündigung

Einklappen
Keine Ankündigung bisher.

Abfrage beenden wenn richtig sonst etwas anderes ?

Einklappen

Neue Werbung 2019

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

  • Abfrage beenden wenn richtig sonst etwas anderes ?

    Hallo !!

    Habe mich jetzt schon eine Weile nicht mehr gemeldet und wollte nun nochmals nach Hilfestellung bitten.

    Wie kann ich die folgende Situation lösen, habe schon Ansätze mit break; versucht, aber bekomme immer die Fehlermeldung "Fatal error: Cannot break/continue 1 Level".
    Es geht um folgendes :

    PHP-Code:
    <?php
    date_default_timezone_set
    ("Europe/Berlin");
    $tage = array (
            
    "Mon" => "Montag",
            
    "Tue" => "Dienstag",
            
    "Wed" => "Mittwoch",
            
    "Thu" => "Donnerstag",
            
    "Fri" => "Freitag"
            
    "Sat" => "Samstag",
            
    "Sun" => "Sonntag"
        
    );
    $monate = array (
            
    "Jan" => "Januar",
            
    "Feb" => "Februar",
            
    "Mar" => "März",
            
    "Apr" => "April",
            
    "Mai" => "Mai",
            
    "Jun" => "Juni",
            
    "Jul" => "Juli",
            
    "Aug" => "August",
            
    "Sep" => "September",
            
    "Oct" => "Oktober",
            
    "Nov" => "November",
            
    "Dec" => "Dezember"
        
    );
    if(
    $tage['Mon'] == true) {
             echo (
    "Heute Geschlossen");
    break;}  
         if(
    $tage['Mon'] == "false") {
    $monat $monate[date("M")];
    $wochentag $tage[date("D")];
    echo 
    "$wochentag, ";
    echo 
    date("j. " ) .$monat date(" Y");
    }
    ?>
    Also ich möchte nur wissen wie ich eine Abfrage stellen und wenn richtig, dann ausgeben Heue Geschlossen und die Abfrage beenden, ansonsten das Datum vom nächsten Tag ausgeben.

    Besten Dank für jede Hilfe !!

    Gruss Marijo


  • #2
    aber $tage['Mon'] ist doch nie TRUE oder FALSE.

    ich glaube du suchst else.

    Kommentar


    • #3
      Wäre in dem Fall $tage['Mon'] nicht immer True ? ... da weder NULL noch 0 drin steht und nicht mit === abgefragt wird ?
      Zudem eine Abfrage auf True ja völliger blödsinn ist. Da geschaut werden soll, ob der heutige Tag die den selben String zurückgibt wie in $tage['Mon'] enthalten.
      Und das break soll in dem Fall nicht die weiteren Abfragen verhindern (wie aus Switch-Case bekannt) sondern auf first Level das gesamte Script und ich würde mal meinen deiner Fehlerausgabe zufolge, möchte PHP so etwas nicht machen.
      ------
      Grüße Manü

      Kommentar


      • #4
        Hinweis:

        Der schließende Tag eines PHP-Blocks am Ende einer Datei ist optional. In einigen Fällen ist das Weglassen hilfreich:
        • Es können ungewollte Whitespaces am Ende einer Datei auftreten, durch die ein späteres setzen von headern be-/verhindert werden kann.
        • Außerdem verhindert dies, dass beim Output Buffering Whitespaces am Ende eines durch die eingebundenen Dateien erzeugten Parts.
        • Im PSR Standard (PSR-2) ist ?> sogar ausdrücklich verboten, wenn in einer Datei ausschliesslich PHP verwendet wird (2.2 Files).
        Standards - Best Practices - AwesomePHP - Guideline für WebApps

        Kommentar


        • #5
          Also ich möchte nur wissen wie ich eine Abfrage stellen und wenn richtig, dann ausgeben Heue Geschlossen und die Abfrage beenden, ansonsten das Datum vom nächsten Tag ausgeben.
          Also ich finde das so nicht ganz verständlich...

          Du willst den heutigen/aktuellen Wochentag prüfen, wenn dieser ein Montag ist (wie heute) dann soll "geschlossen" zurückgegeben werden und wenn es nicht Montag ist, dann soll der nächste Tag sein, der zurückgegeben wird?
          Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
          PHP.de Wissenssammlung | Kein Support per PN

          Kommentar


          • #6
            Zitat von Manu86 Beitrag anzeigen
            Wäre in dem Fall $tage['Mon'] nicht immer True ? ... da weder NULL noch 0 drin steht und nicht mit === abgefragt wird ?
            ist $tage['Mon'] nicht "Montag" ?
            http://php.net/manual/de/control-structures.elseif.php

            Kommentar


            • #7
              Kann es sein, dass ich auf dem falschen Dampfer bin?
              Du willst doch wahrscheinlich das ganze so haben:

              PHP-Code:
              Wenn heute Montag ist
              {
                 
              ausgabe"Heute geschlossen"
              }
              ansonsten
              {
                 ...
              dein Code

              Du vertust dich glaub ich etwas bei deinem ersten If.
              PHP-Code:
              $tage['Mon'
              wird in diesem Script niemals nicht == true sein.
              Die Jatravartiden auf Viltwodl VI können den Kram von dir auch nicht nachvollziehen

              Kommentar


              • #8
                Zitat von moma Beitrag anzeigen
                Jup ...
                und ich musste es jetzt wirklich selbst nochmal testen, aber
                PHP-Code:
                <?php
                $tage 
                = array( 
                        
                "Mon" => "Montag"
                        
                "Tue" => "Dienstag"
                        
                "Wed" => "Mittwoch"
                        
                "Thu" => "Donnerstag"
                        
                "Fri" => "Freitag",  
                        
                "Sat" => "Samstag"
                        
                "Sun" => "Sonntag" 
                    
                );
                var_dump($tage['Mon'] == true//true;
                var_dump($tage['Mon'] === true//false;
                ?>
                Ich wollte nur darauf hinaus, das bei == true wohl immer geschlossen sein wird, da $tage['Mon'] immer etwas enthält
                ------
                Grüße Manü

                Kommentar


                • #9
                  Ja, also ungeachtet davon das PHP bekanntermaßen "auto-castet" wissen wir immer noch nicht genau, was der TE Marijoman eigentlich genau will bzw. was konkret sein Problem ist. Er soll sich mal äußern, aktuell wird hier an drei verschiedenen Baustellen herumgedoktert.
                  Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                  PHP.de Wissenssammlung | Kein Support per PN

                  Kommentar


                  • #10
                    Zitat von hausl Beitrag anzeigen
                    Also ich finde das so nicht ganz verständlich...

                    Du willst den heutigen/aktuellen Wochentag prüfen, wenn dieser ein Montag ist (wie heute) dann soll "geschlossen" zurückgegeben werden und wenn es nicht Montag ist, dann soll der nächste Tag sein, der zurückgegeben wird?
                    Hallo !!

                    Also ich bin erstaunt und erschlagen von den vielen Antworten. Also ich muss mich nochmals klar äussern. Ich will prüfen, ob heute Montag ist, dann soll Heute Geschlossen stehen und das weitere Script abbrechen. An allen anderen Tagen soll das Script ausgeführt werden !!
                    Ich hoffe, dass dies alle Fragen beantwortet. Bin gerade noch an einer anderen Arbeit schaue erst wieder gegen Abend hier rein.

                    Dank euch viel mal. Ich versuche eure Inputs selber umzusetzen.
                    Gruss

                    Kommentar


                    • #11
                      Du brauchst zur Abfrage einfach nur den Wert abfragen:
                      PHP-Code:
                      $oDateTime = new DateTimeNULL, new DateTimeZone('Europe/Berlin') );
                      $iWeekDay $oDateTime->format'N' );

                      if ( 
                      $iWeekDay == ) {

                          echo 
                      'Heute geschlossen';
                          exit;

                      }

                      echo 
                      'Doch nicht Montag, hier gehts weiter...'
                      ...denn kannst noch ne Liste der geschlossenen Tage machen, um flexibler zu sein:
                      PHP-Code:
                      $aClosed = array( 16);

                      // ...

                      if ( in_aray($iWeekDay$aClosed) ) {

                          
                      // ...

                      }

                      // ... 
                      alles weitere ist verschönerte Ausgabe!
                      Competence-Center -> Enjoy the Informatrix
                      PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                      Kommentar


                      • #12
                        Super Hilfestellung

                        Zitat von Arne Drews Beitrag anzeigen
                        Du brauchst zur Abfrage einfach nur den Wert abfragen:
                        PHP-Code:
                        $oDateTime = new DateTimeNULL, new DateTimeZone('Europe/Berlin') );
                        $iWeekDay $oDateTime->format'N' );

                        if ( 
                        $iWeekDay == ) {

                            echo 
                        'Heute geschlossen';
                            exit;

                        }

                        echo 
                        'Doch nicht Montag, hier gehts weiter...'
                        ...denn kannst noch ne Liste der geschlossenen Tage machen, um flexibler zu sein:
                        PHP-Code:
                        $aClosed = array( 16);

                        // ...

                        if ( in_aray($iWeekDay$aClosed) ) {

                            
                        // ...

                        }

                        // ... 
                        alles weitere ist verschönerte Ausgabe!
                        Hallo Arne Drews !!

                        Also erstmals danke ich dir für deine Hilfestellung. Das ist genau was ich gesucht habe. Ich bin nun daran, das ganze Script nachzuschlagen in php.net in der Referenz. Denn ich möchte auch alles verstehen. Es geht mir nicht nur darum die Lösung zu haben, sondern auch zu verstehen, was ich da vor mir habe.
                        Ich habe nun noch eine Frage, denn du hast ja gesehen, dass ich das Datum auf Deutsch ausgeben will. Was würdest du mir dabei raten ?
                        Ist die Vorgehensweise richtig oder soll ich da mit mktime() arbeiten ?
                        Denn ich will eben jeden Tag der Woche auf Deutsch ausgeben, also bedeutet ich möchte dass ich am Ende z.B.: Montag, 21.7.2014 <br />Dienstag, 22.7.2014<br />Mittwoch, 21.7.2014<br /> ect. ...... usw. haben.
                        Deshalb habe ich diese aray mit den Wochentagen und Monaten erstellt. Ich habe dies mit einer Anleitung aus dem Netz gemacht und denke ich bin auf dem richtigen Weg, denke aber es gibt sicher auch andere Wege !!

                        Gruss und dank dir für dein Input !!!

                        Kommentar


                        • #13
                          mktime() würde ich dafür nicht nehmen. Das DateTime-Objekt liefert Dir doch alles, was Du benötigst:
                          PHP-Code:
                          $aDays = array( 'Sonntag''Montag', ..., 'Samstag' );
                          $aMonths = array( null'Januar''Februar', ..., 'Dezember' );

                          $iDayId $oDateTime->format'w' ); // 0 = Sonntag ... 6 = Samstag
                          $iMonthId $oDateTime->format'n' ); // 1 (Januar) ... 12 (Dezember)

                          $sOutLongDate =
                              
                          $aDays[$iDayId] .
                              
                          $oDateTime->format', d.m.Y' );

                          $sOutLongerDate =
                              
                          $aDays[$iDayId] .
                              
                          $oDateTime->format', d. ' ) .
                              
                          $aMonths[$iMonthId] .
                              
                          $oDateTime->format'Y' );


                          echo 
                          $sOutLongDate;
                          echo 
                          $sOutLongerDate
                          Code:
                          Montag, 21.07.2014
                          Montag, 21. Juli 2014
                          Competence-Center -> Enjoy the Informatrix
                          PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                          Kommentar


                          • #14
                            Hallo !!

                            Also dank dir. Dies ist ja das gleiche wie ich schon hatte. Ich konnte mit meinem Script auch einen Tag ausgeben, zudem war es für mich auch leichter zu verstehen. Aber egal ich konnte deins nun mehr oder weniger verstehen. Musste es noch wenig anpassen. Jetzt habe ich :
                            PHP-Code:
                            <?php
                                            $aDays 
                            = array( 'Sonntag''Montag',  'Dienstag''Mittwoch''Donnerstag''Freitag''Samstag'  );
                                    
                            $aMonths = array( null,'Januar''Februar''März''April''Mai''Juni''Juli''August''September''Oktober''November''Dezember' );
                                    
                                    
                            $iDayId $oDateTime->format'W' ); // 0 = Sonntag ... 6 = Samstag
                                    
                            $iMonthId $oDateTime->format'n' ); // 1 (Januar) ... 12 (Dezember)
                                    
                                    
                            $sOutLongDate =
                                    
                            $aDays[$iDayId] .
                                            
                            $oDateTime->format', d.m.Y' );
                                            
                                    
                            $sOutLongerDate =
                                    
                            $aDays[$iDayId] .
                                    
                            $oDateTime->format', d. ' ) .
                                    
                            $aMonths[$iMonthId] .
                                    
                            $oDateTime->format' Y' );
                                    
                                    echo 
                            $sOutLongerDate;

                                    
                            ?>
                            Aber nun bin ich immer noch am selben Ort, ich kann damit nur den heutigen Tag ausgeben, ich will aber die ganze Woche ausgeben, deshalb habe ich gefragt, ob ich es mit mktime() machen soll ?

                            Ich habe es hinbekommen einen Tag mehr auszugeben, aber nicht im gleichen Format, sondern nur die Zahl 23 !!

                            PHP-Code:
                                    echo $sOutLongerDate."<br />";
                                    echo 
                            date("d")+1
                            Und ich wollte noch fragen, wie kann ich bei echo grössere HTML Bereiche einbinden ? Ich habe es schon versucht wie man ganz einfache Sätze einbindet mit Anführungszeichen, aber hat nicht geklappt !!

                            Gruss und dank dir vielmals !!

                            Kommentar


                            • #15
                              Ich habe es hinbekommen einen Tag mehr auszugeben, aber nicht im gleichen Format, sondern nur die Zahl 23 !!
                              PHP-Code:
                              echo date("d")+1
                              Klar, wenn du hier wieder date() direkt verwendest, heute ist der 22. also + 1 ist der 23. PHP macht genau was du "programmiert" hast. Nutze doch grundsätzlich mal das DateTime Objekt das du schon hast ($oDateTime).

                              ich kann damit nur den heutigen Tag ausgeben, ich will aber die ganze Woche ausgeben
                              Was willst du als Ausgabe bekommen, den nächsten Tag oder die ganze Woche, und wenn, wie soll das aussehen? Vor allem die Woche?

                              LG
                              Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                              PHP.de Wissenssammlung | Kein Support per PN

                              Kommentar

                              Lädt...
                              X