Eli tarkoituksena olisi lisätä MySQL-tietokantaan artikkeleja. Jokaisella artikkelilla on oma 8-numeroinen ID. Tämä ID luodaan satunnaisesti, eikä kahta samanlaista voi siis olla.
Käytän ID:n luomiseen itse tekemääni (=ei liian tehokasta), ja vielä osittain keskeneräistä funktiota, joka luo annetun pituisen satunnaisen numeron. En tiedä kuinka hieno tai guru-approved tämä on, mutta tässä se silti on, istuu ja mollaa älykkyttänne:
function generateUniqueCode($length, $table, $slot){
$nwhiler = 0;
$nmax = "";
while($nwhiler < $length){
$nmax = $nmax . "9";
$nwhiler++;
}
$number = sprintf("%0".$length."d", rand(0,$nmax));
return $number;
}Siinä on ylimääräisiä tietoja $table ja $slot, joita olisi tarkoitus käyttää kannasta tarkistamiseen, josko samanlainen koodi on jo olemassa ja sitten kutsuu itseään uudelleen.
Tämä ID-sarake (nimeltään "rid") on UNIQUE. Muistaisin jostain SQL-kirjasta joskus lukeneeni, että jos UNIQUE-sarakkeeseen koettaa syöttää jotain, joka siellä jo on, se ei anna niin tehdä. Jos tämä on totta, millaisen virheilmoituksen se antaa, ja miten sen voisi valjastaa tähän?
Kiitos.
Mikä tarkoitus on sillä, että jokaiselle artikkelille tulee oma pitkä ID-numero? Jos haluaa piilottaa artikkelien lisäämisjärjestyksen, onnistuu se järkevämmin sillä, että muodostaa lyhytotsikon artikkelin otsikosta tai käyttää otsikkoa sellaisenaan hakuehtona. Saapahan paremman Google-rankingin samalla :P
Hmm? Jos älysin oikein, ei se välttämättä toimisi... artikkeleja voi kirjoittaa kuka pölli tahansa, joten väistämättä tulee varmasti samannimisiä artikkeleja. ID:tä olisi lähinnä tarkoitus käyttää urlissa, kuten
index.php?s=art&id=XXXXXXXX
Joka on varmasti (ainakin omasta mielestäni) parempi kuin joku
index.php?s=art&title=S%E4%E4%20on%20t%E4n%E4
Eikä tämä artikkelihommeli ole ainoa, mihin tarvitsen uniikkia ID:tä... onhan se hyvä osata vastaisuudessakin? Vai?
Mikset sitten käytä vaan auto incrementiä? Satunnaiset ID:t lisää vaan turhaa prosessointia eikä niillä ole minkäänlaista informaatioarvoa.
Lyhytotsikoilla tarkoitin muotoilua tyyliin title=saa_on_tanaan_viilea - ja siihen voi vielä lisätä päivämäärän tai laskurin, jolloin ei haittaa samanlaiset otsikot.
Nyt tulee uusia sanoja... mikä on auto increment ja miten käytän sitä?
lainaus:
Nyt tulee uusia sanoja... mikä on auto increment ja miten käytän sitä?
Tietokannan esim. MySQL toiminto luomaan aina yhden isomman arvon. Erittäin käyttökelpoinen juuri ID-numeroissa.
CREATE TABLE `kategoriat` ( `ID` INT NOT NULL AUTO_INCREMENT , PRIMARY KEY ( `ID` ) );
Auto increment löytyy myös suoraan esim. phpMyAdminissa pudotusvalikosta, vasemmalla puolen siitä kun voi valita Primary, Unique ja Index -valintalaatikoiden osalta. Auto incrementit kannattaa tehdä primarynä.
Kiitos teille molemmille!
Aihe on jo aika vanha, joten et voi enää vastata siihen.