Avatar billede webstuff Nybegynder
28. november 2005 - 20:39 Der er 20 kommentarer og
1 løsning

tjekke om eksisterer i tabel

Hey Champs!! ;o)

Jeg har et system hvor man kan oprette sig som bruger!
Men jeg vil gerne have at man ikke kan oprette sig med samme brugernavn som en anden bruger, og heller ikke at man kan oprette en "tom" bruger!!
Det her virker ikke helt efter hensigten!! :-(

$optaget = mysql_query("select * from users where user = '$user'") or die (mysql_error());
if(!isset($optaget)){
echo "Brugernavn optaget";
} else {
if(empty($user) || empty($pass)){
echo "Du skal mindst udfylde brugernavn og kodeord";
} else {
//indsætter i db
}}

den udskriver hele tiden "Brugernavn optaget"
Avatar billede Slettet bruger
28. november 2005 - 20:43 #1
Ret

if(!isset($optaget)){

til

$antal=mysql_num_rows($optaget)
if($antal>=1){
Avatar billede Slettet bruger
28. november 2005 - 20:44 #2
Og egentlig er det en god ide at sætte user-feltet i tabellen til at være unikt.
Avatar billede jakobdo Ekspert
28. november 2005 - 20:45 #3
Eller kortere:

if(mysql_num_rows($optaget)>0){
Avatar billede webstuff Nybegynder
28. november 2005 - 20:47 #4
Smid et Svar :-D
Avatar billede webstuff Nybegynder
28. november 2005 - 20:48 #5
hov havde kun set snadbox første besked da jeg svarede..

hvad gør det hvis man sætter feltet i tabellen til unikt?
Avatar billede jakobdo Ekspert
28. november 2005 - 20:51 #6
unikt er en smart måde, så vil der aldrig kunne oprettes 2.
Så vil din insert fejle.
Avatar billede Slettet bruger
28. november 2005 - 20:51 #7
Så kan det slet ikke lade sig gøre at oprette to brugere med samme brugernavn. Heller ikke hvis to brugere forsøger med samme brugernavn på samme tid. Med dit script ville det kunne lade sig gøre at to brugere prøver samme tid, og bruger2 kontrollerer mens den første er lige mellem kontrollen og selve oprettelsen.
Avatar billede jakobdo Ekspert
28. november 2005 - 20:53 #8
Men med den eksisterende kode, er det usandsyndligt 2 rammer opret på præcis samme tidspunkt!

Omvendt må unik være den optimale løsning! :o)
Avatar billede webstuff Nybegynder
28. november 2005 - 20:57 #9
okay.. er det samme sted som man sætter nok til primær?
Avatar billede Slettet bruger
28. november 2005 - 20:58 #10
Hvis du bruger phpMyAdmin er det vistnok en checkbox til sidst på linien for et felt.
Avatar billede jakobdo Ekspert
28. november 2005 - 21:01 #11
Ja, eller også kan du vælge Struktur -> Aktion, og derunder klikke på ikonet som har teksten: UNIK/UNIQUE og et lille U på.
Avatar billede webstuff Nybegynder
28. november 2005 - 21:30 #12
får den her meddelse:

#1170 - BLOB/TEXT column 'user' used in key specification without a key length
Avatar billede jakobdo Ekspert
28. november 2005 - 21:35 #13
Bruger du blob/text til brugernavn?
Hvis ja, overvej evt: varchar() (længden må du finde hvad som passer dig)
Avatar billede Slettet bruger
28. november 2005 - 21:47 #14
Ja, jeg vil også mene at 64KB er måske lige at skyde over målet hvad angår længden af brugernavne. char eller varchar (eller TINYTEXT) ville nok være mere passende.
Avatar billede webstuff Nybegynder
28. november 2005 - 22:24 #15
den er tinytext ??
Avatar billede Slettet bruger
28. november 2005 - 22:52 #16
Så prøv at lave det om til en varchar på smme størrelse som din TINYTEXT. Hvis du ikke har angivet størrelse, så må 30-50 tegn være ganske rigeligt for et brugernavn.
Avatar billede webstuff Nybegynder
05. januar 2006 - 18:29 #17
Smid et svar :-)
Avatar billede jakobdo Ekspert
05. januar 2006 - 18:48 #18
Hvem?
Avatar billede Slettet bruger
06. januar 2006 - 09:34 #19
Tjah, jeg fk besked på at lægge et i starten af tråden, men så fortsatte diskussionen, og jeg glemte det. Men hvis spørger er enig, synes jeg vi skulle dele lige over.
Avatar billede jakobdo Ekspert
06. januar 2006 - 09:36 #20
Giv du bare point til SandBox!
Avatar billede webstuff Nybegynder
07. januar 2006 - 17:27 #21
Det er ved at være et stykke tid siden, men her pointene..
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester