Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Datetime between php Variable

Mitglied: 65999

65999 (Level 1)

21.01.2012, aktualisiert 09.11.2016, 5537 Aufrufe, 8 Kommentare, 1 Danke

Ich habe ein Problem mit einer sql Abfrage und komme nicht weiter:

01.
  
02.
$LetzteWoche = date("Y-m-d", time()-(7*24*60*60)); 
03.
$Gestern = date("Y-m-d", time()-(24*60*60)); 
04.
 
05.
$LetzteWocheUhr = "00:00:01"
06.
$GesternUhr = "23:59:59"
07.
 
08.
$LetzteWoche = $LetzteWoche.$LetzteWocheUhr
09.
$Gestern = $Gestern.$GesternUhr
10.
 
11.
$sql = "SELECT * FROM orders WHERE order_date BETWEEN '$LetzteWoche' AND $Gestern"
12.
while($row = mysql_fetch_object($sql)) 
13.
14.
   echo $row->order_date; 
15.
16.
 
Die mysql DB hat bei order_date das Format datetime. Dies lässt sich leider auch nicht ändern.

Ich bekomme stets die Fehlermeldung:
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in
Mitglied: hartmann
21.01.2012, aktualisiert 24.11.2016
hi,
das Mysql Datetime Format ist doch im Format 'Y-m-d H:i:s'. Im Code wird nur das Datum und Uhrzeit zusammengesetzt aber ohne dem Leerzeichen dazwischen.
Versuch mal das Datetime mit leerzeichen zusammenzusetzen, z.B.:

01.
  
02.
$LetzteWoche = $LetzteWoche.' '.$LetzteWocheUhr;  
03.
$Gestern = $Gestern.' '.$GesternUhr; 
Vielleicht klappts.

Gruß Hartmann
Bitte warten ..
Mitglied: 65999
21.01.2012, aktualisiert 09.11.2016
Danke für deine Antwort. Stimmt, dies ist ein Fehler.

Vielen Dank.
Bitte warten ..
Mitglied: Biber
21.01.2012, aktualisiert 14.11.2016
Moin,

die WHERE-Clause hat noch Potentiale, auch nachdem du den Formatfehler behoben hast.

Jetzt:
  .... WHERE order_date BETWEEN '$LetzteWoche' AND $Gestern"; 
Besser:
 ..... WHERE order_date BETWEEN '$LetzteWoche' AND '$Gestern'";  
Wobei ich mir ohnehin das ganze Rumgeeiere mit $Gestern und $LetzteWoche ersparen würde
... WHERE DATEDIFF(order_date, Now()) BETWEEN -7 AND -1
-oder-
... WHERE DATEDIFF(Now(), order_date) BETWEEN 1 AND 7
...und deine Variablen kannst du dann für schlechte Zeiten aufheben.

Grüße
Biber
Bitte warten ..
Mitglied: Arano
22.01.2012 um 03:21 Uhr
Moin moin,

Und damit alles noch funktioniert, schiebst du ein fehlendes mysql_query() zwischen dein Statement und der while-Schleife
01.
// ... 
02.
$sql = "SELECT * FROM orders WHERE DATEDIFF(order_date, Now()) BETWEEN -7 AND -1";  
03.
$res = mysql_query($sql); 
04.
if( !is_resource($res) ) 
05.
06.
    // fange fehler ab 
07.
08.
while($row = mysql_fetch_object($res))  
09.
// ...
PHP-Manual - mysql_query()

Das passt dann jedenfalls zur Fehlermeldung ;)


~Arano
Bitte warten ..
Mitglied: Biber
22.01.2012 um 11:58 Uhr
Moin Arano,

Zitat von Arano:
Und damit alles noch funktioniert, schiebst du ein fehlendes mysql_query() zwischen dein Statement und der while-Schleife
*lach*
Das Offensichtliche wird ja viel zu oft übersehen.
Das passt dann jedenfalls zur Fehlermeldung ;)
Und auch den Text der Fehlermeldung habe ich (allerdings auch alle anderen in diesem Beitrag) geflissentlich ignoriert.

Schönen Sonntag
Biber
Bitte warten ..
Mitglied: 65999
22.01.2012 um 12:05 Uhr
Hi, danke ... Mit eurer Hilfe hat es nun funktioniert.

Vg
Bitte warten ..
Mitglied: Biber
22.01.2012, aktualisiert 14.11.2016
Moin,

auch wenn der Hauptfehler ein ganz anderer war als vermutet, noch ein kleiner Tipp zum Überprüfen von zusammengestoppelten Statements.
In der Entwicklungsphase kannst du immer mal schnell 2 Debug-Zeilen einbauen.
01.
$LetzteWoche = date("Y-m-d", time()-(7*24*60*60)); 
02.
$Gestern = date("Y-m-d", time()-(24*60*60)); 
03.
 
04.
$LetzteWocheUhr = "00:00:01"
05.
$GesternUhr = "23:59:59"
06.
 
07.
$LetzteWoche = $LetzteWoche.$LetzteWocheUhr
08.
$Gestern = $Gestern.$GesternUhr
09.
 
10.
$sql = "SELECT * FROM orders WHERE order_date BETWEEN '$LetzteWoche' AND $Gestern"
11.
// die nächsten 2 Zeilen just for debug 
12.
echo "{$sql}\n"
13.
mysql_query($sql) or die(mysql_error()); 
14.
 
15.
// hier wieder die normaleVerarbeitung 
16.
$res = mysql_query($sql); 
17.
...
Dann hast du sowohl den Statement-Text und im Fehlerfall auch den Fehlercode.

Grüße
Biber
Bitte warten ..
Mitglied: Frank
26.01.2012, aktualisiert um 00:39 Uhr
Hi,

noch eine kleine Ergänzung für die Nachwelt: Um die SQL Abfrage noch flexibler zu gestalten, kannst Du auch Dein "between" stehen lassen und mit SUBDATE arbeiten. Das hat den kleinen Vorteil das es, anders als mit DATEDIFF auch mit anderen Einheiten als "Tage" arbeitet (z.B. HOUR, WEEK, MONTH etc). Aus meiner Sicht ist das "datetime" Format, das beste Format um mit Zeiteinheiten in jeder Art zu rechnen. Also keine Angst vor "datetime" Werten!

01.
$sql = "SELECT * FROM orders WHERE order_date BETWEEN SUBDATE(NOW(),INTERVAL 8 DAY) AND SUBDATE(NOW(),INTERVAL 1 DAY))";
Siehe dazu auch: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#fun ...

Gruß
Frank
Bitte warten ..
Ähnliche Inhalte
PHP

PHP - Variable in anderes PHP-Skript mitgeben

gelöst Frage von Jens4everPHP3 Kommentare

Hi zusammen, könnt ihr mir kurz helfen? Ich habe folgendes vor: Ich möchte, dass beim Aufruf von "check1.php" eine ...

JavaScript

Übergabe einer php-Variable an JS

Frage von Rabauke84JavaScript

Hallo zusammen, ich hab eine Problem mit einer Übergabe einer Variable in php an JS. Dazu hab ich ein ...

PHP

MySQL in PHP mit Variablen

gelöst Frage von carl7nPHP10 Kommentare

Hallo, ich habe PHP-Grundkenntnisse, schaffe es aber nicht, nach meinen Vorstellungen ein paar kleine PHP-Scripts zusammen arbeiten zu lassen. ...

PHP

JavaScript Variable an PHP per AJAX?

gelöst Frage von BuddersPHP6 Kommentare

Guten Morgen liebe Administratoren. Ich habe mal eine Frage bezüglich PHP, Javascript und den dementsprechenden Variablen. Unzwar habe ich ...

Neue Wissensbeiträge
Vmware
VMware Update für den ESXi 5.5 verfügbar
Information von sabines vor 53 MinutenVmware

Nach dem ganzen Hickhack um Update mit Microcode Anpassungen und Rückzug, gibt es nun für den ESXi 5.5 ein ...

CPU, RAM, Mainboards

Meltdown und Spectre: Intel zieht Microcode-Updates für Prozessoren zurück

Information von keine-ahnung vor 4 StundenCPU, RAM, Mainboards3 Kommentare

Moin, extrem lutztig. Nur gut, dass ich noch nicht beim Probanden-Bingo mitgemacht habe :-) LG, Thomas

Router & Routing
PfSense als Addon auf QNAP
Information von magicteddy vor 18 StundenRouter & Routing3 Kommentare

Moin, für Spielereien eine ganz nette Idee aber ich fürchte das soetwas auch als echte Firewall genutzt wird: In ...

Datenschutz

Teamviewer kommt für IoT-Geräte wie den Raspberry Pi

Information von magicteddy vor 1 TagDatenschutz1 Kommentar

Moin, jetzt werden IoT Geräte endgültig zur Wanze? Anscheinend kann man auf einem Dashboard seine Geräte visualisieren Ich stelle ...

Heiß diskutierte Inhalte
Netzwerkmanagement
Preis für Wartungsvertrag ok?
gelöst Frage von a-za-zNetzwerkmanagement26 Kommentare

Hallo! Mal ne Frage, weil ich mich mit dem akzeptablen Preis für einen Reaktionszeitvertrag nicht auskenne. Meine Firma hat ...

Windows Server
TEMP-Profile
gelöst Frage von Forseti2003Windows Server21 Kommentare

Guten Morgen, wer kennt sie nicht, die lieben Temporären Benutzerprofile, vorallem immer dann, wenn man sie am wenigsten braucht. ...

Multimedia & Zubehör
Welches Tablet für die Verkäufer?
Frage von Hendrik2586Multimedia & Zubehör15 Kommentare

Guten Morgen meine Lieben, vielleicht könnt ihr mir ja helfen. Es geht um unsere Außendienstmitarbeiter /Verkäufer. Sie sollen demnächst ...

Windows Netzwerk
Ist ein Portforwarding auf einen PC ohne lauschendes Programm ein (großes) Sicherheitsproblem?
Frage von PluwimWindows Netzwerk13 Kommentare

Hallo zusammen, zur Fernwartung eines Rechners an einem anderen Ort nutze ich VNC. Da dieser Rechner einfach nur eine ...