Was ist falsch?

  • Themenstarter Themenstarter baby0101
  • Beginndatum Beginndatum
Debbung sollte das A & O sein :-)

nimm bitte mal diesen Code:
PHP:
include "includes/_config.php";

    $timestamp   = time();
    $time        = date("H:i",$timestamp);
    $date        = date("d.m.Y",$timestamp);
    
    
    $result = mysql_query("SELECT * FROM eingabe") or die(mysql_error());
    // überprüfen ob ein eintrag existiert - wenn nicht, wird der else-teil ausgegeben
    if (mysql_num_rows($result) > 0){
        while ($line = mysql_fetch_array($result)) {

            if($line['datum'] == $date){
                
                $sql = "DELETE FROM eingabe WHERE datum = '".$date."'";
                $result = mysql_query($sql);    
            }        
        }
    }else{
        echo "Es wurde Kein Datensatz gefunden";
    }
    mysql_close();
 
Hat er nicht im ersten Post geschrieben "Ich habe eine tabelle namens datum."?
Sollte die SQL-Anweisung evtl.
SQL:
SELECT * FROM datum
heißen?
 
Zuletzt bearbeitet von einem Moderator:
item: Ich gah mal immer noch davon aus, dass das Feld Datum vom Type Date oder so ist.
item: Datum mit Punklten getrennt erkennt MySQL nicht.
item: Ich poste dir den Link gerne nochmals und wenns sein muss nachher nochmals. http://wiki.yaslaw.info/wikka/PhpMySqlDate
item: Danke fürs Ignorieren eines alten Posts.....
 
Ich glaube Ihr versteht mich überhaupt nicht. Es ist einfacher als ihr denkt. Habe zwar noch nicht die Lösung aber ich weis das es 100 pro ganz simple ist.

Noch mal die Erklärung:

Ich habe eine mysql db namens "ddv"
die Tabelle heist "eingabe" die untergliedert ist nach name vorname usw. mir geht es aber um das Feld "datum"


Mein script soll in die Datenbank reinschauen um sich das datum rauszuholen. Dieses Datum was in der Datenbank steht soll mit dem heutigen Datum vergliechen werden. Wenn es das gleiche Datum ist oder schon ein abgelaufendes soll er den ganzen datensatz der zu diesem Datum eintrag gehört löschen.


Das Feld "datum" in der DB ist vom Type = varchar

Wie Ihr schon von meinem ersten Post wisst habe ich schon ein script geschrieben. Dieses Funktioniert auch gibt mir aber trotzdem die Fehlermeldung aus die ich schon hier geschrieben habe. ich denke das hat mit dem array zu tun aber k.a. bin noch totaler anfanger



mfg
 
Ich habe es soweit hinbekommen das dass aktuelle Datum gelöscht wird.

CODE:
Code:
include "includes/_config.php"; 

    $timestamp   = time(); 
    $time        = date("H:i",$timestamp); 
    $date        = date("d.m.Y",$timestamp); 

mysq_select_db("blabla");

mysql_query("DELETE FROM eingabe WHERE datum='".$date."'");
mysql_close();

jetzt will ich aber auch das er auch vergangene Datum löscht.


Weis einer wie?
 
ich will auch nicht damit rechnen

es soll einfach drin stehen

jetzt will ich aber auch das er auch vergangene Datum löscht.
Wie jetzt? rechnen oder nicht rechnen?

Also, du musst dein String im SQL (oder PHP) in ein Datum wandeln, die Anzahl Tage abzählen und dann zurück in einen String wandeln
STR_TO_DATE()
DATE_ADD() / DATE_SUB()
DATE_FORMAT()

Das sieht im SQL dann etwa so aus
SQL:
.... DATE_FORMAT(DATE_SUB(STR_TO_DATE(datum, '%d/%m/%Y'), INTERVAL 3 DAYS), '%d/%m/%Y')

Oder so etwas
SQL:
WHERE STR_TO_DATE(datum, '%d/%m/%Y')< STR_TO_DATE('selecktioniertes_datum', '%d/%m/%Y')
 
Zuletzt bearbeitet von einem Moderator:
PHP:
<?php
error_reporting(E_ALL);
    include ("includes/_config.php");    
        $result = mysql_query("SELECT * FROM eingabe") or die(mysql_error());
            while ($line = mysql_fetch_array($result)) {
        
        $timestamp    = time();
        $time        = date("H:i",$timestamp);
        $date        = date("d.m.Y",$timestamp);

        if($line[datum] ==($date)){ //Das heisst $line['datum'] mit einfachem Anführungszeichen

            //$timestamp    = time();
            //$date        = date("d.m.Y",$timestamp);
            
            $sql = ("DELETE FROM eingabe WHERE datum = '$date'") or die(mysql_error());
            $result = mysql_query($sql);    
    }        
}
mysql_close();
?>

Setz doch beim Datum den Typus auf INT und lass den Standart Timestamp speichern so kannst du dann mit date() auf den timestamp zugreifen :)

Und wieso gibst du bei der überprüfung nochmals das datum aus o.O
Wenn es um Sekunden geht geht es recht schnell das zum ende hin ein anderer Eintrag dann gelöscht wird :)

Hoffe das deine Meldung nun verschwunden ist

Ach bevor ich es vergesse:

Wenn du doch meinst es sei SO einfach frag ich mich wieso du dann hier danach fragst!
Und da wir auch nicht hellsehen können was dir mysql schreibt solltet du mit mysql_error() immer arbeiten und ein debugging im phpmyadmin mal ausführen hilft ^^

darum != $datum // Damit suchst du alle die mit dem heutigen Datum nichts zutun haben und werden gelöscht ^^
 
Zurück