Fick inget syntax-fel när jag körde det på MySQL (hos one.com). Vet inte vilken version de använder.
Utskriftsvy
Fick inget syntax-fel när jag körde det på MySQL (hos one.com). Vet inte vilken version de använder.
Gjorde du det i en CREATE VIEW?
Först bara en select-sats, men testade även att skapa vyer och det gick utan problem. Data-typen blev dessutom rätt.
Vill du får du gärna posta koden för viewn så kanske jag kan förstå vad jag gör fel? :o
Använde phpMyAdmin. Minns nu inte vad jag skrev, men eftersom jag även testade med den inbyggda versionen kan du ju testa den (om du har phpMyAdmin). När man skrivit en SELECT-fråga kan man göra om den till en vy (med en knapp nere till höger, skapa vy).
Lånade din CREATE-kod och den fungerar ...
Kod:CREATE SQL SECURITY INVOKER VIEW xxx__vy0
AS
SELECT CONVERT(IF(FDatum<>'0000-00-00',FDatum,IF(DDatum<>'0000-00-00',DDatum,'1000-01-01')),DATE) as sdatum, fdatum, ddatum, namn
FROM xxx__tab
ORDER BY sdatum, namn
Ja, jag får det att fungera nu också, måste ha klämt in en parentes för mycket??? Stort tack C-G!
Är du intresserad kan jag PM'a adressen till det pågående projektet. Alltid intressant med kunniga människors synpunkter!
Det är alltid intressant att se vad som händer i släktforskarvärlden så du kan gärna skicka adressen ...
Nästa sak, och förhoppningsvis den sista, att ta sig förbi är hur jag skall formulera en SELECT-fråga som omfattar att söka på antingen enbart ett datum, alternativt ett intervall.
Mitt sökformulär för födda kan ni se i bifogad fil.
SQl-frågan som den ser ut nu, med enbart sökning på ett datum tillsammans med andra söktermer i textformat:
Hur utökar jag denna query att omfatta intervallet "Mellan åren" (se bild), som har fått variabelnamnen $SDatummin och $SDatummax.Kod:$sql = mysql_query("SELECT * FROM fvy WHERE
(Datum LIKE '$SDatum%' OR FDatum LIKE '$SDatum%')
AND BFnamn LIKE '$BFnamn%'
AND FFnamn LIKE '$FFnamn%'
AND FEnamn LIKE '$FEnamn%'
AND FYrke LIKE '$FYrke%'
AND MOFnamn LIKE '$MOFnamn%'
AND MOEnamn LIKE '$MOEnamn%'
AND MOYrke LIKE '$MOYrke%'
AND OrtN LIKE '$OrtN%'
AND Anm LIKE '$Anm%'
ORDER BY SDatum, Kalla, Id");
Jag vill alltså att queryn skall gälla antingen $SDatum eller intervallet $SDatummin till $SDatummax, där båda alternativen kombineras med övriga söktermer.
Hoppas det gick att förstå den frågan?
Mvh
Jag undrar om alla kan innehålla ett riktigt datum eller '0000-00-00'!? Hur ska man då tolka öppna intervall, dvs de utan min- eller max-värde? När det gällde födelse- och dop-datum prioriterade du födelse. Hur blir det i detta fall? Undrar hur det går att testa om ett datum är i ett intervall när du använder LIKE ... Varför använder du förresten LIKE på datumfältet?
Anledningen till att jag använder LIKE i datumsökningarna är att det skall fungera att bara söka på "1685" i sökfältet. Använder jag "=" så behöver jag ange exakt datum med 10 siffror. Wildcards fungerar inte.
Jag har letat runt lite och vad jag förstår bör man kunna använda något i stil med :
Men jag vill ju bara använda den frågan när båda eller något min-max variablerna är satta och när inte den enkla variabeln $SDdatum används. Om jag använder exempelkoden i ovanstående fall får jag väl försöka göra det tydligt på sidan att dessa två datum måste anges med 10 siffror.Kod:SELECT * FROM fvy WHERE (Datum >= '$SDatummin' AND Datum <= '$SDatummax')
Man validerar oftast det som kommer in i ett formulär. Du kan styra ganska hårt vad användaren får knappa in. Många använder Javascript för inmatningskontroll på klientsidan (innan det skickas till servern). På serversidan kan du också kontrollera det som kommer in i formuläret och trimma/manipulera variablerna innan du skickar dem vidare i en fråga till databasen, eller ställa olika frågor beroende på vad som skrivs i formuläret.