Das Thema kann man nicht überschreiben - sorry!

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

  • Das Thema kann man nicht überschreiben - sorry!

    'n Abend Deutschland,

    bin dabei vom Glauben abzufallen. Mache zwei Aktionen, die beinahe absolut identisch sind, aber eine spinnt. Sorry, dass ich jetzt soviel hier reinknalle, aber das kann man ja später eventuell löschen:

    Also, es soll in der Datenbank gesucht werden, wie viele Familien heute ankommen, eine Meldung ausgegeben werden und an die Unterkunft eine email abgeschickt werden. Danach gibts nen Eintrag in der Datenbank, dass die email abgesetzt wurde. Damit sie nicht mehrmals versendet wird. KLAPPT

    Aber das selbe Spiel mit "morgen" klappt nicht. Selbe Abfrage, die Datenbank wird upgedatet, aber die email geht immer wieder raus.

    Heute sieht so aus:
    • $datum=date('Y.m.d');
      $heute=MYSQL_NUMROWS(MYSQL_QUERY( "SELECT * FROM booking WHERE resort=1 AND arrival_date='$datum'"));
      if ($heute==0):
      echo "<td style=\"width:635\"></span></td>\n";
      elseif ($heute==1):
      echo "<td style=\"width:635\">$heute arrival today!</a></span></td>\n";
      elseif ($heute > 1):
      echo "<td style=\"width:635\">$heute arrivals today!</span></td>\n";
      endif;
      if ($today==0 and $heute==1):
      mail($empfaenger, "1 Arrival today!", "laber, laber laber", "From: $absender\n");
      $sql = "update booking set today='1' WHERE resort='1' AND arrival_date=NOW() AND today='0'";
      $res = mysql_query($sql) or die(mysql_error());
      elseif ($today==0 and $heute>1):
      mail($empfaenger, "Arrivals today !", "laber laber laber", "From: $absender\n");
      $sql = "update booking set today='1' WHERE resort='1' AND arrival_date=NOW() AND today='0'";
      $res = mysql_query($sql) or die(mysql_error());
      endif;
      $today ist das Feld aus der Datenbank, das standardmässig mit 0 gefüllt wird


    Morgen
    • $morgen=MYSQL_NUMROWS(MYSQL_QUERY( "SELECT * FROM booking WHERE resort=1 AND arrival_date=NOW() + INTERVAL 1 DAY"));
      if ($morgen==0):
      echo "<td style=\"width:735\"><span style=\"font-weight:bold\"></span></td>\n";
      elseif ($morgen==1):
      echo "<td style=\"width:735\"><a href=\"tomorrow.php\">$morgen arrival tomorrow!</a></span></td>\n";
      elseif ($morgen > 1):
      echo "<td style=\"width:735\"><a href=\"tomorrow.php\">$morgen arrivals tomorrow!</a></span></td>\n";
      endif;
      if ($tom==0 and $morgen==1):
      mail($empfaenger, "1 Arrival tomorrow!", "laber laber laber", "From: $absender\n");
      $sql = "update booking set tom='1' WHERE resort='1' AND arrival_date=NOW() + INTERVAL 1 DAY AND tom='0'";
      $res = mysql_query($sql) or die(mysql_error());
      elseif ($tom==0 and $morgen>1):
      mail($empfaenger, "Arrivals tomorrow !", "laber laber laber", "From: $absender\n");
      $sql = "update booking set tom='1' WHERE resort='1' AND arrival_date=NOW() + INTERVAL 1 DAY AND tom='0'";
      $res = mysql_query($sql) or die(mysql_error());
      endif;
      $tom ist das Datenbankfeld, dass standardmässig 0 hat

    und obwohl $tom ordentlich upgedatet wurde und nun eine 1 hat, geht die laber laber email immer wieder raus.

    Bitte helft nem Exilschwaben...............

  • #2
    PHP-Code:
    $result=MYSQL_QUERY"SELECT * FROM booking WHERE resort=1 AND arrival_date=NOW() + INTERVAL 1 DAY");
    $morgen=MYSQL_NUMROWS($result);
    $tom=0;
    if (
    $morgen>0)
    {
      
    $dummy=mysql_fetch_assoc($result);
      
    $tom=$dummy['tom'];

    du musst den wert in spalte tom auch auslesen!
    Zuletzt geändert von mrhappiness; 03.06.2003, 22:35.
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      ...sorry brauch noch nen Augenblick. Schau mir grade die Zeichnung auf der Rückseite an..............*vollaufdemschlauchsteh*

      Ich lese doch $tom aus. Wie kann es sein dass das

      if ($tom==0 and $morgen==1): einfach ignoriert wird? ($tom war früher mal $tomorrow, dachte aber, dass das vielleicht geschützt sein könnte - daher tom)
      Zuletzt geändert von VolkerTF; 03.06.2003, 22:33.

      Kommentar


      • #4
        Original geschrieben von VolkerTF
        Ich lese doch $tom aus.
        tust du nicht
        du machst nur eine abfrage und zählst die anzahl der datensätze die zu zurückbekommst
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #5
          $query = "SELECT today,tom FROM booking WHERE resort='1' AND arrival_date=NOW() ORDER BY arrival_time";

          Das steht über dem ganzen mit ein paar Feldern mehr. Wollte ich aufgrund der Menge, die ich gepostet habe nur nicht auch noch posten!

          ....so ein bisschen von nichts ne Ahnung, aber La Paloma pfeifen..... Das bin ich grade!
          Zuletzt geändert von VolkerTF; 03.06.2003, 22:43.

          Kommentar


          • #6
            axo

            kurze verständnisfrage: wenn du die spalte tom für morgen auf 1 setzt is das doch summa summarum übermorgen oder?

            auf jeden fall setzt du tom auf 1, für now() + interval 1 day und liest es aber aus für now(), also einen tag vorher (den du ja nich updatest)
            Ich denke, also bin ich. - Einige sind trotzdem...

            Kommentar


            • #7
              tom ist nur ein kontrollfeld für die email. Standardmässig immer 0! Geht dann die mail raus, wird sie durch 1 ersetzt. Jetzt sollte die automatische mail (beim Aufruf der Seite) nicht mehr rausgehen, weil sie ja schon weg ist.

              Kommentar


              • #8
                und=

                ich denke immer noch, dass du ein anderes tom ausliest (WHERE arrival_date=NOW() ) als du updatest (WHERE arrival_date=NOW() + INTERVAL 1 DAY )
                Ich denke, also bin ich. - Einige sind trotzdem...

                Kommentar


                • #9
                  will mich ja nicht einmischen, aber "konflikt im datumsformat" ???

                  PHP-Code:
                  $datum=date('Y.m.d');
                  $heute=MYSQL_NUMROWS(MYSQL_QUERY"SELECT * FROM booking WHERE resort=1 AND arrival_date='$datum'"));

                  $morgen=MYSQL_NUMROWS(MYSQL_QUERY"SELECT * FROM booking WHERE resort=1 AND arrival_date=NOW() + INTERVAL 1 DAY")); 
                  Kissolino.com

                  Kommentar


                  • #10
                    Naja, aber tom gibt es nur einmal. Und ich habe mit Spieldatensätzen schon kontrolliert, dass tom ne 1 bekommen hat. Händig wieder auf 0 gesetzt usw. Das Update wird ordentlich gemacht. Das macht mich ja so stutzig.

                    Eigentlich dürfte doch die mail nur raus, wenn tom==0 ist! Wie geht denn sowas?

                    Kommentar


                    • #11
                      Jedes Datum (um nicht "alle Daten" zu schreiben), steht im Format YYYY.MM.DD in der Datenbank. Und das Update macht er doch auch aufgrund der selben Anweisung. Oder steh ich da auch mit der Keule vor der Tür?

                      Kommentar


                      • #12
                        bei
                        Code:
                        update booking 
                        set tom='1' 
                        WHERE resort='1' AND arrival_date=NOW() + INTERVAL 1 DAY AND tom='0'
                        und
                        Code:
                        SELECT today,tom 
                        FROM booking 
                        WHERE resort='1' AND arrival_date=NOW() 
                        ORDER BY arrival_time
                        handelt es sich doch nicht um ein und denselben datensatz, da du unterschiedliche where-bedingungen hast oder?
                        Ich denke, also bin ich. - Einige sind trotzdem...

                        Kommentar


                        • #13
                          Doch, ist der selbe Datensatz. Hab das Dingens mal online gestellt: www.proarcoiris.com/today.php

                          Oben gibts die zwei Meldungen, die in meinem Posting sichtbar sind!

                          Kommentar


                          • #14
                            mach das bitte mal:
                            PHP-Code:
                            echo '---<br />';
                            $result=mysql_query("SELECT today,tom 
                            FROM booking 
                            WHERE resort='1' AND arrival_date=NOW()
                            ORDER BY arrival_time"
                            );
                            while (
                            $row=mysql_fetch_assoc($result))
                              
                            print_r($row);
                            echo 
                            '---<br />';
                            $result=mysql_query("SELECT today,tom 
                            FROM booking 
                            WHERE resort='1' AND arrival_date=NOW() + INTERVAL 1 DAY
                            ORDER BY arrival_time"
                            );
                            while (
                            $row=mysql_fetch_assoc($result))
                              
                            print_r($row);
                            echo 
                            '---<br />'
                            Ich denke, also bin ich. - Einige sind trotzdem...

                            Kommentar


                            • #15
                              Ergebnis unter www.proarcoiris.com/test.php

                              Cut and paste...

                              Kommentar

                              Lädt...
                              X