Aloin värkkäämään phpBB:n kanssa, mutta en ole PHP-koodia tutkimalla onnistunut keksimään, miten haetaan jonkun tietyn jäsenen/ kaikkien jäsenten tietoja foorumista.
Seuraavat toiminnot kiinnostaisivat oppia:
-jäsenten viestimäärät, liittymis/kirjautumispäivät, viestimäärät tietyllä aikavälillä, ym.
-viestimääristä ja jäsenmäärästä riippuvainen tittelirajan automaattinen muutos
Toistaiseksi olen onnistunut lukemaan php:llä vain foorumin kokonaisviestien ja jäsenten määrän. Tämän tiedon pohjalta olen saanut aikaiseksi toimivan reaaliaikaisen tittelirajalaskurin, mikä vain tulostaa rajat semmoisena, kuin ne olisivat editoitaessa.
PHP on siis aivan uusi aluevaltaus. :)
No esimerkiksi näin haet jonkin tietyn käyttäjän kaikki tiedot:
<?php ...yhteys tietokantaan... $nick = mysql_query("SELECT * FROM bb_users WHERE username LIKE 'somenick'") or die(mysql_error()); ?>
Missä "bb_users" on käyttäjät taulusi nimi ja "somenick" luonnollisesti se käyttäjä jonka tiedot haluat.
Käyttäjän nimimerkin ja sähköpostin tulostaminen taas onnistuu vaikka näin:
Jos taas haluat kaikkien käyttäjien tiedot niin poistat kyselystä kohdan:
WHERE username LIKE 'somenick'
Kaikkien käyttäjien tulostaminen taas onnistuu näin:
Toivottavasti tämä oli se mitä hait/tarkoitit.
Tuhannet kiitokset ja syvä kumarrus!
Näyttää erittäin lupaavalta, luulenpa, että tällä pääsee suuren harppauksen eteenpäin!
Koodi näyttää hyvin lyhyeltä loppujen lopuksi, surin ongelmanihan on se, että en ole tiennyt, millä toiminnolla mitäkin tietoa haettaisiin, vaan on pitänyt plarata tiedostoja läpi ja koittaa löytää jotakin vastaavia. Ja yleensäkin PHP on minulla vielä täysin alkutekijöissään, siinä ei liikoja ole apua vähäisestä QBasic, html, python, yms. osaamisesta. Ainoastaan ohjelmoinnin perusteet, mutta hyvänä tukena sekin toki on, että alkuun pääsee.
Nyt pitää kaikessa rauhassa perehtyä tähän puoleen, mitä kaikenmaailman askareiltani ehdin. Toivon mukaan lähiaikoina saan jotakin uutta aikaiseksi näillä tiedoilla. Ja yritys-erehdysmenetelmällä loppuja...
Kerron sitten, miten onnistun yritelmässäni...
Välionnistuminen:
Toistaiseksi olen onnistunut tulostamaan kertaalleen vain käyttäjän nimen samanlaisena, mitä olen laittanut somenickin paikalle, mutta en esimerkiksi e-mailia. Pitänee vissiin olla kirjautuneena foorumiin tai jotain... (?)
Yritelmät jatkuvat.
EDIT 15.3.2007 09:03: Noniin. Kehitys kulkee takapakkia, en enää saa millään ilveellä muuta kuin virheitä tai tyhjän sivun useista kymmenistä yrityksistä huolimatta. Nyt saapi joksikin aikaa yritykset riittää, päreet palavat muuten loppuun. Yritys-erehdys-menetelmässä se vaara on aina olemassa... Ehkä illalla on terveellisempää yrittää taas saada tuo tyhjä sivu aikaiseksi... :D
Tarkista phpmyadminista millä nimellä sähköposti siellä users taulukossa on. Sieltä näet myös kaikkien muiden sarakkeiden nimet joista tietoa voi hakea. Esimerkiksi rekisteröitymispäivä voi olla "regdate", mutta se pitää ensin tarkistaa phpmyadminista ettei mene arvailun puolelle.
Ensin pitää hommata kyseinen phpmyadmin, en ole vielä semmoista laittanut.
Tämän hetken tilanne on edelleen se, että tietokannasta saan esiin kaikkien viestien yhteismäärän ja käyttäjämäärän. Siinäpä se sitten onkin.
Varmaan tuon users-tablen kohdan nimeämisessä on suuri probleema. Yhden kerran olin näkevinäni, että oma käyttäjänimi peräti tulostui, mutta epäonneksi menin tietenkin muuttamaan sen kohdan, kun emailia en saanut näkyviin...
Nyt täytyy kyllä lähteä ulkoaskareisiin tuulettamaan hetkiseksi päätä, josko tuo kohta vielä selviäisi uudelleen. Toivossa on ainakin hyvä elää.
Myslin virheenkäsittely ja SELECT * FROM is evil. Toisin sanoen, käytä tuon "or die" sijasta mieluummin tuollaista php-q.netissä esiteltyä virheenkäsittelyä, johon voit tosiaan laittaa loggauksen tiedostoon ja tulostaa sitten käyttäjille omavalintaisen virheviestin, ei missään nimessä myslin virheilmotuksia suoraan. Toisekseen, käytä SELECTissä tähden tilalla oikeita kenttien nimiä, näin tiedät heti kyselyä suorittaessa, jos taulusta ei löydy saraketta nimeltä X.
Kiitos tsurigalle noista linkeistä. Tuli vain sellainen asia mieleen, että mitä jos kirjoittaa vain pelkän mysql-lauseen ilman mitään error-lausetta tähän tapaan:
mysql_connect($db_server,$db_user,$db_passwd);
Eli mikä sen error-lauseen tarkoitus edes on? PHP on itselleni vielä melko uusi tuttavuus ja opetellut sitä olen esimerkeistä ja oppaista, joista jotain on aina jäänyt ymmärtämättä. Eli mitä tapahtuu jos sen "errorin" jättää kokonaan pois?
Riippuen PHP:n asetuksista virheviesti joko tulostuu tai on tulostumatta käyttäjälle. Käytännössä käyttäjille ei pitäisi tulostaa mitään virheilmoituksia raakana, vaan kaikki (mahdolliset) virheet tulisi käsitellä serverin puolella ja tulostaa sitten käyttäjälle jotain aivan muuta. Niin ja julkisilla servereillä nuo (raa'at) virheviestit tulee siis kytkeä PHP:n asetuksista pois päältä.
// php.ini display_errors = Off // ei näytetä virheitä käyttäjille log_errors = On // logeista helppo debuggailla error_reporting = E_ALL & ~E_NOTICE | E_STRICT // kaikki paitsi noticet, oman maun mukaan
Aihe on jo aika vanha, joten et voi enää vastata siihen.