php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2008

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 28.12.2008, 23:47  
Neuer Benutzer
 
Registriert seit: 28.12.2008
Beiträge: 16
xavie befindet sich auf einem aufstrebenden Ast
Standard Problem mit Zeiträumen PHP und MySQL

Hallo Leute,
ich bin das erste mal hier und wollte hier mal eine frage stellen mit der ich mich aussernander setze und zur keiner lösung komme.

ich habe eine fahrzeuge tabelle in der eine generelle verfügbarkeitszeit drinne steht also z.B

TABELLE FAHRZEUGE

Fahrzeug ID = 1
Fahrzeug NAME = TRALALA
Verfügbar VON = 01.01.2008
Verfügbar BIS = 31.12.2008

der mysql aufruf dafür ist ja einfach aber nun kann man dieses fahrzeug für einen zeitraum mieten und dafür habe ich eine tabelle die ich vermietet nenne und diese sieht so aus

TABELLE VERMIETET

Fahrzeug ID = 1
Vermietet VON = 02.03.2008
Vermietet BIS = 13.03.2008

wenn jetzt jemand eine suche startet mit von 28.02.2008 bis 17.03.2008 brauche ich einen mysql select der nur fahrzeuge ausgibt die in diesem zeitraum generell verfügbar sind und auch nicht innerhalb dieses zeitraums vermietet sind.

ps: für meine zeitfelder benutzer ich interger-felder die mit timetamps gefüllt sind.
vg
xavie
xavie ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 28.12.2008, 23:52  
Neuer Benutzer
 
Registriert seit: 28.12.2008
Beiträge: 12
Klener befindet sich auf einem aufstrebenden Ast
Standard

Hmm vllt. gehts mit LIMIT 0 oder so..

also
PHP-Code:
SELECT FROM mieten Where Vermietet von $zeitraum LIMIT 0 
Bin mir nicht sicher das der Code so stimmt ^^
Klener ist offline  
Alt 29.12.2008, 00:13  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Wenn Deine MySQL Version ausreichend neu für Subqueries ist:
Code:
SELECT
  fahrzeuge.name  
FROM
  fahrzeuge  
WHERE
  Curdate() BETWEEN fahrzeuge.von AND fahrzeuge.bis
  AND NOT EXISTS (  
    SELECT    
      *      
    FROM    
      vermietet      
    WHERE    
      vermietet.fahrzeug_id = fahrzeuge.id
      AND Curdate() BETWEEN vermietet.von AND vermietet.bis
  )
edit
Zitat:
ps: für meine zeitfelder benutzer ich interger-felder die mit timetamps gefüllt sind.
Oh, das ist mir jetzt zu kompliziert
David ist offline  
Alt 29.12.2008, 00:51  
Neuer Benutzer
 
Registriert seit: 28.12.2008
Beiträge: 16
xavie befindet sich auf einem aufstrebenden Ast
Standard

erstmal danke an david

also das von david sieht schon sehr vielversprechend aus aber kann ich dem between anstadt curdate() 2 zeitangaben geben? wenn ja wie müsste das geschrieben werden? mit einem komma?

es wird ja immer nach einem zeitraum und keinem zeitpunk gesucht.
vg
xavie
xavie ist offline  
Alt 29.12.2008, 00:58  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Das könnte mit
Code:
SELECT
  fahrzeuge.name  
FROM
  fahrzeuge  
WHERE
  {suche_von} BETWEEN fahrzeuge.von AND fahrzeuge.bis
  AND {suche_bis} BETWEEN fahrzeuge.von AND fahrzeuge.bis
  AND NOT EXISTS (  
    SELECT    
      *      
    FROM    
      vermietet      
    WHERE    
      vermietet.fahrzeug_id = fahrzeuge.id
      AND (
        {suche_von} BETWEEN vermietet.von AND vermietet.bis
        OR {suche_bis} BETWEEN vermietet.von AND vermietet.bis
      )
  )
funktionieren.
{suche_von} und {suche_bis} musst Du dann durch Deine Zeitangaben ersetzen.
Wie das mit den Grenzen von
Zitat:
AND (
{suche_von} BETWEEN vermietet.von AND vermietet.bis
OR {suche_bis} BETWEEN vermietet.von AND vermietet.bis
)
aussieht (also ob das so stimmt), kann ich Dir allerdings nicht aus dem Ärmel schütteln. Es ist nur eine Idee
David ist offline  
Alt 29.12.2008, 01:09  
Neuer Benutzer
 
Registriert seit: 28.12.2008
Beiträge: 16
xavie befindet sich auf einem aufstrebenden Ast
Standard

nochmals danke
werde mal damit weiterarbeiten und spätestens morgen mal hier reinschreiben ob es funktioniert hat.
vg
xavie
xavie 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 Problem fkrauthan PHP-Fortgeschrittene 5 25.01.2008 18:18
mysql problem mit LIKE und AND kazuya Datenbanken 10 29.10.2007 21:36
MySQL kodierungs problem Mutatos Datenbanken 0 12.05.2006 20:02
MySQL Problem mit INSERT-Queries Arno Nühm Datenbanken 10 07.04.2006 16:46
Serverumzug - Problem mit MySQL Daten [GE]ReeN Datenbanken 6 28.03.2006 17:02
Mysql / Array Problem marcels PHP Tipps 2006 10 23.03.2006 18:30
MySQL Server startet nicht mehr richtig... Datenbanken 16 03.03.2006 19:40
[Erledigt] MYSQL Problem Datenbanken 4 09.02.2006 15:14
[Erledigt] Mysql + PHP und Datum Problem Datenbanken 11 31.08.2005 12:08
MySQL, PHP und ein großes Problem! Datenbanken 2 27.08.2005 10:51
Suche Tipps für Persormance-Steigerung (Geld für Nützliches) Beitragsarchiv 18 16.08.2005 10:57
[Erledigt] Problem MySQL 3 und 4 PHP-Fortgeschrittene 9 02.08.2005 16:45
[Erledigt] mysql installations problem Datenbanken 4 16.02.2005 18:46
[Erledigt] Mysql Abfrage Problem! PHP-Fortgeschrittene 5 27.11.2004 10:22
Problem mit 2 gleichzeitigen MySQL abfragen PHP Tipps 2004 2 08.07.2004 13:57

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
vermietung mysql php, vermietung mysql, mysql datum von bis, zeiträume in mysql schreiben, verfügbarkeitszeiten mysql

Alle Zeitangaben in WEZ +2. Es ist jetzt 18:19 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