Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Outo ongelma?

Sivun loppuun

latenleffahylly [15.05.2012 20:23:15]

#

Hei,

Kuten useammalle varmaan jo tiedossa niin olen tehnyt työvuoronvaraus ohjelmaa.. olen saanut täältä paljon apua ja varaaminen on toiminut hyvin, yritys on ollut erittäin tyytyväinen jne.

----------------------------------------------------------------

Nyt olen kuitenkin kohdannut mitä oudoimman ongelman eli.. kun listaan Tapahtumat

Tapahtuma 1
Tapahtuma 2
Tapahtuma 3


..niin nähtävästi tässä tulee joku kumma raja vastaan. SQL-lauseessa ei ole limittiä. En todellakaan ymmärrä mistä kyse? Eli en pysty lisäämään kuin yhteensä 35 tapahtumaa. Tämän jälkeen tapahtuma ei näy. Ainoastaan viimeisin luotu tapahtuma.

- Mistä tällainen voi johtua?

$sql_lauseke = "SELECT Varaus.Tapahtuma_Id, COUNT(Varaus.Tapahtuma_Id), Tapahtuma.tStatus, Tapahtuma.T_Id, Tapahtuma.tNimi, Tapahtuma.tVuosi,
Tapahtuma.tKuukausi, Tapahtuma.tPaiva, Tapahtuma.tViikonpaiva, Tapahtuma.tTarve, Tapahtuma.tAlkaa, Tapahtuma.tLoppuu, Tapahtuma.tSijainti
FROM Varaus
RIGHT JOIN Tapahtuma ON Varaus.Tapahtuma_Id = Tapahtuma.T_Id
                                    WHERE Tapahtuma.tStatus = 'Tapahtumat'
                                    GROUP BY Varaus.Tapahtuma_Id
                                    ORDER BY tVuosi, tKuukausi, tPaiva, tNimi";

SQL-lause toimii, mutta tapahtumien määrä on rajoitettu, huoh..

groovyb [16.05.2012 01:12:19]

#

Siis etkö saa lisättyä kantaan yli 35 riviä, vai luettua kannasta yli 35 riviä?

Ensin tarkistaisin mitä tapahtuu kun lisäät kantaan (tuleeko kantaan uudet rivit)

jos taas kantaan rivit tulee, mutta vika on lukiessa, tarkistaisin objektit joihon luet nuo tapahtumat (eli näkyykö kaikki rivit objekteissa), ja että onko vika enemmänkin tapahtumia näytettäessä UI puolella kuin tietokannassa.

latenleffahylly [16.05.2012 09:24:36]

#

- Tapahtuman lisääminen toimii normaalisti
- 35 tapahtuma tulee näkyviin normaalisti..

Mutta sen jälkeen kun lisää 36 tapahtuman, niin se tulee viimeksi lisätyn tapahtuman kohdalle. Olen miettinyt voiko tyyleissä (css) olla jokin vialla. Ylläpito puolella kaikki tapahtumat listataan normaalisti ja homma toimii.

Olen miettinyt voiko sql-lause tuottaa sittenkin ongelmia.


Lisäys:

-----------------------------------------------------------------

SQL-lausetta testattu ja tyylimääritelmiä, mutta ei apua. Tämä on todella mystinen ongelma - selkeästi vaikein jonka olen kohdannut. Loogisesti ajatellen tässä ongelmassa ei ole mitään järkeä.

Tavallaan voisi olettaa että SQL-lauseessa vika sillä ylläpito puolelle haetaan tiedot näin:

$sql_lauseke = "SELECT * FROM Tapahtuma ORDER BY tVuosi, tKuukausi, tPaiva, tNimi";

Tapahtumat sivulle haetaan tietoa näin:

$sql_lauseke = "SELECT Varaus.Tapahtuma_Id, COUNT(Varaus.Tapahtuma_Id), Tapahtuma.tStatus, Tapahtuma.T_Id, Tapahtuma.tNimi, Tapahtuma.tVuosi,
Tapahtuma.tKuukausi, Tapahtuma.tPaiva, Tapahtuma.tViikonpaiva, Tapahtuma.tTarve, Tapahtuma.tAlkaa, Tapahtuma.tLoppuu, Tapahtuma.tSijainti
FROM Varaus
RIGHT JOIN Tapahtuma ON Varaus.Tapahtuma_Id = Tapahtuma.T_Id
                                    WHERE Tapahtuma.tStatus = 'Tapahtumat'
                                    GROUP BY Varaus.Tapahtuma_Id
                                    ORDER BY tVuosi, tKuukausi, tPaiva";

jukkah [16.05.2012 10:00:35]

#

Oletko kokeillut ajattaa tuota pidempää kyselyä esim. phpMyAdminissa?

latenleffahylly [16.05.2012 10:10:38]

#

Hmm.. kokeillaan, kiitos!

Lisäys:

Nykyään SQL-lause siis tämä: (kiitos nimimerkille jukkah, aikaisemmasta avusta)

SELECT COUNT( Varaus.Tapahtuma_Id ) , Tapahtuma.tStatus, Tapahtuma.T_Id, Tapahtuma.tNimi, Tapahtuma.tVuosi, Tapahtuma.tKuukausi, Tapahtuma.tPaiva, Tapahtuma.tViikonpaiva, Tapahtuma.tTarve, Tapahtuma.tAlkaa, Tapahtuma.tLoppuu, Tapahtuma.tSijainti
FROM Varaus
RIGHT JOIN Tapahtuma ON Varaus.Tapahtuma_Id = Tapahtuma.T_Id
WHERE Tapahtuma.tStatus = 'Tapahtumat'
GROUP BY Varaus.Tapahtuma_Id
ORDER BY tVuosi, tKuukausi, tPaiva

TULOS: Näkyvillä rivit 0 - 29 ( 35 yhteensä, kysely kesti 0.0015 sek.)

Lisäys:

-----

Pahimmassa tapauksessa tämä liittyy taas siihen että kun tapahtumien varaustenmäärä näyttää vielä -> 0

..mutta luulin että RIGHT JOIN poistaa tämän ongelman.. huoh..

Lisäys:

------------------------------------------------------------------------

Kun varaan tapahtuman 35 tulee näkyviin tapahtuma 36.. jne. Eli ongelma liittyy varausten määrään.

Testi 2 1.1.2013 06:00-06:00 0 /1
Testi 1 1.1.2013 06:00-06:00 1 /1

- Eli kun varasin tapahtuman Testi 1 niin näkyviin tuli tapahtuma Testi 2... huoh.. miten tämän ongelman saisi pois. Eli systeemissä vika kun varauksia ei ole vielä tehty lainkaan...

Metabolix [16.05.2012 12:50:36]

#

Jos tapahtumassa ei ole varauksia, kyselyssäsi Varaus.Tapahtuma_Id on NULL, joten tähän perustuva GROUP BY yhdistää kaikki varauksettomat tapahtumat, mistä seuraa, että kyselysi palauttaa vain yhden näistä.

Kyselyitä kannattaa suunnitella ihan järjellä. Haluat hakea kaikki tapahtumat, joten laita Tapahtuma FROM-kohtaan ja käytä GROUP BY -kohdassa Tapahtuma-taulusta tulevaa id:tä. Esimerkiksi seuraavat kyselyt toimivat. Ensimmäinen on vähän parempi, toisen taas on tarkoitus osoittaa, että usein on olemassa myös vaihtoehto, joka voi olla helpompi keksiä.

SELECT
	Tapahtuma.*,
	COUNT(Varaus.Tapahtuma_Id) AS maara
FROM Tapahtuma
LEFT JOIN Varaus ON Tapahtuma_Id = T_Id
WHERE tStatus = 'Tapahtumat'
GROUP BY T_Id
ORDER BY tVuosi, tKuukausi, tPaiva
SELECT
	Tapahtuma.*,
	(SELECT COUNT(*) FROM Varaus WHERE Tapahtuma_Id = T_Id) AS maara
FROM Tapahtuma
WHERE tStatus = 'Tapahtumat'
ORDER BY tVuosi, tKuukausi, tPaiva

latenleffahylly [16.05.2012 13:22:16]

#

Älä nyt ymmärrä väärin Metabolix, mutta mielestäni olet lähes Steve Jobsin kaltainen nero..

Eli homma toimii täydellisesti ja mikä parasta antamaasi ylempää SQL-lausetta oli mukava testata PHP MyAdminissa, näkee mukavasti millaista tietoa tulostuu ja missäkin järjestyksessä.


kiitos!!

Lisäys:

------------------------
Alempi lausekkin toimii loistavasti. Huh mikä helpotus, luulin jo tulleeni hulluksi kun yht'äkkiä en saanutkaan kaikkia tapahtumia näkymään.

Lebe80 [16.05.2012 13:40:06]

#

latenleffahylly kirjoitti:

Älä nyt ymmärrä väärin Metabolix, mutta mielestäni olet lähes Steve Jobsin kaltainen nero..

Mutta eihän Steve Jobs juurikaan koodannut, vaan veteli vain naruista....

latenleffahylly [16.05.2012 13:46:27]

#

Nimen omaan.. "veteli naruista" ..mutta osasi hän myös koodata ja mikä tärkeintä hän osui aina asian ytimeen ja sai ongelmat ratkottua käsittämättömällä päättäväisyydellään.

luen muuten Jobsin elämänkertaa juuri iPadillani, lähes uskonnollinen kokemus

jalski [16.05.2012 13:48:06]

#

Lebe80 kirjoitti:

Mutta eihän Steve Jobs juurikaan koodannut, vaan veteli vain naruista....

Oli muutenkin jännä huomata miten uutinen Steve Jobsin kuolemasta jätti varjoonsa erään lähes samoihin aikoihin kuolleen, ainakin omalla listallani paljon suuremman tietotekniikan pioneerin...

Lebe80 [16.05.2012 14:03:36]

#

jalski kirjoitti:

Lebe80 kirjoitti:

Mutta eihän Steve Jobs juurikaan koodannut, vaan veteli vain naruista....

Oli muutenkin jännä huomata miten uutinen Steve Jobsin kuolemasta jätti varjoonsa erään lähes samoihin aikoihin kuolleen, ainakin omalla listallani paljon suuremman tietotekniikan pioneerin...

Viitannet Dennis Ritchieen, jota voisi tituleerata oikeastaan koko nykytietotekniikan luojaksi (c-kieli ja unix-käyttöjärjestelmä).


Lisäys:

latenleffahylly kirjoitti:

Nimen omaan.. "veteli naruista" ..mutta osasi hän myös koodata ja mikä tärkeintä hän osui aina asian ytimeen ja sai ongelmat ratkottua käsittämättömällä päättäväisyydellään.

No ei se kyllä mikään koodari ollut, vaikka osasikin koodata hieman. Hän ei osunut asian ytimeen, vaan enemmänkin oli kyseessä "kuninkaan uusista vaatteista". Jobs ei myöskää itse yksin päättänyt noista asioista, vaan taustalla on ISO firma, jossa on useita henkilöitä. Enemmänkin uskon, että ison firman taustajoukot saivat aikaan isolla hypellä myyntiä aikaiseksi. Ei niinkään Jobsin ideoilla vaan enemmän Jobsin persoonalla.

Itse uskonkin, että useimmat jenkit ovat kohdanneetkin jo Apple-ähkyn, ja saattavatkin vaihtaa tietokone-/luuri-/tms. merkkinsä johonkin edullisempaan itämaiseen merkkiin, jotka kuitenkin on ominaisuuksiltaan omenaa edelle.

latenleffahylly kirjoitti:

luen muuten Jobsin elämänkertaa juuri iPadillani, lähes uskonnollinen kokemus

Itse katson juuri nettipornoa Galaxy Täbilläni. Flashi-striimit pyörivät ongelmitta. Voisi sanoa kauniiksi orgasmiseksi kokemukseksi, jota se myöskin on.


Lisäksi voin soittaa ilman lisämaksua videopuhelun äidilleni tässä samalla.

dartvaneri [17.05.2012 01:21:04]

#

Lebe80 kirjoitti:

Viitannet Dennis Ritchieen, jota voisi tituleerata oikeastaan koko nykytietotekniikan luojaksi (c-kieli ja unix-käyttöjärjestelmä).

Todennäkoisesti, siitä en kyllä ole nähny kertaakaan otsikoissa, vaikka se todellakin olisi sen ansainnut ohjelmoinnin "isänä".

Lebe80 kirjoitti:

Itse katson juuri...
...Lisäksi voin soittaa ilman lisämaksua videopuhelun äidilleni tässä samalla.

Onnea..


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta