strtotime W: kalenderwochen falsch

Dieses Thema im Forum "Webentwicklung" wurde erstellt von freakZ, 15. April 2014 .

Schlagworte:
  1. 15. April 2014
    hi,

    wer kann mir sagen worans hier liegt , der $_REQUEST , kommt von einer user eingabe rein sollte also bestehen bleiben.
    Geht darum das er bei eingabe von 53 -> sagt Montag:29.12.2014 bis Freitag:02.01.2015, was ja falsch ist denn 53 -> Kalenderwoche 1


    PHP:
    $woche  $_REQUEST [ 'week' ]; 
    $jahr  date ( 'Y' );
    $timestamp_montag  strtotime ( " { $jahr } -W { $woche } " ); 
    $timestamp_freitag  strtotime ( " { $jahr } -W { $woche } -5" );
    if ($resultat = $db->query('SELECT * FROM spielplan WHERE week = '.$_REQUEST['week'].'')) {
    [/php]

    Folgendes soll gehen:
    Wie filtere ich den $_REQUEST , damit da nichts reinkommt am besten mit numeric "da nur zahlen reinkommen" (Wochenzahlen)?
    Als auch wie ändere ich es das es keine 53 wochen gibt sondern 51 und die andere ins nächste Jahr rutscht?
    thanks

    Edit: bei date auf php.net finde ich ne Lösung %V nur wie integrier ich das ganze in mein Snippet sodass es funkt :/
     
  2. 17. April 2014
    AW: strtotime W: kalenderwochen falsch

    $woche = intval($_REQUEST['week']);
    oder
    $woche = preg_replace("/[^0-9$]", "", $_REQUEST['week']);
     
  3. 17. April 2014
    AW: strtotime W: kalenderwochen falsch

    untested intval beseitigt, aber nicht das problem - das besteht das woche 53 existiert obwohls nur 52 gibt ..
    Die woche 53 is eben eigentlich Woche 1 des Jahres 2015 , und das bekomm ich anhand meines oben geposteten codes nicht hin
     
  4. 17. April 2014
    AW: strtotime W: kalenderwochen falsch

    das habe ich ja auch nicht gesagt, mir fehlte da grad etwas zeit und hirn, ich habe dir nur aufgezeigt wie du die Eingaben filterst da das was du machst sql injection anfällig is

    Es gibt btw sicher elegantere wege aber du könntest aufrunden


    52/53 = 1. Jahr
    54/53 = über 1 also 2. jahr
     
  5. 17. April 2014
    Zuletzt bearbeitet: 28. April 2014
    AW: strtotime W: kalenderwochen falsch

    PHP:
    function  wochen_im_jahr ( $Y ) {
      
    $dd  15 ;
      
    $dt  = new  DateTime ;
      
    $mw  0 ;
      
      for (;;) {
        
    $dt -> setDate ( $Y 12 $dd );
        
    $ww  $dt -> format ( 'W' );
        
    $ww  ltrim ( $ww '0' )| 0 // ltrim() eigl. unnötig, aber der vollständigkeit halber mal drin gelassen
        
        
    if ( $mw  $ww
          break;
        
        
    $mw  $ww ;
        
    $dd  +=  7 ;
      }
      
      return 
    $mw ;
    }
    PHP:
    print  wochen_im_jahr ( 2014 );  // 52
    print  wochen_im_jahr ( 2015 );  // 53
    damit kannst du gegenprüfen
     
  6. 17. April 2014
    AW: strtotime W: kalenderwochen falsch

    Danke für den Ansatz, doch das Problem ist das Datumsformat ansich,
    derzeit bei KW 52 ->
    KW(52)
    Montag:22.12.2014 bis Freitag:26.12.2014
    und bei KW 53 (die im Jahr 2014 ja nicht existiert)
    KW(53)
    Montag:29.12.2014 bis Freitag:02.01.2015

    Sprich eine Begrenzung ala Prüfe wie viele Wochen existieren bringt da leider nichts da ich genau das Datum brauche immer von MO - FR steh total aufn schlauch

    Der Spielplan wird immer nur von MO - FR ausgegeben.
    Kann ich das ganze irgendwie in mein Snipped implementieren (??
     
  7. 17. April 2014
    AW: strtotime W: kalenderwochen falsch

    Dann prüf' doch einfach ob sich das Jahr in der KW ändert und wenn ja: diese Woche komplett ins neue Jahr mitnehmen.

    KW(52)
    Montag:22.12.2014 bis Freitag:26.12.2014

    KW(1)
    Montag:29.12.2014 bis Freitag:02.01.2015
     
  8. 17. April 2014
    AW: strtotime W: kalenderwochen falsch

    Sry für ot, aber was macht denn for(; ?
     
  9. 17. April 2014
    AW: strtotime W: kalenderwochen falsch

    Das ist ne Schleife ohne Bedingung (Endlosschleife).
    Im Grunde das selbe wie while (true) {} nur eben ohne zu prüfen ob "true" auch "true" ist

    PHP:
    for ( ) {
      
    // mach was
    }
     
  10. 22. April 2014
    AW: strtotime W: kalenderwochen falsch

    Mir gehts darum ich brauch folgende Ausgabe
    Kalenderwoche (17)
    Montag:21.04.2014 bis Freitag:25.04.2014
    wie bekomm ich das nun ..
     
  11. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.