SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Webseiten professionell erstellen

Webseiten professionell erstellen zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > MySQLi/PDO/(MySQL)
Hilfe Community Kalender Heutige Beiträge Suchen

MySQLi/PDO/(MySQL) Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQLi/PDO/(MySQL) diskutieren

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 23.04.2005, 11:23:41
klaus-maus klaus-maus ist offline
Anfänger
 
Registriert seit: Aug 2004
Beiträge: 65
Monate selektieren mit date

Hallo,
ich komme mit folgender Abfrage nicht weiter:

$mon_SQL="SELECT geburtstag FROM tbl_geburtstage";
$mon_result=mysql_query($mon_SQL);
while($tx=mysql_fetch_array($mon_result)){
$geb_mon= date("m",$tx['geburtstag']);
echo $geb_mon;

erzeugt nur die Ausgabe "01" für alle Datensätze.

echo $tx['geburtstag']; zeigt das korrekte Datum.

Wo ist der Fehler?
Gruss Klaus
Mit Zitat antworten
  #2  
Alt 23.04.2005, 13:28:38
chris17 chris17 ist offline
Senior Member
 
Registriert seit: Apr 2003
Alter: 57
Beiträge: 1.236
AW: Monate selektieren mit date

Hi,

in welchem Format sind die Geburtstage in der DB gespeichert?

date() erwartet einen timestamp.

Wenn Du die Geburtstage im englischen Datumsformat(MySQL-DATE) vorliegen, kannst Du folgendes probieren -> strtotime():
PHP-Code:
//...
$geb_mondate("m"strtotime($tx['geburtstag']));
//... 
Obacht evtl. mit Geburtstage vor 1970!!! -> http://de2.php.net/manual/de/function.strtotime.php


MySQL-Lösung ('geburstag' muss im MySQL-Date vorliegen YYYY-MM-DD):
PHP-Code:
$sql "SELECT
            DATE_FORMAT(geburtstag, '%m') AS geb_mon
        FROM
            test"
;
            
$res mysql_query($sql) or die(mysql_error());

while (
$row mysql_fetch_array($res)) {
    echo 
$row['geb_mon'].'<br>';

Grüße

Christian
Mit Zitat antworten
  #3  
Alt 24.04.2005, 11:05:39
Benutzerbild von xabbuh
xabbuh xabbuh ist offline
SELFPHP Guru
 
Registriert seit: May 2003
Beiträge: 7.187
AW: Monate selektieren mit date

Die zweite Lösung mit der MySQL-Funktion DATE_FORMAT() dürfte dabei die schnellere sein. Falls du allerdings nicht nur den Monat sondern auch noch weitere Formatierungen des Datums vornehmen möchtest, kannst du das Datum beim Auslesen auch direkt mit der MySQL-Funktion UNIX_TIMESTAMP() in einen UNIX-Timestamp umwandeln, den du dann bequem mit [func]date()[/func] formatieren kannst.
Mit Zitat antworten
  #4  
Alt 24.04.2005, 13:49:33
klaus-maus klaus-maus ist offline
Anfänger
 
Registriert seit: Aug 2004
Beiträge: 65
AW: Monate selektieren mit date

Hi, und danke für die Antwort.
'geburtstag' liegt im date Format vor, also yyyy-mm-tt.
Die Abfrage klappt, ich habe aber noch ein Problem: In einer WHERE Klausel bekomme ich einen Abfrage-Fehler.

$sql_datum="
SELECT
vorname, name,
DATE_FORMAT(geburtstag, '%m') AS geb_mon
FROM test
WHERE geb_mon=04";

(04 ist das Ergebnis von date('m') in $var) um nur die Geburtstage des aktuellen Monats anzuzeigen.)

Gruss Klaus.
Mit Zitat antworten
  #5  
Alt 24.04.2005, 13:52:05
Benutzerbild von xabbuh
xabbuh xabbuh ist offline
SELFPHP Guru
 
Registriert seit: May 2003
Beiträge: 7.187
AW: Monate selektieren mit date

Zitat:
Zitat von klaus-maus
Die Abfrage klappt, ich habe aber noch ein Problem: In einer WHERE Klausel bekomme ich einen Abfrage-Fehler.
Wie sieht denn der Fehler aus?
Mit Zitat antworten
  #6  
Alt 24.04.2005, 13:58:03
chris17 chris17 ist offline
Senior Member
 
Registriert seit: Apr 2003
Alter: 57
Beiträge: 1.236
AW: Monate selektieren mit date

Hi,

in der WHERE-Klausel sind keine Aliase erlaubt.

Eine Möglichkeit:
PHP-Code:
$sql "SELECT
            DATE_FORMAT(geburtstag, '%m') AS geb_mon
        FROM
            test
        WHERE
            MONTH(geburtstag) = 4"

Mit Zitat antworten
  #7  
Alt 24.04.2005, 15:24:50
klaus-maus klaus-maus ist offline
Anfänger
 
Registriert seit: Aug 2004
Beiträge: 65
AW: Monate selektieren mit date

Zitat:
Zitat von xabbuh
Wie sieht denn der Fehler aus?
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource
mit Verweis auf die while-schleife.

Gruss Klaus
Mit Zitat antworten
  #8  
Alt 24.04.2005, 16:08:06
klaus-maus klaus-maus ist offline
Anfänger
 
Registriert seit: Aug 2004
Beiträge: 65
AW: Monate selektieren mit date

Hallo Chris,
vielen Dank, klappt mit MONTH(geburtstag)...
Der Fehler ist auch weg.

Noch eine Nachfrage:
kann ich in der gleichen SQL-Abfrage noch ein weiteres Datumsfeld (verein) mit dem gleichen Alias abfragen und auf die gleiche Weise im Array ausgeben? Oder muss ich eine zweite Abfrage aufbauen bzw. alles in eine tmp-tabelle schreiben, wie in einem anderen Thema diskutiert?

Meine Vorstellung war:
Wir gratulieren im [Monat]
Otto zum xx. Geburtstag
Paul zum ab. Geburtstag
Max zur dc. jährigen Vereinszugehörigkeit
...
Klaus zum hj. Geburtstag

Gruss Klaus
Mit Zitat antworten
  #9  
Alt 24.04.2005, 18:51:11
chris17 chris17 ist offline
Senior Member
 
Registriert seit: Apr 2003
Alter: 57
Beiträge: 1.236
AW: Monate selektieren mit date

Zitat:
Zitat von klaus-maus
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource
mit Verweis auf die while-schleife.

Gruss Klaus
Obacht, Du schickst Dein SQL-Statement "ungeprüft" ab.
Zitat:
Zitat von klaus-maus
$mon_result=mysql_query($mon_SQL);
Tipp, bau während der Entwicklungsphase ein "or die (mysql_error())" mit ein,
Code:
$mon_result=mysql_query($mon_SQL) or die(mysql_error());
dann hättest Du in etwa folgende Fehlermeldung erhalten:
Code:
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE geb_mon = 4' at line 6
Das bringt Dich der Fehlersuche näher.

Zitat:
Noch eine Nachfrage:
kann ich in der gleichen SQL-Abfrage noch ein weiteres Datumsfeld (verein) mit dem gleichen Alias abfragen ...
Hmm, Du willst noch eine weitere Information unter dem gleichen Alias ansprechen? Das wird nicht gehen. Du kannst aber das SQL-Statement erweitern.

Ich werf' Dir mal einen Brocken hin. Hilft Dir das?
Code:
...
(YEAR(NOW()) - YEAR(geburtstag) as differenz_jahre
...
Grüße

Christian
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Wer teilt Root-Server für 2-3 Monate? sinfo PHP Entwicklung und Softwaredesign 2 26.07.2004 23:37:24
Datenausgabe date >= now() geht nicht richtig Blue7 MySQLi/PDO/(MySQL) 6 28.06.2004 19:08:52
Der gleiche Tag 3 Monate später ben-22 PHP Grundlagen 4 18.02.2003 10:02:02
mktime & date Walter PHP für Fortgeschrittene und Experten 1 03.05.2002 19:00:56
MySQL Abfrage der letzten 6 Monate Andy PHP für Fortgeschrittene und Experten 3 18.02.2002 23:05:46


Alle Zeitangaben in WEZ +2. Es ist jetzt 13:26:53 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt