INSERT INTO skal være unik

kongen

kongemedlem
Hvis jeg setter inn data fra et skjemafelt til en database så må dataen som lagres bli unik.

Hvis jeg forsøker å legge inn "kylling" så går dette bra den første gangen, mens neste gang så må det lagres som "kylling-2" og deretter "kylling-3" osv.

Hvordan gjøres dette med php/mysql?
 

complx

New Member
Dersom du ikke bruker Word Press og tenker å gjøre dette med regn PHP. vil jeg anbefale deg noe sånt som dette.

Sjekk først om det allerede eksisterer en rad i din DB med verdien "Kylling".

Kjør så igjennom en IF statment der du gir to mulig utvalg.

IF(Det er allerede kylling i dB){
Dersom det er "Kylling" i din DB, tar du å legger til +1 på verdien brukeren har skrevet til.

letteste måten er vell rett og sett og lagre verdien i en ny variable der du legger itl +1.

$item = $item . 1;

så kjører du denne variablen inn i din DB.

}ELSE{
INSERT INTO DB på vanlig måte.
}
 

quicktech

Medlem
IF(Det er allerede kylling i dB){
Dersom det er "Kylling" i din DB, tar du å legger til +1 på verdien brukeren har skrevet til.

letteste måten er vell rett og sett og lagre verdien i en ny variable der du legger itl +1.

$item = $item . 1;

så kjører du denne variablen inn i din DB.

}ELSE{
INSERT INTO DB på vanlig måte.
}

Det er nok ikke fullt så enkelt fordi det vil forårsake records som dette:

Kylling
Kylling1
Kylling11
Kylling111
 

complx

New Member
@Quicktech.

Helt korrekt til vil bli som du har skrevet over. Men det var det enkleste jeg kom på i farta. Ikke helt opptimalt, men man får hvertfall unike verdier:)

Beste er vell å sjekke om det allerede står et tall bak "Kylling", og deretter + på 1 til det tallet som allerede står der. Da vil man få

Kylling
Kylling1
Kylling2
osv.

Beste måten å gjøre dette på er vell å hente ut siste bokstav eller tall fra DB spørringen.

Bruk f.eks $checkString = substr("Kylling", -1); // Dette vil gi $checkStrin verdi g.
Deretter kan du jo sette opp en IF statment som sjekker at dersom $checkString returnerer en bokstav legger man til kun 1. Dersom $checkString returnerer et tall tar man dette tallet og plusser på 1. ;)
 

Pong

Jeg selger sʇɥƃıluʍop :)
Ser at referansen til WP's bibliotek ikke var helt rett, så jeg prøvde litt.
Hvis du foretar
Kode:
SELECT perma FROM tab WHERE perma REGEXP "^<dintittel>([-][0-9])?$" ORDER BY perma DESC
så får du en liste med permalenker.

Hvis den første i listen er likt din tittel, men med '-<et nummer>' bak, så må du øke dette nummeret; (int) str_replace( 'din tittel'+'-', '' ) gir deg dette nummeret.

Tror jeg.
 

kongen

kongemedlem
Her var det mange gode forslag. Takk skal dere ha :)

Tror kanskje jeg skal teste ut Wordpress sin kodesnutt først.
 
Topp