Avatar billede webcreator Nybegynder
30. maj 2003 - 16:55 Der er 27 kommentarer og
1 løsning

Tjek om lignende post eksistere. Se bort fra store/små bogstaver

Hej.

Jeg har et problem med min database. Jeg kan faktisk oprette hundredevis af ens poster, blot ved at ændre et enkelt bogstav til stort bogstav. Fx :
username : test
username : Test
username : tEst
username : teSt

Findes der en løsning på dette problem ?
Avatar billede Slettet bruger
30. maj 2003 - 16:59 #1
hmm har du mulighed for at lukke et par af dine afsluttede spørgsmål ved lejlighed:
http://www.eksperten.dk/bruger.phtml?sort=%40&order=asc&catid=0&q=&navn=webcreator&option=22
Avatar billede webcreator Nybegynder
30. maj 2003 - 17:03 #2
Ah, dem havde jeg faktisk glemt alt om. Skyldes at jeg selv fandt løsningerne. Men giver bare folk points. Ellers får jeg vel hug :-)
Avatar billede webcreator Nybegynder
30. maj 2003 - 17:42 #3
Hvis det ikke umiddelbart er muligt, så vil jeg da også gerne vide det.
Avatar billede webcreator Nybegynder
30. maj 2003 - 18:04 #4
Findes der ikke noget a la : if ($user == $usr1 or $user LIKE $usr1) { ...
Avatar billede webcreator Nybegynder
30. maj 2003 - 18:04 #5
Egentlig burde førstnævnte vel kunne undlades, hvis der findes en funktion i stil med LIKE
Avatar billede fangel Nybegynder
30. maj 2003 - 18:17 #6
tænkte på at MySQL måske havde en lowercase funktion... altså sådan her

SELECT count(*) FROM users WHERE lowercase(navn) == lowercase('$navn')

men ved ikke om en sådanne funktion findes... prøv at undersøg det...

Morten
Avatar billede webcreator Nybegynder
30. maj 2003 - 18:28 #7
Hvad skulle den gøre godt for ?
Kan jeg så KUN add'e brugernavne med små bogstaver ?
Avatar billede fangel Nybegynder
30. maj 2003 - 18:30 #8
nej, men når du sammenligner laver du dem i databasen til lowercase, sammen med det indtastede... i databasen kommer de til at stå rigtigt, men ved sammenligning bliver de til små bogstaver...

hvis du forstår...

Morten
Avatar billede webcreator Nybegynder
30. maj 2003 - 18:31 #9
aha, lyder rigtigt smart.. vil jeg lige kigge lidt på
Avatar billede fangel Nybegynder
30. maj 2003 - 18:34 #10
evt lav det med PHPs funktion, men så skal man løkke sig gennem alle poster... nemmere hvis MySQL kunne selv...
Avatar billede webcreator Nybegynder
30. maj 2003 - 18:34 #11
yep, helt enig.
Avatar billede webcreator Nybegynder
30. maj 2003 - 18:39 #12
Hm, kan ikke finde noget i retning af lowercase :o/
Avatar billede webcreator Nybegynder
30. maj 2003 - 18:41 #13
Mon vi virkelig har fundet en ting her, som MySQL Ikke kan ? :)
Avatar billede fangel Nybegynder
30. maj 2003 - 18:41 #14
uvidst...
Avatar billede webcreator Nybegynder
30. maj 2003 - 18:48 #15
Har du et eksempel på, hvordan det kunne laves vha. PHP ?
Avatar billede fangel Nybegynder
30. maj 2003 - 18:49 #16
aha... sådan her...

---
<?php

$username = "JegErTotalSej";
$tmp_usr = strtoupper($username);
$query = mysql_query("SELECT count(*) FROM tabel WHERE UPPER(bruger_felt) == '$tmp_usr'")or die(mysql_error());
$data = mysql_fetct_row($query);
if($data[0] > 0){
  echo "brugeren findes...";
  exit;
}

?>
---

jeg ved ikke om det er helt sådan syntaxen er, men prøv engang... har fundet funktionen UPPER i MySQL manualen... (punkt 6.3.2.2)

Morten
Avatar billede detox Nybegynder
30. maj 2003 - 18:50 #17
I manualen står der osse:
To find names containing a lowercase or uppercase `w', use this query:

mysql> SELECT * FROM pet WHERE name REGEXP "w";
Avatar billede detox Nybegynder
30. maj 2003 - 18:51 #18
Ups. Kilde: 3.3.4.7 Pattern Matching
Avatar billede fangel Nybegynder
30. maj 2003 - 18:54 #19
detox => ja, men jeg tror det er overkill at bruge reg.exp. til sådan noget...
Avatar billede detox Nybegynder
30. maj 2003 - 18:58 #20
dea_pg => Ja, det er klart, hvis man kan nøjes med UPPER c",)
Avatar billede webcreator Nybegynder
30. maj 2003 - 19:49 #21
Dea > Hvor sikker er du i den kode du har lavet ? Det driller ret voldsomt. Så jeg gider ikke bruge timer på det, hvis det muligvis er forkert :)
Avatar billede fangel Nybegynder
30. maj 2003 - 19:57 #22
jeg er ikke ret sikker ;)

men det kan laves i PHP på denne måden:

---
<?php

$onsket_bruger = "TeST";

$usr_str = strtoupper($onsket_bruger);
$findes = false;
$query = mysql_query("SELECT bruger_felt FROM bruger_tabel")or die(mysql_error());
while($data = mysql_fetch_row($query)){
  if(strtoupper($data[0]) == $usr_str){
    $findes = true;
    break;
  }
}
if($findes) echo "brugeren findes allerede!";
else echo "brugeren findes ikke, endnu...";

?>
---

men dette tager betydeligere længere tid en hvis du kunne få MySQL til det!

Morten
Avatar billede erikjacobsen Ekspert
30. maj 2003 - 19:58 #23
opret dit felt i mysql med attributten binary - så skelner den mellem store
og små bogstaver.
Avatar billede fangel Nybegynder
30. maj 2003 - 20:01 #24
erik => spørgsmålet går jo på at den ikke skal det...

det skal _ikke_ være muligt at oprette "test", "TEST", "Test", "tEst" osv...

Morten
Avatar billede webcreator Nybegynder
30. maj 2003 - 20:24 #25
Nemlig, Dea :-)

Prøver lige dit nye forslag, Morten
Avatar billede webcreator Nybegynder
30. maj 2003 - 20:45 #26
Hm, jeg tror sørme jeg fik det til at virke. Det var vist også ret heldigt, at jeg fik efterset den PHP-fil, hvori brugerne oprettes. Den var fyldt med dumme fejl :)

Mange tak for hjælpen. Jeg sikre mig lige, at det virker 100 % - men det ser sådan ud :-)
Avatar billede fangel Nybegynder
30. maj 2003 - 20:50 #27
så lægger jeg et svaa'r, hvis du skulle få brug for det ;)
Avatar billede webcreator Nybegynder
30. maj 2003 - 20:57 #28
jamen det var jo meget belejligt. Tak for det :-)
Og tak for hjælpen.
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