-
13.01.12 09:26 #1
- Registriert seit
- Mar 2009
- Beiträge
- 71
Guten Morgen,
ich mal wieder... und gleich zu Anfangs mit meinem üblichen Titelproblem. Sollte jemand eine Idee für einen aufschlussreicheren Titel haben, editiere ich ihn gerne!
Aber nun zu meinem Problem:
Ich habe in einer Datenbanktabelle ein Feld, wo das Datum mittels "datetime" abgespeichert wird. Somit habe ich Datensätze mit dem Inhalt NULL oder Datumsangaben im Format von "2004-10-21 19:40:28".
Nun möchte ich alle Datensätze auslesen, bei denen das Datum älter als eine Woche ist. Möglich muss es schon sein, oder? Aber ich habe leider absolut keine Idee wie man das am besten macht, vor allem, weil das ja alles in den WHERE-Bereich der Abrage muss - da kann ich auch keinen zeilenlangen Code hinein quetschen?
Ich dachte mir am ehesten mal generell ein Timestamp zu erzeugen, das eine Woche alt ist (also aktuelles Timestamp minus einer Woche). Damit ich mal einen Anhaltspunkt habe. Und dann müsste ich in der Where-Abfrage das Datum mittels strtotime(); in ein Timestamp umwandeln und dann schauen, welches Timestamp in der Datenbank kleiner gleich mein zuvor generiertes Timestamp ist...? Aber das kann ich nicht alles in den WHERE-Bereich packen, oder? Irgendwie erschließt sich mir das nicht ganz... vor allem: Kann ich im WHERE-Bereich überhaupt das datetime in ein Timestamp umwandeln und dann mit dem Timestamp Wert weiter machen?
Vielleicht kann jemand ein Stichwort oder eine andere Hilfestellung eben in den Raum werfen, an der ich weiter knabbern kann? Wäre wirklich dankbar!
Liebe Grüße
-
13.01.12 09:49 #2Code sql:
1 2 3
SELECT * FROM `table` WHERE `datefield` < DATE_SUB(NOW() , INTERVAL 7 DAY)
Könnte funktionieren, habs nicht getestet.Die Schweine von heute sind unsere Schnitzel von morgen!
-
13.01.12 10:40 #3
- Registriert seit
- Mar 2009
- Beiträge
- 71
Hmmm... irgendetwas streikt. Es fragt sich nur was. Eine Fehlermeldung habe ich leider nicht, nur eine weiße Seite. Hab es mit
versucht, aber trotzdem keine Meldung.PHP-Code:error_reporting(E_ALL);
ini_set('display_errors', 1);
Hier der Code - wenn, dann muss hier der Hund begraben sein, denn der Rest wurde nicht verändert:
PHP-Code:$sql="SELECT
k.id,
i.datefield
FROM
tbl1 AS i,
tbl2 AS k LEFT JOIN tbl3 AS b ON k.id = b.id
WHERE datefield < DATE_SUB(NOW() , INTERVAL 7 DAY)
AND
b.id IS NULL
ORDER BY datefield ASC";
-
13.01.12 10:42 #4
ERstens:
zweitens:PHP-Code:
mysql_query($sql) or die (mysql_error());
heist dein Feld auch "datefield" das habe ich in meinem Beitrag nur so genannt weil ich deine Tabellenstruktur nicht kenne.Die Schweine von heute sind unsere Schnitzel von morgen!
-
13.01.12 11:00 #5
- Registriert seit
- Mar 2009
- Beiträge
- 71
Den Feldnamen hab ich im Script angepasst und nur hier wieder geändert - fürs schnellere Verständnis, hab ich deinen Namen dann wieder übernommen.
Aber nach einem erneuten Versuch bekomme ich jetzt eine Meldung, allerdings keine PHP Fehlermeldung, sondern:
Code :1 2 3 4 5 6 7
Internal Server Error The server encountered an internal error or misconfiguration and was unable to complete your request. Please contact the server administrator, [no address given] and inform them of the time the error occurred, and anything you might have done that may have caused the error. More information about this error may be available in the server error log.
Interpretiere ich das richtig, wenn ich sage, dass das Script wohl funktioniert, aber der Server es nicht gebacken kriegt? Sprich, die Abfrage "zu groß" ist?
-
13.01.12 11:04 #6
Schau doch mal ins ErrorLog deines Apachen.
Irgendwo hast in PHP nen Fehler mit drinne.
Zeig doch mal den kompletten Abschnitt wo du die Abfrage ausführst und die entsprechende Schleife dazu.Die Schweine von heute sind unsere Schnitzel von morgen!
-
13.01.12 11:13 #7
- Registriert seit
- Mar 2009
- Beiträge
- 71
Ich glaube nicht, dass ich den ErrorLog einsehen kann? :/
Okay, hier der komplette Abschnitt:
PHP-Code:// Liest die Kunden aus, die in der Tabelle orders nicht vorkommen
$sql="SELECT
k.customers_id,
k.customers_firstname,
k.customers_lastname,
k.customers_gender,
k.customers_email_address,
k.customers_date_added,
i.customers_info_date_of_last_logon
FROM customers_info AS i,
customers AS k LEFT JOIN orders AS b ON k.customers_id = b.customers_id
WHERE customers_info_date_of_last_logon < DATE_SUB(NOW() , INTERVAL 7 DAY)
AND
b.customers_id IS NULL
ORDER BY customers_info_date_of_last_logon ASC";
$res = mysql_db_query($mysqldb, $sql, $mysql);
while ($row = mysql_fetch_assoc($res)) {
$customers_id = $row['customers_id'];
$customers_firstname = $row['customers_firstname'];
$customers_lastname = $row['customers_lastname'];
$customers_gender = $row['customers_gender'];
$customers_email_address = $row['customers_email_address'];
$customers_date_added = $row['customers_date_added'];
//Prüft das Geschlecht
if($customers_gender == "m")
{
$customers_gender = "Herr";
}
elseif($customers_gender == "f")
{
$customers_gender = "Frau";
}
//Schaut, ob Sachen im Warenkorb sind
$anzahl_sql = mysql_db_query("$mysqldb", "SELECT * FROM customers_basket WHERE customers_id = '$customers_id'");
$anzahl = mysql_num_rows($anzahl_sql);
if($anzahl != '0')
{ $wako = "JA"; }
else { $wako = "Nein"; }
include("kundenliste.html");
}
-
13.01.12 11:21 #8Und lass dir bitte wenn der Query nicht funktioniert die Fehlermeldung dazu ausgeben:PHP-Code:
mysql_db_query("$mysqldb")
// müsste das nicht so aussehen?
mysql_db_query($mysql_db)
PHP-Code:$res = mysql_db_query($mysqldb, $sql, $mysql) or die("Error:\r Query: ".$sql."\r\r Error-Message: " mysql_error());
Die Schweine von heute sind unsere Schnitzel von morgen!
-
13.01.12 11:27 #9
- Registriert seit
- Mar 2009
- Beiträge
- 71
Vielen Dank!
Die Meldung kommt nun nicht mehr - bin aber wieder bei der weißen, leeren Seite - trotz mysql_error ()); und error_reporting(E_ALL); sowie ini_set('display_errors', 1);
-
13.01.12 11:36 #10
- Registriert seit
- May 2006
- Ort
- There is no place like 127.0.0.1
- Beiträge
- 3.521
Dann hast du einen syntaktischen Fehler wahrscheinlich sehr direkt am Anfang der Datei.
Entweder, du postet die komplette Datei oder kommst irgendwie an die Server-Logs ran.Grüße
--
Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)
-
13.01.12 11:41 #11
- Registriert seit
- Mar 2009
- Beiträge
- 71
Die komplette Datei:
PHP-Code:<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// Datenbankverbindung herstellen
include ('../../includes/configure.php');
$mysqlhost = DB_SERVER;
$mysqluser = DB_SERVER_USERNAME;
$mysqlpassword = DB_SERVER_PASSWORD;
$mysqldb = DB_DATABASE;
$mysql = mysql_connect($mysqlhost, $mysqluser, $mysqlpassword);
$selectdb = mysql_select_db($mysqldb);
if(!$mysql) {
echo("Keine Verbindung zum MySQL-Server möglich<br/ >".mysql_error());
}
if(!$mysqldb) {
echo("Konnte Datenbank nicht Auswählen<br />".mysql_error());
}
$aktuelles_jahr = date("y");
$aktuelles_monat = date("m");
$timestamp = strtotime("-1 months");
$letzter_monat = date("y-m", $timestamp);
//Header
include("kundenliste_head.html");
// Liest die Kunden aus, die in der Tabelle orders nicht vorkommen
$sql="SELECT k.customers_id, k.customers_firstname, k.customers_lastname, k.customers_gender, k.customers_email_address, k.customers_date_added, i.customers_info_date_of_last_logon FROM customers_info AS i, customers AS k LEFT JOIN orders AS b ON k.customers_id = b.customers_id WHERE customers_info_date_of_last_logon < DATE_SUB(NOW() , INTERVAL 7 DAY) AND b.customers_id IS NULL ORDER BY customers_info_date_of_last_logon ASC";
$res = mysql_db_query($mysqldb, $sql, $mysql) or die("Error:\r Query: ".$sql."\r\r Error-Message: " mysql_error());
while ($row = mysql_fetch_assoc($res)) {
$customers_id = $row['customers_id'];
$customers_firstname = $row['customers_firstname'];
$customers_lastname = $row['customers_lastname'];
$customers_gender = $row['customers_gender'];
$customers_email_address = $row['customers_email_address'];
$customers_date_added = $row['customers_date_added'];
//Prüft das Geschlecht
if($customers_gender == "m")
{
$customers_gender = "Herr";
}
elseif($customers_gender == "f")
{
$customers_gender = "Frau";
}
//Schaut, ob Sachen im Warenkorb sind
$anzahl_sql = mysql_db_query($mysqldb, "SELECT * FROM customers_basket WHERE customers_id = '$customers_id'");
$anzahl = mysql_num_rows($anzahl_sql);
if($anzahl != '0')
{ $wako = "JA"; }
else { $wako = "Nein"; }
include("kundenliste.html");
}
//Footer
include("liste_bearbeitet_foot.html");
mysql_close($mysql);
?>
-
13.01.12 11:46 #12
Verwende mal anstatt
dieses:PHP-Code:mysql_db_query()
mysql_db_query()PHP-Code:mysql_query()
Ist seit der Version 5.3 deprecated.Die Schweine von heute sind unsere Schnitzel von morgen!
-
13.01.12 11:52 #13
- Registriert seit
- Mar 2009
- Beiträge
- 71
Danke für die Info, wusste ich nicht und hab es jetzt geändert - aber nach wie vor keine Reaktion. Es müsste eigentlich an der SQL Abfrage liegen - mit einer anderen Abfrage funktioniert es nämlich tadellos.
Hier die Abfrage, die funktioniert - als Vergleich:
PHP-Code:$sql="SELECT
k.customers_id,
k.customers_firstname,
k.customers_lastname,
k.customers_gender,
k.customers_email_address,
k.customers_date_added
FROM
customers AS k LEFT JOIN orders AS b ON k.customers_id = b.customers_id
WHERE
k.customers_date_added LIKE '2011-12-%'
AND
b.customers_id IS NULL
ORDER BY customers_date_added DESC";
-
13.01.12 12:01 #14
- Registriert seit
- May 2006
- Ort
- There is no place like 127.0.0.1
- Beiträge
- 3.521
Tausch mal bitte diese Zeile aus:
Code php:1
$res = mysql_db_query($mysqldb, $sql, $mysql) or die("Error:\r Query: ".$sql."\r\r Error-Message: " mysql_error());
durch das hier:
Code php:1
$res = mysql_query($sql, $mysql) or die("Error: Query: ".$sql."<br/>Error-Message: " . mysql_error($mysql));
Grüße
--
Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)
-
13.01.12 12:07 #15
- Registriert seit
- Mar 2009
- Beiträge
- 71
Dann kommt wieder diese Meldung:
Code :1 2 3 4 5 6 7
Internal Server Error The server encountered an internal error or misconfiguration and was unable to complete your request. Please contact the server administrator, [no address given] and inform them of the time the error occurred, and anything you might have done that may have caused the error. More information about this error may be available in the server error log.
Ähnliche Themen
-
"Optionsformular" nach der Auswahl aktuallisieren ohne "Submitbutton"
Von spikaner im Forum PHPAntworten: 1Letzter Beitrag: 19.10.07, 08:45 -
strpos() ? vor und nach "," auslesen
Von LN5 im Forum PHPAntworten: 3Letzter Beitrag: 05.01.06, 16:17 -
SQL-Abfrage zum "geteilten" export nach Excel
Von rockabillyjimmy im Forum Relationale DatenbanksystemeAntworten: 9Letzter Beitrag: 30.05.05, 13:41 -
Nach Login eine html-Datei mit "readfile" auslesen
Von altox-de im Forum PHPAntworten: 47Letzter Beitrag: 04.04.05, 11:46 -
Nach zB 2 Wochen Datei "X" in Ordner "X" kopiern? Möglich?
Von i-mehl im Forum PHPAntworten: 14Letzter Beitrag: 23.02.04, 09:35



5Danke

Zitieren

Login






[PHP][Snippet] Array zu XML konvertieren