"Alte Werte" in Array

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

  • "Alte Werte" in Array

    Hallo,

    ich möchte zwei arrays aufbauen mit je drei Daten drin (z.B. 2006-02-20)
    Die Daten sollten je ein Monat auseinaderliegen. Ein Array bildet dan alle Anfangswerte, das ander die Endwerte.

    Mein Problem ist, dass ich im zweiten und dritten Element der Arrays die vorhergegangenen Werte "wiederfinde", was ich natürlcih nicht will.

    Hier der Code:

    PHP-Code:
    <?php
    $dayfrom 
    1;
    $dayto 1;
    $monthfrom date('n');
    $yearfrom date('Y');
    $yearto $yearfrom;


    for (
    $i=0$i <= 2$i++)
    {

    $arraydatefrom[] = $yearfrom;
    $arraydatefrom[] = $monthfrom;
    $arraydatefrom[] = $dayfrom;
     
    $datefrom[$i] = implode ("-",$arraydatefrom);

    $monthto $monthfrom 1;

    $arraydateto[] = $yearto;
    $arraydateto[] = $monthto;
    $arraydateto[] = $dayto;
    $dateto[$i] = implode ("-",$arraydateto);

    $monthfrom $monthfrom +1;

    }
    ?>
    Lasse ich mir nun echo "$datefrom[0]" und "$dateto[0]" ausgeben, so erhalte ich korrekt die Daten. Bei "$datefrom[1]" etc. erhalte ich jedochj immer die Werte vom vorherigen Element + das neu errechnete.

    PS: Ich weiss dass ich mich noch um den "Jahreswechsel" kümmern muss, aber ich habe das Problem soweit vereinfacht wie's geht.

    Danke für die Hilfe
    Zuletzt geändert von mrob; 25.02.2006, 15:43.

  • #2
    formatiere bitte den code leserlich und arbeite mit E_ALL.

    Kommentar


    • #3
      Sorry wegen der Formatierung. Hab's geändert. Ich baue das error_reporting ein.

      Gruss

      Kommentar


      • #4
        Ich habe das error_reporting eingebaut. Ich erhalte:

        Notice: Use of undefined constant m - assumed 'm' in /index.php

        Notice: Use of undefined constant Y - assumed 'Y' in /index.php

        Ich denke mit dem hat das Program kein Problem, da das Program den Monat und das Jahr richtig rechnet.

        Ich wuerde eigentlich erwarten:

        $datefrom[0] ist '2006-02-01'
        $datefrom[1] ist '2006-03-01'
        $datefrom[2] ist '2006-04-01'

        $dateto[0] ist '2006-03-01'
        $dateto[1] ist '2006-04-01'
        $dateto[2] ist '2006-05-01'

        statt dessen erhalte ich z.b. für $datefrom[2]

        2006-02-1-2006-3-1-2006-4-1
        Zuletzt geändert von mrob; 25.02.2006, 13:23.

        Kommentar


        • #5
          ich würd an deiner Stelle einfach nochmal die Fehlermeldung GENAU lesen und mir die entsprechende Zeile nochmal gut anschauen
          Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
          Schön - etwas Geschichte kann ja nicht schaden.
          Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

          Kommentar


          • #6
            Hallo Quetschi,

            die entsprechende(n) Zeilen lauten:

            $dayfrom = 01;
            $dayto = 01;
            $monthfrom = date(m);
            $yearfrom = date(Y);
            $yearto = $yearfrom;

            wenn ich mir ein echo von $monthform und $yearfrom asgenben lasse, so erhalte ich korrekt Werte. (also 02 und 2006)

            die Variablen werden vor der Schlaufe eingelesen.

            Gruss

            Kommentar


            • #7
              1. ganze zahlen in php _ohne_ führende null. gibt sonst probleme wg. der oktalen schreibweise.

              2. m und Y sind strings und keine konstanten. was fehlt also?

              Kommentar


              • #8
                Halo penizillin,

                ich habe die definition des Monats auf

                $monthfrom = date(n); abgeändert. Dies gibt mir die Monatszahl ohne führende null aus.

                Zu Deinem 2. punkt. Willst DU damit sagen, dass ich m bzw.n und Y zuerst als String dekalrierne muss? Ich verwende sie ja mit der date() funktion.

                Gruss

                Kommentar


                • #9
                  wg. der führenden null meinte ich deine tages-variablen.
                  strings (die parameter der date() funktion) müssen nicht extra deklariert werden (buddha segne php), aber gekennzeichnet. wie? steht alles hier drin: http://de3.php.net/manual/en/language.types.string.php

                  Kommentar


                  • #10
                    Hallo pelizillin,

                    ich habe jetzt die Strings richtig gekennzeichnet. (mit den ' ')
                    Ich habe jetzt keine Fehler Meldungen mehr aber leider immer noch das gleich Resultat.

                    Gruss

                    Kommentar


                    • #11
                      versuch bitte noch mal deutlich zu erklären, was du vor hast.

                      Kommentar


                      • #12
                        Hallo pelizillin,

                        was ich erreichen möchte ist:

                        Vom jetzigen Monat drei "Zeitfenster" zu konstruieren, die ein Monat lang sind und drei Monate in die Zukunft gehen.

                        Also z.B es ist Februar, so mochte ich ein Datumsbegin am 1.Februar bis 1.März das zweite vom 1. März bis 1.April und das dritte vom 1. April bis 1. Mai.

                        Das ganze mussich noch in der Schreibweise "Jahr-Monat-Tag" haben, da ich diese Daten später in einem sql request verwenden möchte.

                        Gruss

                        Kommentar


                        • #13
                          das letzte ist wohl entscheidend.
                          wenn du eine anfrage an mysql schicken möchtest, lässt sich das zeitfenster auch mit sql-eigenen mitteln problemlos angeben.

                          wie soll denn die query aussehen und wie willst du dein php-zeug darin benutzen?

                          Kommentar


                          • #14
                            Um die richtige Notation zu erhalten baue ich sie mit den "implode" befeh auf. Das funktioniert auch ganz gut, benutzt dies in einem anderen Teil bereits.

                            Die query sind dann so aus:

                            PHP-Code:
                            <?php

                            $sql1 
                            " select * from table  where date_scheduled between '$datefrom' and '$dateto' and s.client_id = '$clientid'";
                            ?>
                            Die Werte aus der Datanbank sind ok, d.h. wenn ich die Query direkt via mysql command abschicke kriege ich was ich erwarte.

                            Kommentar


                            • #15
                              hm... ok.
                              das $arraydatefrom und $arraydateto werden nach dem implode() nicht zurückgesetzt - daher gibt's im zweiten durchlauf probleme.
                              immer schön leeren nach dem implodieren.

                              Kommentar

                              Lädt...
                              X