Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Uniikki tieto

Sivun loppuun

SysRq868 [08.10.2007 21:30:54]

#

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.

Merri [08.10.2007 22:46:29]

#

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

SysRq868 [08.10.2007 23:03:47]

#

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%E4n%20viile%E4hk%F6


Eikä tämä artikkelihommeli ole ainoa, mihin tarvitsen uniikkia ID:tä... onhan se hyvä osata vastaisuudessakin? Vai?

Merri [08.10.2007 23:20:14]

#

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.

SysRq868 [08.10.2007 23:23:51]

#

Nyt tulee uusia sanoja... mikä on auto increment ja miten käytän sitä?

Teuro [09.10.2007 00:00:30]

#

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` )
);

Merri [09.10.2007 00:01:38]

#

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

SysRq868 [09.10.2007 00:08:13]

#

Kiitos teille molemmille!


Sivun alkuun

Vastaus

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

Tietoa sivustosta