php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2005-2

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 13.10.2005, 10:43  
Gast
 
Beiträge: n/a
Standard Probleme mit mysql-query

Hallo zusammen!

Ich m�chte einen Geburtstagskalender machen.

Man soll (unter anderem) auch einstellen k�nnen, welche Geburtsatage man sehen will, zb alle zwischen 31.08 und 31.12.

Ich hab schon viel rumgesucht, und auch hier bin ich auf Ans�tze gesto�en, aber ich hab's noch nicht ganz geschafft.

Hab bisher zwar eine Abfrage geschafft, aber die ist noch nicht ganz korrekt...
PHP-Code:
<?
$mysql 
"SELECT IDENT, FAMNAME, VORNAME, TITEL2, NAME2A, GEB_DATUM, EMAIL FROM vkstamm
WHERE GEB_DATUM BETWEEN ADDDATE('$datum_anfang', INTERVAL 1 DAY) AND 
ADDDATE('$datum_ende', INTERVAL 1 DAY) ORDER BY GEB_DATUM"
;
?>
--> $datum_anfang und $datum_ende sind w�hlbar
Man muss aber bei dieser Methode immer auch ein Jahr angeben, ich hab also einfach bei anfang das Jahr 1000 und bei ende das aktuelle Jahr angegeben, aber das macht die Abfrage irgendwie sinnlos, da ja alle Geburtstage zwischen diesen Jahrenliegen, und somit auch alle angezeigt werden...

Wie muss ich den query ab�ndern, damit das Jahr egal ist, nach den Monaten und Tagen gesucht wird und somit die Abfrage einen Sinn ergibt ?
(GEB_DATUM ist date YYYY.MM.DD)

Vielen dank im Vorraus f�r jede Antwort!
 
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 13.10.2005, 11:28  
Gast
 
Beiträge: n/a
Standard

Hab noch weiter rumgesucht und hab meinen Code jetzt etwas geändert:
PHP-Code:
<?
$mysql 
"SELECT IDENT, FAMNAME, VORNAME, TITEL2, NAME2A, GEB_DATUM, EMAIL FROM vkstamm 
WHERE GEB_DATUM BETWEEN date('$datum_anfang') 
AND date('$datum_ende') ORDER BY GEB_DATUM"
;
?>
--> ist jetzt besser (übersichtlicher) aber immer noch nicht das was ich suche...

Ich müsste irgendwie sowas wie BETWEEN LIKE einbauen, also sowohl zwischen den Zeiträumen, als auch egal welches Jahr...
(BEETWEEN LIKE geht nicht)

Weiß keiner wie sowas geht?
 
Alt 13.10.2005, 11:32  
Matthias959
Gast
 
Beiträge: n/a
Standard

Du solltest vielleicht übetr den Aufbau der Tabelle nochmal nachdenken.
Wär doch einfacher, wenn du eine Spalte für Tag, eine für Monat und eine für Jahr hast.

@mods: Bitte nach MySQL verschieben.
 
Alt 13.10.2005, 11:40  
Gast
 
Beiträge: n/a
Standard

Das geht leider nicht, die Tabelle existiert schon lange, und wird auch von anderen Programmen verwendet, da darf ich nichts dran ändern...

Es muss doch auch eine Möglichkeit geben, nur nach MM.DD zu suchen...

Leider finde ich die nirgends...

Weiß jemand wie man den query umschreiben kann, (eventuell ohne BETWEEN) und trotzdem das gewünschte Ergebnis (ein Zeitraum) dabei herauskommt?
 
Alt 13.10.2005, 11:44  
Matthias959
Gast
 
Beiträge: n/a
Standard

Du könntest auch alle Datensätze raussuchen lassen, und dann mittels PHP die raussortieren die zwischen x. und y. liegen.
 
Alt 13.10.2005, 11:52  
Gast
 
Beiträge: n/a
Standard

Hm, das klingt auch gut (zwar nicht so optmtimal, da ja alle Datensätze dann gesucht werden, aber für den Anfang mal nicht schlecht).

Und wie mach ich das dann?
 
Alt 13.10.2005, 12:07  
Matthias959
Gast
 
Beiträge: n/a
Standard

Also der User gibt in zwei Textfelder je ein Datum IM Format tt.mm ein. Dann wird das ganze per get übergeben und wie folgt ausgwertet

PHP-Code:
<?php
while($row mysql_fetch_object()$result)
{
if((
date("n"strtotime($row->Geburtstag)) <= $_GET[monat1] AND date("n"strtotime($row->Geburtstag)) >= $_GET['monat2']) AND (date("j"strtotime($row->Geburtstag)) <= $_GET[tag1] AND date("j"strtotime($row->Geburtstag)) >= $_GET['tag2'])
{
echo 
$row->name;
}
}
?>
Habe ich jetzt nicht geteste!!!
 
Alt 13.10.2005, 13:03  
Gast
 
Beiträge: n/a
Standard

vielleicht so:
PHP-Code:
<?php
$date_from 
date('n.d'strtotime("2005-$_GET[monat1]-$_GET[tag1]"));
$date_to =  date('n.d'strtotime("2005-$_GET[monat2]-$_GET[tag2]"));

if((
$date_from $date_to 12 0) + date('n.d'strtotime($birthday)) >= $date_from AND
   
date('n.d'strtotime($birthday)) <= $date_to)
  echo 
"jupp";
?>
habs sogar ausprobiert!
 
Alt 13.10.2005, 13:04  
Erfahrener Benutzer
 
Registriert seit: 27.10.2004
Beiträge: 1.093
PHP-Kenntnisse:
Fortgeschritten
Chr!s
Standard

Arbeite doch lieber mit Timestamps...
http://de.php.net/date
http://de.php.net/time
http://de.php.net/mktime
Chr!s ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

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

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
mysql query browser + umlaute gugu Datenbanken 10 28.03.2009 19:15
Probleme mit einer query tinchen Datenbanken 20 30.05.2006 19:39
Mysql Query mitloggen cycap Datenbanken 1 03.04.2006 21:36
Probleme mit MySQL 4.1.18 frankys9 Datenbanken 3 17.03.2006 10:42
Probleme beim �bertragen an eine Mysql Datenbank Datenbanken 2 07.03.2006 21:26
MySQL Server startet nicht mehr richtig... Datenbanken 16 03.03.2006 19:40
Lost connection to MySQL server during query in ... ? Alpha Centauri Datenbanken 0 24.10.2005 11:09
verschiedene Query Ergebnisse in MySQL 4.0.x und 4.1.x Datenbanken 3 18.09.2005 15:57
Suche Tipps für Persormance-Steigerung (Geld für Nützliches) Beitragsarchiv 18 16.08.2005 10:57
Lost connection to MySQL server during query bicpi PHP-Fortgeschrittene 17 02.08.2005 11:42
probleme mit mysql tabellen! fadass Datenbanken 6 13.07.2005 09:20
[Erledigt] probleme mit mysql Datenbanken 10 29.12.2004 16:54
Probleme seit MySQL 4.1.7 Server, Hosting und Workstations 3 21.12.2004 14:17
MySql und Php (Probleme mit Sonderzeichen) pit62 PHP-Fortgeschrittene 4 15.06.2004 04:19
probleme bei mysql PHP Tipps 2004 3 07.06.2004 21:34

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
strtotime($row

Alle Zeitangaben in WEZ +2. Es ist jetzt 08:02 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.