PHP ja MYSQL helppi



  • Oon yrityksissäni päässy siihen vaiheeseen, että tiedot on taulussa ja saan ne haettua yhdelle sivulle. Ongelmana on etten ymmärrä miten saan haettua tietyn id:n tiedot tietylle sivulle. Pitääkö osoitteen muoto jossain erikseen määrittää vai pitäiskö tietojen hakemisen onnistua vaan esim. osoitteella hevonen.php?id=2 ? 😄

    Myös tietokannassa olevien tietojen ääkkösten kanssa on ongelmaa, vaikka oon mielestäni joka paikkaan yrittänyt määrittää UTF-8. Mihinköhän kaikkialle merkistökoodaus pitää määrittää?
    Käytän tietokannan hallinnassa Sequel Pro:ta, josta vien tiedot omalle sivutilalle.


  • Jyhkyjen harrastajat

    @Sakkura Oikean hevosen tiedot voit juuri hakea mainitsemallasi tavalla eli osoitteella, jolloin id on juuri se samainen id jolla hepan tiedot näkyy myös kannassa. Tämä on helpoin tapa, mutta ei ehkä käyttäjäystävällisin. Voit googletella vaikka “clean url php”, sillä löytyy ohjeita (joskin englanninkielisiä) miten voit käyttää siistimpiä osotteita. Tässä linkki ensimmäiseen googlen hakutulokseen. Silloin osoite voisi olla mallia www.webbihostisi/hevonen/hevosen-nimi-on-tama.

    Mielestäni utf8 pitäisi olla oikea. Näkyykö tiedot siis tietokannassa miten? Oletko syöttänyt niitä phpmyadminin kautta vai lähetttänyt tekemälläsi lomakkeella? Mikä on html sivusi merkistö, onhan se sama kuin tietokannan? Varmistithan vielä että sivu tallentuu oikeassa merkistössä? Monta tarkistettavaa asiaa…

    @Cannabia mysql:n tukemat datatyypit löytyy täältä. Ohjenuoraksi sanoisin että numeraaliset arvot kannattaa olla numeroita (heh…): kuten vaikka säkäkorkeus. Sitten kannattaa miettiä vähän miten iso esim: säkäkorkeus voi olla (eli sehän merkitään enintään kolmalla numerolla). Eli se voisi olla vaikkapa “TINYINT”. Ei kannata varata liian isoa tilaa tallennettavale datalle. Syntymäpäivä kannattaa olla “DATE” niin voit sitten helpommin vaikka laskea tulevia syntymäpäiviä hevosen sivulle. Nimi ja muut lyhyet tekstit voisi olla vaikka “CHAR/VARCHAR”, luonne sitten jo vähän pidempi “MEDIUMTEXT”. jne.

    Tässä vielä lyhyt listaus yhdellä sivulla noista datatyypeistä.



  • @Tilli joo noi tosiaan sit jo hiffasinkin, mutta lähinnä just mietin että jos mulla on esimerkiksi taulu “hevonen” joka sisältää hevosen perustiedot ym. sitten taulu “suku” niin varmaan molempiin tarvitaan esimerkiksi rivi hevonen_id, eikö - näin taulujen tiedot voidaan yhdistää yhteen hevoseen… Pitääkö joka taulussa esim. hevonen_id olla sitten AUTO INCERMENT vai mikä se olikaan, jokun sivuston mukaan “pääavain” tms. Selasin yhden päivän noita kaikkia oppaita suomeksi ja englanniksi, taulut sain luotua mutta mitään toimivaa tapaa “tulostaa” tiedot sivuille en löytänyt…


  • Jyhkyjen harrastajat

    @Cannabia Ekalla sivulla kuvailin miten itse tekisin sukutaulun:

    @Tilli said in PHP ja MYSQL helppi:

    @naakka itse toteuttaisin niin, että “hevonen” taulussa olisi sarakkeena “isaID” ja “emaID”, jotka viittaavat siis “hevonen” taulussa olevaan toiseen hevoseen (eli sukulaiseen). Tämä tarkoittaa sitä että sun pitää tallentaa myös vanhemmat tallisi tietokantaan.

    Alla taulukko esimerkki.

    Hevonen -taulu:

    hevonenID nimi emaID isaID
    100 Pollux 101 102
    101 Polluxin Emä xxx yyy
    102 Polluxin Isä mmm nnn


    Eli Polluxin tiedoissa emän id on 101 ja isän id 102. Vanhempien tiedot haetaan sitten etsimällä Hevonen taulusta id:tä 101 ja 102 vastaavat tiedot.

    Ja “hevonen_id” ehdottomasti “AUTO INCREMENT” koska haluat että numero kasvaa automaattisesti ja että se on aina uniikki.



  • @Tilli Kiitos Tilli, nyt sain vihdoinkin kaiken toimimaan 😄 Ilmeisesti oli vain koodinpätkät väärässä järjestyksessä tjtn… Täytyykin seuraavaksi alkaa harjoittelemaan jonkinlaisen lomakkeen tekoa, kun alkoi jo phpmyadmin kyrsimään.

    Itse lähdin rakentamaan sukutaulua juurikin isa_id ja ema_id sarakkeilla, minkä lisäksi tein sarakkeet pelkille vanhempien nimille niitä hevosia varten, joiden sukua ei tarvitse sen pidemmälle tuntea.


  • Esteratsastajat

    Olen itse tässä muutaman päivän ajan väkertänyt tietokantoja.

    EDIT // Sain tietokantayhteyden toimimaan, sivut näkymään automaattisesti id-numeron perusteella ja elämä hymyilee. Meinasin jo repiä hiukseni päästä, google kun löysi ihan liikaa “näin tulostat koko tietokantasi sivulle”-ohjeita 😄 Vielä muutama ongelma jäi;

    1. Miten käytännössä onnistuu hevosen vanhempien ja isovanhempien lisääminen (kaksi sukupolvea riitää) hevosen sivulle? Käytössä on vain yksi sivu, joten en pysty muokkaamaan kaikkia tietoja erikseen. Tietokantaan voin lisäillä ilomielin emaID ja isaID -numerot sekä näitä vastaavat tiedot, mutta en osaa laittaa koodia keskelle tavallista HTML-koodia.

    2. Olen haaveillut laittavani hevoslistaukseen hevosten tasot, tietokannasta haettuna tietysti. Miten tämä onnistuu parhaiten? Ongelmana itselleni on se, että haettuna ei ole vain yhden hevosen tietoja, joten pitäisi aina määrittää haettava ID-numero ja samalla myös haettava asia?


  • Suomenhevoskasvattajat

    Heti kun pyytää apua niin keksii ite jotain. Katsotaan toimiiko. 😂

    Hirmuisen vanha topikki, mutta ajattelin silti huhuilla tässä. Onko joku keksinyt, miten kaikkien sukulaisten tiedot saisi haettua tietokannasta samoja PHP-funktioita hyödyntäen? Siis ettei tarvitsisi jokaiselle sukulaiselle kirjoittaa omaa funktiota erikseen.

    Mulla on tällä hetkellä kaksi funktiota, toinen isän ja toinen emän tiedoille (hakee ja tulostaa). Käyttämällä reference-argumenttia (eli funktioon syötetty muuttuja muuttuu funktiossa) saan toimimaan yhden linjan (esim. e, ee ja eee TAI e, ee ja eei). Luonnollisesti sitten muita sukulaisia ei saa tällä logiikalla, kun muuttujan arvo (hevosen nimi, jonka perusteella tietoja haetaan) muuttuu joka kerta… 😂

    (En ole vielä löytänyt, mikä isän vastaavassa menee pieleen, mutta luultavasti joku pieni typerä oma virhe 😆 )



  • @crimis Esim. pkk:n tietokannassa jokainen heppa on omalla rivillä, eli kun haetaan yhden hepan isä ja emä, ne voi syöttää tietokantaan, niin että hevosen taulussa on kohta isa-id ja ema-id, joka on numeraalinen ja viittaa taulun hevosen numeroon.

    Sivun hevosen hakeminen:
    $result = mysql_query(“SELECT hevonen_id, hevonen_nimi, hevonen_osoite, rotu, hevonen_skp, isa, ema, evm
    FROM hevonen
    WHERE hevonen.hevonen_id = $id”) or die("Query to get blah failed with error: ".mysql_error());

    Näistä muodostetaan muuttujat:
    $info = mysql_fetch_array( $result );
    $id = $info[‘hevonen_id’];
    $nimi = $info[‘hevonen_nimi’];
    $osoite = $info[‘hevonen_osoite’];
    $rotu = $info[‘rotu’];
    $skp = $info[‘hevonen_skp’];
    $isa = $info[‘isa’];
    $ema = $info[‘ema’];
    $evm = $info[‘evm’];

    Muodostetaan hakulauseke hevosen isän hakemiselle

    $isukki = mysql_query(“SELECT hevonen_id, hevonen_nimi, isa, ema
    FROM hevonen
    WHERE hevonen.hevonen_id = $isa”);

    Tehdään muttujat:

    $anfo = mysql_fetch_array( $isukki );
    $idi = $anfo[‘hevonen_id’];
    $nimii = $anfo[‘hevonen_nimi’];
    $isai = $anfo[‘isa’];
    $emai = $anfo[‘ema’];

    Isän isän haku edellisen lausekkeen muuttujan perusteella:

    $isanisa = mysql_query(“SELECT hevonen_id, hevonen_nimi, isa, ema
    FROM hevonen
    WHERE hevonen.hevonen_id = $isai”);

    $anfor = mysql_fetch_array( $isanisa );
    $idir = $anfor[‘hevonen_id’];
    $nimiir = $anfor[‘hevonen_nimi’];
    $isair = $anfor[‘isa’];
    $emair = $anfor[‘ema’];

    Jne.

    Ja sitten sukutaulun tulostus näille muuttujille. Voi löytyä joku toinenkin keino, mutta tämä toimii, kun kaikki sukutaulun hepat on heppa-taulussa tai esim. halutussa suku-taulussa. (Muuttujien nimet tossa vähän pöhköt, mutta eipä sillä valiä mitä ovat =D ) Tarpeen toki lisätä osoitteet yms. omiksi riveikseen tietokantaan.


  • Suomenhevoskasvattajat

    @AnneL tää oli ihan selvää pässinlihaa 😄 En osannut muotoilla järkevästi tuota, mikä mun ongelma oli. 😅 Halusin mahdollisimman lyhyttä koodia. Sain sen kuitenkin nyt wörkkimään kahdella funktiolla, kahdella taulukolla ja neljällä funktioiden ulkopuolisella querylla… Good enough ✌ 😂





  • Nyt kyllä tuli niiiin mystinen ongelma eteen, ettei oo tosikaan! Pöystilän hevosilla on sivuillaan vielä vanha ulkoasu, joka toimii täysin moitteetta kaikilla. Oon työstänyt uuteen ulkoasuun heppapohjan, joka toimii kaikilla muilla paitsi neljällä yksilöllä. Se ei siis lataa koko sivua ja error-sivu listaa kaikki muut sarakkeet paitsi ID:n virheviestillä PHP Notice: Undefined index. Mutta kun nämä tiedot löytyy aivan kuten kaikilta muiltakin.

    Mitään mystistä tai erilaista ei näiden hevosten riveissä ole verrattuna muihin ja lopulta selvisi, että ongelma häviää heti, kun lisään näiden hevosten lempinimi-sarakkeeseen perään jonkun merkin! Tai yhden kohdalla muutin sen vain muotoon Juu Justuksen sijaan. En mä halua muuttaa näiden lempinimiä ja miten tällainen ongelma voi edes olla mahdollista 😂 Lempinimet on Justus, Daddy, Laine ja Muru eli niissä ei ole mitään erikoismerkkejä ja ovat muutenkin hyvin samanlaisia kuin muut hevoseni kuten Lenni, Nanna, Laulu jne.

    Ei kellään olisi tullut tällaista ongelmaa vastaan ja keksinyt jonkun muun ratkaisun kuin lempinimen muuttaminen? On mulle tarpeellinen rivi ja oon mä kyllä valmis sen muuttamaan, jos ei oikeasti muuta ratkaisua ole, mutta onhan tää nyt niin outoa.

    edit. Ongelman saanen kierrettyä, kun lisään lempinimen perään välimerkin ja vähän säädetään koodilla, niin ei pitäisi aiheuttaa edes ulkonäöllistä haittaa.


  • WESTERNRIDERS

    @tuire Onpas jännä, kiinnostaisi minuakin kuulla selitys tälle!

    Tämä ei nyt varsinaisesti auta mitenkään, mutta tulipahan mieleen kuinka kerran oli vähän samankaltainen ongelma. Jotkin (hevosten) sivut eivät toimineet (heitti kiukkuiselle “asiaton sisältö” error-sivulle), vaikka ne olivat samanlaisia kuin muut. Syyksi paljastui sitten tietyt sanat, jotka kyseisellä sivuntarjoajalla (joku ulkomaalainen) olivat bannissa. Oli kyllä aika niuhoa enkä kaikista “pahoista sanoista” edes keksinyt, miten ne sisältävät jotain hävytöntä. Sensuuri haki siis sanojen sisältäkin nämä kiroukset, esim. Kopporninmäki (tämä aika selvä tietenkin), mutta myös ihan mystisistä tavallisista sanoista, kuten esim. kukkaniitty tai Maisa.

    Vaihdoin lopulta hostia, koska koko ongelma oli naurettava ja suomen kielessä ilmeisesti tällaisia hyihyi-sanoja oli ihan liikaa… En ole moiseen minkään toisen palveluntarjoajan kanssa törmännyt!



  • @Tuire Ootko kokeillu hevosen php-sivulla lempinimi kohdan muuttamista, niin että tulostaa ‘lempinimi’ sijaan echo ‘U+0027’; lempinimitulostus; echo ‘U+0027’;

    Tms. muuten kirjoitettu heittomertkit koodilla:
    http://jkorpela.fi/suomi/lain.html



  • Niin siis ongelmana ei ole noi heittomerkit, jos sitä meinasit. Vaan ongelma on se, että tietokannassa hevosen lempinimi on Laine, mikä jostain mystisestä syystä aiheuttaa sen, että mennessäni hevosen uudelle sivulle, sivu ei lataa mitään ja tietokanta kirjaa error-tiedostoon, ettei tietoja löydy.

    Esimerkkinä vaikka Molli: sen vanhat sivut toimii yhtä hyvin kuin uudet.

    Mutta Laineella toimii ainoastaan vanhat sivut, kun taas uudet sivut jää vain rullaamaan, hakiessaan kaiketi tietoja, joita ei vain löydä, vaikka ne siellä on.

    Ja Daddyn kohdalla ongelma oli sama kuin Laineella, paitsi nyt kun lisäsin sen lempinimen perään välilyönnin, nyt toimii niin vanha kuin uusi sivu sivu ja lempinimen perään vaan tulostuu tuo välilyönti. Ja tämän saanee kyllä pois, kun vaan jaksaa koodata.

    edit. Ongelma tosiaan kierretty sillä, että lisäsin näille neljälle yksilölle lempinimen perään välilyönnit ja substr-koodilla poistin vikan merkin. Mutta jos jollekin tulisi ahaa-elämyksiä mikä ihme tämän voi aiheuttaa, niin saa kertoa 😄


 

18
Online

1.1k
Users

14.3k
Topics

277.2k
Posts

Kysyttävää, kommentoitavaa tai palautetta? Ota yhteyttä suoraan ylläpitäjään (Tilli): maatila.pemberley@gmail.com.

Looks like your connection to Keskusta was lost, please wait while we try to reconnect.