Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Neuvoja hakupalvelun kehitykseen

Sivun loppuun

zhoop [10.12.2006 13:29:02]

#

Kehittelen palvelua, jolla voi etsiä itselleen sopivan digiboksin. Palvelu on osoitteessa http://simo.arkku.net/digidigi

Ongelma on kuitenkin siinnä, että minulla ei ole käytössä MySQL tukea, enkä osaa hakea tai tulostaa tietoa tietokannasta, joten vinkit olisi tarpeen. Tällähetkellä olen toteuttanut palvelun if-lauseilla, mutta niitä käyttäen palvelusta tulee kohtuuttoman raskas ja vaikea ylläpitää, ja oletan, että helpompikin keino on olemassa.

Kentti [10.12.2006 13:41:34]

#

Teksitietokannasta hakemisen kultaiset sanat ovat fopen, fread, fclose, fwrite, file_get_contents, file_put_contents, file, array_search.

( mixed array_search(mixed needle, array haystack [, boolean strict]) )

Esimerkiksi näin:

<?php

  # Haetaan tiedosto taulukkoon.
  $filu = file_get_contents("tekstitietokanta.txt");
  $filu = explode("\n", $filu);

  # Etsitään. Huom! Yksi "tiedonalkio" on yksi tekstitiedoston rivi!

  $loydetty = array_search($mita_etsitaan, $filu);

  if (! $loydetty) echo "Ei löytynyt!";
  else echo $loydetty;

?>

Edit: Mutta kyllä arkku.netissä pitäisi MySQL olla käytössä.

zhoop [10.12.2006 13:58:16]

#

Kiitos neuvoista.

Heräsi kuitenkin esiin pari kysymystä. Miten saan tulostettua tietokannasta sitten ne tulokset? Pitääkö tieto laittaa tietokantaan muodossa tieto1|tieto2|tieto3 vai jossain toisessa muodossa?

Arkku.netissä on tosiaankin mySQL tuki, mutta minulla ei ole kuin yksi mysql tuki ja se on jo käytössä.

Kentti [10.12.2006 14:11:32]

#

Sinne tekstitiedostoon esim. muodossa

tieto1
tieto2
tieto3
...
tietoN

Eli yksi tieto / rivi (explode("\n",...))

sane [10.12.2006 14:16:16]

#

Miksei muodossa:
tieto1_boksi1|tieto2_boksi1...
tieto1_boksi2|tieto2_boksi2...
...?

Antti Laaksonen [10.12.2006 14:17:36]

#

Mitä tarkoittaa "yksi MySQL-tuki"? Onko taulujen määrää rajoitettu?

juha127 [10.12.2006 14:23:01]

#

Eipäilen että hän tarkoittaa yksi MYSQL-tunnus, koska Arkusta saa vain yhden tunnuksen käyttöön.

Kentti [10.12.2006 14:35:40]

#

juha127 kirjoitti:

Eipäilen että hän tarkoittaa yksi MYSQL-tunnus, koska Arkusta saa vain yhden tunnuksen käyttöön.

Muistaakseni jotenkin noin se meni.

sane kirjoitti:

Miksei muodossa:
tieto1_boksi1|tieto2_boksi1...
tieto1_boksi2|tieto2_boksi2...
...?

Voit sen kyllä noinkin laittaa, mutta silloin KAIKKI tiedot pitää olla samalla rivillä ja explode("\n"..) -> explode("|"..)

sane [10.12.2006 17:28:38]

#

Juu, ja lienee file() funktio kätevämpi tuohon tarkotukseen, kun se lukee rivi kerrallaan taulukkoon. Toki mahdollista myös tuolla explodella, mutta helpompaa se niin on. Eli muotoon

tieto1_boksi1|tieto2_boksi1...
tieto1_boksi2|tieto2_boksi2...

Ja taulukkoon luku sitten jotenkin näin

$tiedosto = "jotain.txt";
$tiedosto = file($tiedosto);
for($k=0;$k<count($tiedosto);$k++){
$tiedot[$k] = explode("|", $tiedosto[$k]);
}

Näin saat boksi ykösen tiedot taulukkoon $tiedot[0], ykös tiedon $tiedot[0][0], kakostiedon $tiedot[0][1] boksi kakosen tiedot[1]...

edit: Olisi varmaan tehokkaampaa/helpompaa käyttää tota sun tietokantaa ja tehdä sinne vain uusi taulu näitä bokseja varten?

Kentti [10.12.2006 17:40:04]

#

> Sane

En vain halunnut säheltää silmukoiden kanssa kun heitin skriptin päästä :)

Mutta kätevämpää olisi käyttää foreach()ia for()in sijasta.

LaNu [11.12.2006 17:46:19]

#

zhoop kirjoitti:

Arkku.netissä on tosiaankin mySQL tuki, mutta minulla ei ole kuin yksi mysql tuki ja se on jo käytössä.

Sinulla on käytössä yksi tietokanta, jossa voi olla rinnakkaisia tauluja N kappaletta (N on joku iso luku, jonka voi varmaan jostain MySQL:n dokumentaatiosta kaivaa esiin). Jos sinulla ei kovin paljoa ole tietoa niissä jo olemassa olevissa tauluissa, niin etköhän sinä voi hyödyntää sitä MySQL:ä tässäkin.

Kunnon tietokanta on paljon näppärämpi käytää kuin itse tehty tekstiversio. Arkun php on nelosversio, joten edes SQL-Liteä ei voi hyödyntää, vaan tosiaan toinen vaihtoehto on luoda tietokanta itse (tai hyödyntää muistaakseni koodivinkeistä löytyviä esimerkkejä).


Sivun alkuun

Vastaus

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

Tietoa sivustosta