Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: MySQL: id = $i ja otsikko > 0

Sivun loppuun

Macro [14.12.2009 16:31:37]

#

Terve

Pitäisi saada tietokannasta haettua sarake, jossa id-kenttä on arvoltaan $i ja otsikko-kentän pituus on suurempi kuin nolla merkkiä. Mites tälläisessä tapauksessa edetään?

Metabolix [14.12.2009 16:34:18]

#

SELECT * FROM taulu WHERE id = ? AND LENGTH(otsikko) > 0

Lisää SQL:n tekstinkäsittelyfunktioista

Edit. Ja kyseessä on muuten rivi eikä sarake; id ja otsikko ovat sarakkeita.

Macro [14.12.2009 16:36:55]

#

Kiitos.

Muokkaus. Kysyn vielä tämän kysymyksen. Jos minulla on taulu, josta pitäisi poimia sarakkeet aika, otsikko, lahettettaja, lahettaja_id ja aihe_id. Ne pitäisi poimia siten, että ryhmittelisi tulokset aihe_id:n perusteella, hakisi kyseisen aiheen viimeisimmän viestin ajan ja nostaisi ensimmäiseksi sen aiheen jossa on viimeiseksi lähetetyin viesti.

Eli, järjestelisi foorumille ko. alueelle lähetetyt aiheet niiden vastausten perusteella.

Joo, jokin virhe sattui niiden sarake ja rivi nimien kanssa.

Metabolix [14.12.2009 17:21:00]

#

Koska ryhmittely täytyy tehdä ennen järjestämistä, toivomasi ratkaisu ei aivan toimi. Jos kuitenkin luotat siihen, että uusimmalla viestillä on viimeinen id, et välttämättä tarvitse järjestämistä ajan mukaan.

Macro [14.12.2009 17:31:01]

#

En luota, koska foorumilla on mahdollista "poistaa" viestejä. Pitänee siis luoda kaksi kyselyä, mutta millaiset?

osku91 [14.12.2009 17:50:33]

#

Voisikohan olla järkevää tallentaa aiheen tietoihin millon sinne on lähetetty viimeksi viesti, niin ne olisi helpompi ja nopeampi järjestää?

Metabolix [14.12.2009 18:28:19]

#

Jos id:n kasvusta vastaa AUTO_INCREMENT, se aina nimenomaan kasvaa eikä koskaan ota välistä tyhjäksi jääneitä. Lisäksi viestien poistamisen voi hyvin hoitaa vain lisäämällä siihen poistomerkinnän; näin vahingossa poistettujen viestien palauttaminenkin on helppoa. (Olisi ihan kiva ominaisuus Ohjelmointiputkassakin!)

Ei suinkaan ole yksiselitteisesti järkevintä lisätä aiheeseen viimeisen viestin numeroa. Hyödyt ovat minimaaliset (varsinkin, jos viestitauluun on oikeaoppisesti luotu indeksi aihe_id:n mukaan), mutta sen sijaan ohjelmoijalle tulee ylimääräistä muistettavaa: esimerkiksi uusimman viestin poiston yhteydessä pitää muistaa päivittää kyseinen viittaus. Lisäksi tällainen viittaus on tietokannan normalisoinnin ideologian vastaista, koska aiheen uusin viesti voidaan aina hakea yksiselitteisesti suoraan viestitaulusta.

Jos tuollainen on kuitenkin pakko saada, kannattaa edes toteuttaa se triggereillä (AFTER INSERT ja AFTER DELETE), jottei PHP:tä tarvitse sotkea asiaan.

Macro [14.12.2009 18:55:44]

#

Tosiaankin, nyt en ottanut huomioon noita kaikkia. Mutta, miten teen tämän kaikista helpoiten? AUTO_INCREMENTtiä käytän id:ssä, ja indexejä ei ole määritelty noin.

Macro [15.12.2009 16:00:50]

#

Muokkaus. Sain uusimman viestin lähettäjän jokaiselle alueelle näkymään oikein, mutta vielä pitäisi järjestää aiheet oikeaan järjestykseen. Kuten tässä ajan mukaan. (Teen siis foorumia) En saa niitä millään oikeaan järjestykseen. Jännä, kun kaikki muut hienoudet (viestien ja aiheiden poisto, aiheen siirtäminen & otsikon muokkaus, porttikiellon antaminen ja salliminen jne.) toimivat, mutta sivun rakenne (Keskustelua täällä) ja tuo äsken mainitsemani asia ei toimi. :D


Sivun alkuun

Vastaus

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

Tietoa sivustosta