automatische Löschfunktion

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

  • automatische Löschfunktion

    Ich würde gern bei jedem Aufruf der Startseite automatisch alle Einträge die älter sind als 14 Tage löschen lassen. Weis allerdings nicht wie ich das mit mysqli in php8 umsetzen soll.
    früher sah das ja mal so aus:
    PHP-Code:
    $sql "DELETE FROM jobdirectory WHERE datum < ".(time() - 60*60*24*14
    das hätte ich jetzt gern hier:
    PHP-Code:
    <?php
    $ret
    =mysqli_query($con,"select * from jobdirectory where (ID like '%$sdata%'|| Titel like '%$sdata%'|| Beschreibung like '%$sdata%'|| datum like '%$sdata%') and (Status=1) order by id desc limit 99 ");
    $num=mysqli_num_rows($ret);
    if(
    $num>0){
    $cnt=1;
    while (
    $row=mysqli_fetch_array($ret)) {
    ?>
          <div class="col-lg-4 col-md-6 mb-4">
            <div class="card h-100">
              <div class="card-body">
                <h4 class="card-title" align="center"><a href="job-details.php?nid=<?php echo htmlentities($row['ID'])?>"><?php  echo $row['Titel'];?></a></h4>
              </div>
            </div>

          </div>
        <?php } }?>
    mit eingebunden.
    Wie kan ich das am besten umsetzen und ist es überhaupt eine effiziente Möglichkeit?

    Danke schon mal im vorraus

  • #2
    früher sah das ja mal so aus
    Das sieht heute nicht anders aus, musst du nur noch per mysqli_query an die Datenbank senden.

    Kommentar


    • #3
      Also ich habe das jetzt so gemacht:
      PHP-Code:
      $sql=mysqli_query($con,"DELETE FROM jobdirectory WHERE datum < '".(time() - 60*60*24*14)."'"); 
      allerdings funktioniert das löschen nicht, aber es gibt auch keine Fehlermeldung aus.

      Kommentar


      • #4
        aber es gibt auch keine Fehlermeldung aus.
        Weil du einen Fehler auch nicht überprüfst.
        PHP-Code:
        mysqli_query($con,"DELETE FROM jobdirectory WHERE datum < '".(time() - 60*60*24*14)."'")
              or die (
        "MySQL-Error: " mysqli_error($con)); 

        Kommentar


        • #5
          also da bleibt die Seite komplett weis es wird kein Fehler ausgegeben. jetzt hab ich mal noch andere Varianten probiert wie diese:

          PHP-Code:
          if (!mysqli_query($con,"DELETE FROM jobdirectory WHERE datum < '".(time() - 60*60*24*14)."'")) {
            echo(
          "Error MySql: " $mysqli -> error);
          }
          ​ 
          und dies:
          PHP-Code:
             mysqli_query($con"DELETE FROM jobdirectory WHERE datum < '".(time() - 60*60*24*14)."'");

             
          //Error
             
          $error mysqli_error($con);
             print(
          "Error Occurred: ".$error);​ 
          alles brachte keine Meldung die Seite bleibt einfach weis. Und funktion bleibt auch aus.

          Kommentar


          • #6
            Weisse Seite => Error.log anschauen oder error_reporting aufdrehen.

            Was für ein Datentyp ist datum?

            PHP-Code:
            $ret=mysqli_query($con,"select * from jobdirectory where (ID like '%$sdata%'|| Titel like '%$sdata%'|| Beschreibung like '%$sdata%'|| datum like '%$sdata%') and (Status=1) order by id desc limit 99 ");​ 
            Was du da machst ist brandgefährlich. Lies mal nach was eine SQL-Injection ist. Nütze Prepared Statements.

            Kommentar


            • #7
              Also error reporting ist geschaltet auch ohne Ergebnis und error log auch nicht.

              Datentyp von Datum ist Timestamp

              SQL Injektion schau ich mir nochmal an muss mich da erst reinfuchsen

              Kommentar


              • #8
                PHP-Code:
                $ret=mysqli_query($con,"select * from jobdirectory where (ID like '%$sdata%'|| Titel like '%$sdata%'|| Beschreibung like '%$sdata%'|| datum like '%$sdata%') and (Status=1) order by id desc limit 99 ");​ 
                Was du da machst ist brandgefährlich. Lies mal nach was eine SQL-Injection ist. Nütze Prepared Statements.[/QUOTE]

                ist das besser?
                PHP-Code:
                $abfrage $db->query('SELECT * FROM jobdirectory where Status=1 ORDER BY id DESC LIMIT '.$Versatz.', '.$DatensaetzeSeite.'');
                while(
                $row $abfrage->fetch(PDO::FETCH_ASSOC))
                {
                   
                $ID $row['ID'];
                   
                $Titel $row['Titel'];
                   
                $Beschreibung $row['Beschreibung'];
                   
                $datum $row['datum'];​ 

                Kommentar


                • #9
                  Das ist nicht dasselbe aber ja, das wäre nicht gefährlich.

                  Kommentar


                  • #10
                    Bleibt halt nur noch die Lösung für meine automatische Löschfunktion.
                    PHP-Code:
                    if (!mysqli_query($con,"DELETE FROM jobdirectory WHERE datum < '".(time() - 60*60*24*14)."'")) {
                      echo(
                    "Error MySql: " $mysqli -> error);
                    }
                    ​ 
                    Wie könnte ich das jetzt noch hinbekommen?

                    Kommentar


                    • #11
                      Schau mal in die Datenbank was in Deinem Timestamp-Feld drinsteht. Nicht das was du erwartest.

                      Kommentar


                      • #12
                        Also da steht das Datum so
                        2022-11-28 11:31:17​ das heißt mein Code kann so nicht passen. Das ist mir bisl zu hoch.

                        Kommentar


                        • #13
                          DELETE FROM jobdirectory WHERE datum <​ DATE_SUB(now(), INTERVAL 14 DAY);

                          Kommentar


                          • #14
                            ich habe das jetzt so verarbeitet:
                            PHP-Code:
                            mysqli_query($con"DELETE FROM jobdirectory WHERE datum <​ DATE_SUB(now(), INTERVAL 14 DAY)");
                            //Error
                            $error mysqli_error($con);
                            print(
                            "Error Occurred: ".$error);​ 
                            Es gibt weder Fehlermeldung noch funktion

                            Kommentar


                            • #15
                              Tja, was soll man sagen? Da du immer nur Bruchteile des Scriptes gepostet hast und keiner sehen kann, wo du das eingebaut hast, wird dir auch niemand helfen können, also musst du dir zuerst mal selber helfen:

                              Richtig debuggen
                              1. Man bemerkt, dass ein Skript nicht das tut, was es soll.
                              2. Man schreibt an den Anfang des Scriptes die Zeile: error_reporting(-1);
                              3. Man verwendet ini_set('display_errors', true); damit die Fehler auch angezeigt werden.
                              4. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
                              5. An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde. Wichtig bei MySQL Fehlern (...not a valid MySQL result resource...): mysqli_error() verwenden oder Abfrage ausgeben und zb mit phpmyadmin testen.
                              6. Schritt 5 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
                              7. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
                              8. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
                              9. Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.​
                              Zuletzt geändert von scatello; 14.01.2023, 16:15.

                              Kommentar

                              Lädt...
                              X