PHP ja MYSQL helppi


  • Jyhkyjen harrastajat

    Oletko muuttamassa virtuaalitallisi tietokantaan tai haluaisitko vain helpottaa ulkoasupäivitystä jakamalla tallin sivu useampaan osaan (otsikko, sisältö, alaosa)? Ehkä yritätkin tehdä ihan jotain muuta, mutta koodi heittää jostain kumman syystä erroria.

    Tähän topaan voit laittaa kysymyksesi (liitä mukaan mieluiten koodisi, esim Pastebinillä, älä kopioi koko koodia tähän forumille). Kysymyksiin voi vastata kuka vaan osaa jotain sanoa.


  • Tarinaheppailijat

    Äh, innostuin tietokannoista ja päätin kokeilla tallin raakileen siirtämistä tietokantoihin. Kyseinen homma onnistui yllättävän helposti sivutilalta löytyvällä phpMyAdminilla. Mutta sittenhän ne ongelmat vasta alkoi! 😄

    Eli, miten saan ne tietokantojen tiedot hevosten sivuille? Olen, ainakin luulen niin, saanut koodilla yhdistettyä tietokannan sivulle, mutta miten saan tiedot haettua heppojen id-numeron perusteella sivuille? Kovasta googlailusta ja virtuaalifoorumin lueskulasta huolimatta mun aivot ei vain kerta kaikkiaan ymmärrä, mitä tehdä.

    Lisäksi haluaisin kuulla, miten te toteutatte kisakalenterin tietokannoissa. Sukutaulujen värkkäilystäkin haluaisin kuulla, että miten muut niitä tekee. 🙂


  • Jyhkyjen harrastajat

    Tässä suomenkieliset simppelit ohjeet siihen miten saat php:lla yhteyden sun tietokantaan, tästä alkaa tuolla yhteyden luomisella. Sitten kun yhteys pelittää valitset tietokannan josta haluat tiedot hakea ja sen jälkeen teet hakulausekkeen jossa määrittelet mitä tietoa haet (nimi, sp, rotu, jne) ja mistä (eli hevosten tiedot on varmaan hevoset taulussa).

    Kisakalenteri onkin vähän monimutkasempi homma. Mutta helpoin ratkaisu on varmaan se, että luot taulun jossa on sarakkeet: hevonen_id (avain, “foreign key”), laji, alaisuus, taso, paikka, paikka_url, tulos. Eli joka riville tulee yksi osallistuminen, pystyt sitten hakemaan hevosen sivulle kisakalenteriin kaikki hevosen XYZ kisat hevonen_id perusteella.


  • Tarinaheppailijat

    Kiitos @Tilli ! Nyt vaikuttaa siltä, että ohjeet upposivat jopa mun paksuun kallooni. : )


  • Tarinaheppailijat

    Kun ei osaa, niin ei vaan osaa…
    Yhteys tietokantaan löytyy ja hepan nimi tulostuu oikein nätisti h1-tagien väliin, mutta siihen se sitten jääkin. Tälläisen koodin avulla olen yrittänyt saada hevosen muitakin tietoja näkymään, mutta ne eivät tulostu sivuille sitten millään. Googlailtu on ja kaiken maailman merkkien paikkoja vaihdeltu ja merkkejä muuteltu, enkä mä vain mitenkään ymmärrä, mitä pitäisi tehdä. Tällä hetkellä siinä, mihin pitäisi tulostua taulukossa hevosen perustietoja, on vain tyhjää.
    Kai täältä löytyy joku, joka osaisi neuvoa, kun kerran olen näin pitkälle yrityksessäni päässyt? 😄



  • @Emppu Ota tuo h1-tagien välinen koodi kokonaan pois ja korvaa sekin tämmösellä rivillä <?php echo $tieto[‘nimi’];?> . Sit laita tuonne riville 7 tämmönen rivi:

    $tieto = mysql_fetch_array($tulos) or die(mysql_error());

    Tuolla uudella rivillä teet $tiedosta semmosen arrayn, mitä voit sitten käytellä jatkossa jokaisessa kohdassa, mihin tarvit tietoja samalla lailla kuin sulla on nyt rotu, sakakorkeus jne. eli vaan vaihtamalla hakasulkujen väliin sen minkä lokeron haluat tietokannasta näyttää 🙂


  • Tarinaheppailijat

    @Rinja Iso kiitos! Eiköhän se nyt rupea sujumaan. : )



  • Muakin kiinnostaisi toi, että miten toteuttaa sukutaulu. Yritän tässä hiljaksiin opetella myöskin tietokantajuttuja… 😄 Joten vinkkejä kehiin pls. Tällä hetkellä itse en keksi muuta tapaa, kuin tehdä sukutaulusta taulu, johon tekee sarakkeet jokaiselle sukulaiselle kolmeen polveen asti, sitten sen lisäksi sarakkeet myös osoitteille, ja sitten mahdollisesti lisätiedoille… mutta silloinhan siitä tulee julmetun pitkä. Onko mitään nokkelampaa tapaa toteuttaa tämä?


  • Jyhkyjen harrastajat

    @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.



  • @Tilli mietinkin jotain tämmöistä ratkaisua, mutta sitten aivokapasiteettini loppui siihen, että miten tämä käytännössä tapahtuu… 😄 suvullisten hevosten kanssa ihan loogista, mutta jos hevonen on suvuton, niin miten silloin saa nuo tiedot merkattua. Pitääkö jokainen evm sukuisenkin suku tallentaa tietokantaan, eikö silloin tule turhaa “ilmaa” tauluun kun evm sukulaisista tarttee täyttää taulusta vain nimi, rotu, säkä ja väri. Entä jos kyseessä on jonkun muun omistama hevonen suvussa, miten sen osoitteen saa laiteltua sukutauluun yms? 😄 varmaan mietin nyt liian monimutkaisesti… olen kyllä niin pihalla näistä jutuista ja aivot jäässä että itteäkin naurattaa.



  • @naakka, kaikki sukulaiset oli ne sitten evm tai oikeita virtuaalihevosia, tulee laittaa tällöin tauluun. Ja pitää olla tarkkana, että jos joku hevonen on jo lisätty tauluun jonkun toisen hevosen sukua lisäillessä, niin tietoja ei saa kerrata - eli sama hevonen ei saa olla monella rivillä - samaan hevoseen ja idiin viitataan joka kerta kun “hevonen X” esiintyy sun tallin hevosten suvussa tai jälkeläisissä tms.

    Osoitteen saa tekemällä hevoset -tauluun solun “osoite”, joka täytetään vain hevosille, jotka eivät ole omiasi. Hevoset -taulussa kannattaa myös olla solu “oma”, jonka arvo on esim. 0 jos hevonen on sun omistuksessa ja 1 jos ei ole. Tällä tavalla saat myöhemmin tietoja tulostaessa helposti eroteltua sun omat hevoset niistä taulussa olevista sukulaisista ja jalkelaisista 🙂


  • Laukkaponit

    Mulla on evm-sukuisille lisättynä kantaan vain i ja e, loput sukulaiset joko jätän merkkaamatta tai pistän sukuselvitykseen. Muiden omistamia hevosia varten taas on hevosen tiedoissa erikseen osoitekenttä minkä jätän omilta ja evm-sukulaisilta vaan täyttämättä. : ) Sukutaulua tulostaessa sitten katson onko hevonen oma vai muu ja sen mukaan tulee joko osoitekentän tieto tai jotain muuta.



  • @sandi, oiskohan sun sukutaulusovellutusta mahdollista päästä kurkkaamaan? Painin oman koodini kanssa nyt niin syvässä suossa että tarvis saada nähdä joku valmis juttu jota kohti osaisi ottaa suunnan… Hyvin menee terv. tuore tietojenkäsittelyn opiskelija jolle php-kurssit tulee vasta reilun kahden vuoden päästä 😞 javalla saisin vaikka mitä aikaan x)



  • This post is deleted!

  • Laukkaponit

    Mä en mielelläni näyttäisi, se on niin hirvittävä purkka etten halua kenenkään ottavan mallia moisesta. 😄 Pitäisi kasata koko homma uusiksi. Mulla ei myöskään ole MySQL-tietokanta vaan SQLite ja muutenkin vähän erilaiset systeemit, niin voi olla ettei noista koodeista edes kovasti olisi apua.


  • FWB

    Itse olen toteuttanut sukutaulun bordercollie ja australianpaimenkoira tietokantoihin siten, että mulla on luotuna sen koiran ID:seen solut (vai miksikä niitä sanottiinkaan) i, ii, iii, iie … jne, joihin täytetään koiran nimi. Ja kaverin jeesillä sitten se tekee niin, että hakee sillä solulle annetulla nimellä tietokannasta koiraa (ja taisi olla vielä niin että osaa hakea nimiä joissa on esim. `-merkki, vaikka nimeen olisi annettu '-merkki - en ole ihan satavarma), ja mikäli sellainen löytyy niin se linkitetään siihen sukutauluun - ja tätähän saa jatkettua niin että hakee myös esim. kys koiran meriitit, väritykset jne. Ja jos solun jättää tyhjäksi, niin siihen tulee vaan “evm”. Hidastaahan tollainen noin runsas hakeminen tietokannan toimintaa, mutta ton onkin tarkoitus toimia vaan tietopankkina, eikä minään salamannopeana sivuna. Sivujen helppolukuisuutta voi edistää tekemällä sukutaululle ihan oman sivunsa, ja että siellä varsinaisella sivulla lukee vaan esim. isä ja emä - kuten vFCI:n rekisterissä on tehty.

    Joskaan homma ei tietenkään ole yhtä simppeli sitten kun puhutaan koirien/hevosten sivuista, eikä vaan tietokantasivuista. 😄


  • Jyhkyjen harrastajat

    VAROITUS!

    Tässä erittäin ruma ja epäkäytännöllinen ajatus siitä miten tätä voisi lähteä rakentamaan. En ota mitään vastuuta jos otat tämän suoraan copy-pastena ja sitten hostisi/tietokantasi hakkeroidaan

    Tietokanta (horse), taulu “horse_info”:

    +---------+--------------+---------------+---------+--------+-------+                                                             
    | horseID | name         | breed         | color   | sireID | damID |                                                             
    +---------+--------------+---------------+---------+--------+-------+                                                             
    |       1 | Pollux       | suomenhevonen | rautias |      2 |     3 |                                                             
    |       2 | Polluxin Isa | suomenhevonen | rautias |      4 |     5 |                                                             
    |       3 | Polluxin Ema | suomenhevonen | rautias |      6 |     7 |                                                             
    +---------+--------------+---------------+---------+--------+-------+ 
    

    PHP:

    
    $connection = mysql_connect("localhost", "root")
      or die("Kantaan ei saatu yhteyttä: ".mysql_error());
    mysql_select_db("horse", $connection)
      or die("Kantaa ei saatu valittua: ".mysql_error());
    
    
    $query = mysql_query("SELECT * FROM horse_info", $connection);
    
    function fetchRelative($id) {
      
      $query_relative= mysql_query("SELECT * FROM horse_info WHERE horseID = " . $id);  
      while($data = mysql_fetch_array($query_relative)){
        return $data['name']; 
      }
      
    }
    
    while($data = mysql_fetch_array($query)){
      
      $sireID = $data['sireID'];
      $damID = $data['damID'];
      
      echo '------------------------------------------<br />';
      echo 'ID: ' . $data['horseID'] . '<br />'; 
      echo 'Nimi: ' . $data['name'] . '<br />';
      echo 'I: ' . fetchRelative($sireID) . '<br />';
      echo 'E: ' . fetchRelative($damID) . '<br />';
    } 
    
    

    Tuloksena:

    ------------------------------------------
    ID: 1
    Nimi: Pollux
    I: Polluxin Isa
    E: Polluxin Ema
    ------------------------------------------
    ID: 2
    Nimi: Polluxin Isa
    I: 
    E: 
    ------------------------------------------
    ID: 3
    Nimi: Polluxin Ema
    I: 
    E: 
    


  • Taas uutta kysymystä pukkaa. Näin tulevaisuutta ajatellen taas kerran, kun on tietokanta luotu ja sivut sun muuta, niin miten sinne tietokantaan lisätään oikeaoppisesti uutta tietoa, esim uusi hevonen? 😄 Nyt oon suoraan phpMyAdminiin lisäillyt, mutta se ei ehkä, varmaankaan, ole se kaikkein ideaalein tapa? Vai? Ei mitään hajua. Joku mielikuva mulla on, että porukoilla olisi joku oma lomake(?) tms millä syöttää tietoja. Vai onko. 😄 En osaa oikein netistä tietoakaan tästä aiheesta hakea, kun en tiedä mitä hakea ja muutenkaan ymmärrä oikein mistään mitään. Perus meininki. Kiitoksia jo etukäteen jos joku haluaa vähän avata tätäkin mysteeriä.


  • Laukkaponit

    Ihan yhtä “oikeaoppista” se on lisätä phpMyAdminista suoraan kuin lomakkeeltakin, mun mielestä usein myös yhtä näppärää. : ) Itsellä on silti lomakkeet lisäämiseen, tietojen muokkaamiseen sun muuhun. Hakusanoilla “php mysql form” tai jos suomeksi tykkää niin “php tietokanta lomake” esmes näytti pikavilkaisulla löytyvän jotain hyödyllisiä tutoriaaleja.



  • This post is deleted!

 

14
Online

1.0k
Users

13.7k
Topics

261.6k
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.