Löschen alter Einträge funzt net!

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

  • Löschen alter Einträge funzt net!

    Hallo,

    ich habe einen Terminplaner in PHP gebastelt. Nun möchte ich ältere Eintrage löschen und habe dabei Probleme. Denn das Datum und die Zeit sind in einem Zeitstempel in der Datenbank abgespeichert.

    Das Datum der Einträge speichere ich folgender Maßen:
    ------------------------------------------------------------------------------------------------------------------------
    PHP-Code:

    eintrag.php

    <tr>
    <td width="72" height="22"><strong><font face="Verdana" size="2">Uhrzeit:</font></strong></td>
    <td width="195" height="22"> <font face="Verdana">
    <input type="text" name="stunde1" size="1" value="hh" style="border: 1px solid; background-color: #CCCCCC; border-color: black; font-family: Verdana, Arial, Helvetica, sans-serif;">
    <font size="2">:</font>
    <input type="text" name="minute1" size="1" value="mm" style="border: 1px solid; background-color: #CCCCCC; border-color: black; font-family: Verdana, Arial, Helvetica, sans-serif;">
    <font size="2"> </font></font> </td>
    <td width="121" height="22"><font face="Verdana" size="2">Uhrzeit2*:</font></td>
    <td width="185" height="22"> <font face="Verdana">
    <input type="text" name="stunde2" size="1" value="hh" style="border: 1px solid; background-color: #CCCCCC; border-color: black; font-family: Verdana, Arial, Helvetica, sans-serif;">
    </font><font size="2" face="Verdana">:</font><font face="Verdana">
    <input type="text" name="minute2" size="1" value="mm" style="border: 1px solid; background-color: #CCCCCC; border-color: black; font-family: Verdana, Arial, Helvetica, sans-serif;">
    </font><font size="2" face="Verdana">&nbsp; </font> </td>
    </tr>
    <tr>
    <td width="72" height="22"><strong><font face="Verdana" size="2"> Datum:</font></strong></td>
    <td width="195" height="22"> <font face="Verdana">
    <input type="text" name="tag1" size="1" value="tt" style="border: 1px solid; background-color: #CCCCCC; border-color: black; font-family: Verdana, Arial, Helvetica, sans-serif;">
    <font size="2">.</font>
    <input type="text" name="monat1" size="1" value="<? $mm=date( "m", time() ); echo $mm;?>" style="border: 1px solid; background-color: #CCCCCC; border-color: black; font-family: Verdana, Arial, Helvetica, sans-serif;" ?>
    <font size="2" face="Verdana">.</font>
    <input type="text" name="jahr1" size="3" value="<? $yy=date( "Y", time() ); echo $yy;?>" style="border: 1px solid; background-color: #CCCCCC; border-color: black; font-family: Verdana, Arial, Helvetica, sans-serif;" ?>
    <font size="2"></font></font></td>
    <td width="121" height="22"><font face="Verdana" size="2"> Datum2* :</font></td>
    <td width="185" height="22"> <font face="Verdana">
    <input type="text" name="tag2" size="1" value="tt" style="border: 1px solid; background-color: #CCCCCC; border-color: black; font-family: Verdana, Arial, Helvetica, sans-serif;">
    </font><font size="2" face="Verdana">.</font><font face="Verdana">
    <input type="text" name="monat2" size="1" value="<? $mm=date( "m", time() ); echo $mm; ?>" style="border: 1px solid; background-color: #CCCCCC; border-color: black; font-family: Verdana, Arial, Helvetica, sans-serif;" ?>
    </font><font size="2" face="Verdana">&nbsp;</font><font face="Verdana">.
    <input type="text" name="jahr2" size="3" value="<? $yy=date( "Y", time() ); echo $yy;?>" style="border: 1px solid; background-color: #CCCCCC; border-color: black; font-family: Verdana, Arial, Helvetica, sans-serif;" ?>
    </font><font size="2" face="Verdana">&nbsp;</font></td>
    </tr>

    .
    .
    .
    elseif($make!=""){
    $timestamp1=mktime($stunde1, $minute1, 0, $monat1, $tag1, $jahr1);
    if($tag2!="tt"){
    $timestamp2=mktime($stunde2, $minute2, 0, $monat2, $tag2, $jahr2);
    }


    mysql_query("INSERT INTO tabelle(kategorie,time,time2,veranstaltung,kurzbeschreibung,info2,veranstalter,bild1,bild2,eintritt,hinweise,homepage,beschreibung) VALUES ('$auswahl','$timestamp1','$timestamp2','$veranstaltung','$kurzbeschreibung','$info2','$veranstalter','$bild1','$bild2','$eintritt','$hinweise','$homepage','$beschreibung')") or die("Datenbank Fehler bei Insert Into. Bitte den Webmaster benachrichtigen.");
    ------------------------------------------------------------------------------------------------------------------------


    Nun will ich das aktuelle Datum mit dem Datum der Einträge vergleichen. Zur Hilfe habe ich Code aus anderen Threads dieses Forums verwendet.

    ------------------------------------------------------------------------------------------------------------------------
    PHP-Code:
    autodelete.php

    <?php 
    include ("config.inc.php");

    $query "SELECT * FROM tabelle where time='$time' order by time ASC" or die();
    $events mysql_query("$query");
    $event mysql_fetch_array($events);

    $datum date('d m y'); // aktuelles Datum, oder? wie forme ich das um in einen Timestamp
    mysql_query("DELETE FROM tabelle WHERE time < '$datum'") or die ("Fehler: Konnte abgelaufene Einträge nicht löschen!");
    echo 
    "........alte Einträge wurden gelöscht!";

    ?>
    Wie kann ich zwei Zeitstempel miteinander vergleichen, so dass das Skript hinhaut? Wie forme ich ein Datum in einen Zeitstempel? Ich weiss das die beim Eintrag schon gemacht wird. Leider habe ich den Code für die Datumseinträge nicht geschrieben. Ich bin kein PHP Profi. Nichtmal fortgeschritterner.. Also... ein kleiner Anfänger. Bitte sanft mit mir umgehen

    Wäre dankbar für jede Hilfe.

    c-bass
    http://www.4webworking.de
    Das Resourcenarchiv für Webworker

  • #2
    das mir ein wenig zu "übersichtlich" um es zu lesen aber es sei dir gesagt, dass man bei deratigen scripts den feldtyp date bzw. datetime verwenden sollte, weil timestamp felder automatisch auf now() gesetzt werden, wenn du ein update auf einem datensatz machst.
    h.a.n.d.
    Schmalle

    http://impressed.by
    http://blog.schmalenberger.it



    Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
    ... nur ohne :-)

    Kommentar


    • #3
      @schmalle: hast du mehrere TIMESTAMP Felder in der Tabelle,
      wird nur das erste auf now() gesetzt. Die anderen werden
      nicht angefaßt
      TBT

      Die zwei wichtigsten Regeln für eine berufliche Karriere:
      1. Verrate niemals alles was du weißt!


      PHP 2 AllPatrizier II Browsergame

      Kommentar


      • #4
        ich habe 2 timestamps drin. einer für das Anfangsdatum des Events und einer für das Enddatum.

        könnt ihr den fehler genauer erläutern. ich seh nicht ganz durch.

        andere Frage: Wie forme ich nun einen Zeitstempel wieder in das normale Datumsformat um?


        <?php
        include ("config.inc.php");

        $query = "SELECT * FROM tabelle where time='$time' order by time ASC" or die();
        $events = mysql_query("$query");
        $event = mysql_fetch_array($events);

        $datum = date('d m y'); // aktuelles Datum, oder? wie forme ich das um in einen Timestamp
        mysql_query("DELETE FROM tabelle WHERE time < '$datum'") or die ("Fehler: Konnte abgelaufene Einträge nicht löschen!");
        echo "........alte Einträge wurden gelöscht!";

        ?>
        http://www.4webworking.de
        Das Resourcenarchiv für Webworker

        Kommentar


        • #5
          wenn du nicht weißt, wie man mit timestamps arbeitet, warum benutzt du sie dann?

          $datum = date('d.m.Y', $event['time']);
          h.a.n.d.
          Schmalle

          http://impressed.by
          http://blog.schmalenberger.it



          Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
          ... nur ohne :-)

          Kommentar


          • #6
            wollte das nie so machen. hab das script von nem kumpel bekommen. als ich dann ohne zeitstempel arbeiten wollte, hat nichts mehr funktioniert.

            Also so sollte es gehen?

            PHP-Code:


            <?php 
            include ("config.inc.php");

            $query "SELECT * FROM tabelle where time='$time' order by time ASC" or die();
            $events mysql_query("$query");
            $event mysql_fetch_array($events);

            $datum date('d.m.Y'$event['time']);

            mysql_query("DELETE FROM tabelle WHERE time < '$datum'") or die ("Fehler: Konnte abgelaufene Einträge nicht löschen!");
            echo 
            "........alte Einträge wurden gelöscht!";

            ?>
            http://www.4webworking.de
            Das Resourcenarchiv für Webworker

            Kommentar


            • #7
              wie wäre es mit ausprobieren?

              das funkt natürlich nur, wenn die zeitfelder jetzt den typ date oder datetime haben
              h.a.n.d.
              Schmalle

              http://impressed.by
              http://blog.schmalenberger.it



              Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
              ... nur ohne :-)

              Kommentar


              • #8
                aber wirkt sich dass nicht auf das gesamte skript aus, wenn ich die feld ändere. schon gut ich probiers ..
                http://www.4webworking.de
                Das Resourcenarchiv für Webworker

                Kommentar


                • #9
                  ne das geht doch nicht. das feld (integer) in der tabelle ist mit zahlen (bsp: time 1070996400 )
                  belegt aus den dann das datum gebildet wird. wenn ich jetzt das feld in datetime umändere gibt es probleme mit dem format.

                  es muss doch irgendwie möglich sein, zwei sollche felder, also time und time2 miteinander zu vergleichen.
                  http://www.4webworking.de
                  Das Resourcenarchiv für Webworker

                  Kommentar


                  • #10
                    natürlich geht das ! vielleicht sagst du jetzt einfach mal, was du wirklich willst.
                    h.a.n.d.
                    Schmalle

                    http://impressed.by
                    http://blog.schmalenberger.it



                    Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
                    ... nur ohne :-)

                    Kommentar


                    • #11
                      nicht gleich verärgert werden.

                      also ich möchte veraltete einträge aus der eventdatenbank löschen. dazu muss ich das datum des eingetragenen event mit dem aktuellen datum vergleichen. das datum des events ist mit so einem zahlencode im feld "time" im letzten post von mir geschildert.

                      ich weiss jetzt nur nicht wie ich den vergleich machen muss dass dies in hinhaut:

                      PHP-Code:

                      <?php 
                      include ("config.inc.php");

                      $query "SELECT * FROM tabelle where time='$time' order by time ASC" or die();
                      $events mysql_query("$query");
                      $event mysql_fetch_array($events);

                      $datum date('d.m.Y'$event['time']);

                      mysql_query("DELETE FROM tabelleWHERE WHERE time < '$datum'") or die ("Fehler: Konnte abgelaufene Einträge nicht löschen!");
                      echo 
                      "........alte Einträge wurden gelöscht!";

                      ?>
                      http://www.4webworking.de
                      Das Resourcenarchiv für Webworker

                      Kommentar


                      • #12
                        PHP-Code:
                        <?php 
                        include ("config.inc.php");

                        $query "SELECT * FROM tabelle where time='$time' order by time ASC" or die();
                        $events mysql_query("$query");
                        $event mysql_fetch_array($events);

                        $datum time(); // <-- DA GUCKEN 

                        mysql_query("DELETE FROM tabelleWHERE WHERE time < $datum ") or die ("Fehler: Konnte abgelaufene Einträge nicht löschen!");
                        echo 
                        mysql_affected_rows()." alte Einträge wurden gelöscht!";

                        ?>
                        h.a.n.d.
                        Schmalle

                        http://impressed.by
                        http://blog.schmalenberger.it



                        Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
                        ... nur ohne :-)

                        Kommentar


                        • #13
                          das war das gesamte problem.

                          ich danke dir für dein durchhaltevermögen. wenn man wie ich nicht so viel vom coden versteht oder gerade damit anfängt, ist es schwer diese dinge zu beschreiben von denen man keine ahnung hat

                          also habs getestet, und funzt!! Danke!
                          http://www.4webworking.de
                          Das Resourcenarchiv für Webworker

                          Kommentar

                          Lädt...
                          X