Avatar billede Milla-Tigerdyr Praktikant
16. oktober 2011 - 13:49 Der er 30 kommentarer og
1 løsning

Tjekke om navnet er taget

Jeg har lige fundet ud af, at man kan oprette to brugere med samme "myusername" hvilket ikke er så godt.
Det har jeg vidst glemt at tænke over..

Men hvilken slags funktion ville man skulle bruge, for at den gik ind og tjekkede i min db (members) om "myusername" allerede er taget?
Mit script, hvor den tjekker om myusername (og alt det andet) opfylder mine krav;

<? session_start();
include("functions.php"); ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<link href="style.css" rel="stylesheet" type="text/css">
<br>
<br>
<?

if($_POST['add_user']) //sikre at man har udfyldt formen via HTML
{

//Helt først informationer fra HTTP POST

//Tjek så om de indtastede data er gyldige. Fx. længde på password og om der bruges ugyldige tegn. Bl.a. med e-mail er der jo et meget konkret regelsæt hér.
$myusername = $_POST['myusername'];
$mypassword = $_POST['mypassword'];
$email = $_POST['email'];
$kon = $_POST['kon'];

$pattern="/^([a-zA-Z0-9\-\_]{4,18})$/";
$phpPattern="#$pattern#";
if(!preg_match($pattern,$myusername))
{
die("Brugernavnet må kun indeholde bogstaver, tal bindestreg (-) og underscore (_) og skal være mindst 4 karaktere og maks. 18");
exit();
}

$pattern="/^([a-zA-Z0-9]{6,24})$/";
$phpPattern="#$pattern#";
if(!preg_match($pattern,$mypassword))
{
die("Passwordet må kun indeholde små og store bogstaver samt tal og skal være mindst 6 karaktere og maks. 24.");
exit();
}

$pattern="/^([a-zA-Z0-9\.\-\_\#\!\$\%\&\'\*\+\/\=\?\^\{\}\|]+)@([a-zA-Z0-9\.\-\_]+)\.([a-zA-Z+]{2,})$/";
$phpPattern="#$pattern#";
if(!preg_match($pattern,$email))
{
die("Der skal indtastes en gyldig e-mail");
exit();
}

//Send infomation til MySQL

$host="localhost"; // Host name
$username="users_camilla"; // Mysql username
$password=""; // Mysql password
$db_name="users_camilla"; // Database name
$tbl_name="members"; // Table name

$con = mysql_connect($host,$username,$password);
if(!$con)
{
die('Kunne ikke forbinde til server:' .mysql_error());
exit();
}
mysql_select_db($db_name);

$ip = $_SERVER['REMOTE_ADDR'];

$query = "INSERT INTO members (myusername,mypassword,email,admin,kon,signupdate,ip) VALUES ('$myusername','$mypassword','$email','0','$kon',NOW(),'$ip')";
mysql_query($query) or die('Der er sket en fejl. Tech-spec:<br>'.$query.'<br>'.mysql_error());

?>
<b><?=$myusername?> er nu blevet oprettet som bruger</b>
<br>
Du kan nu logge ind med de angivede oplysninger.
<?

}

?>
Avatar billede olsensweb.dk Ekspert
16. oktober 2011 - 14:19 #1
1) du kunne sætte unique på navne feltet i db

2)  http://www.eksperten.dk/spm/941105
#4

<?php
$brugernavn = mysql_query("SELECT COUNT(*) FROM DIN_TABLE WHERE USERNAME='".$_POST['brugernavn]."'") OR DIE(mysql_error());
if(mysql_result($brugernavn,0) != 0){
der findes allerede en bruger
}
?>


#5
lave en function i php
<?php
function IsUserCreated($username, $conn){       
    $sql = "select ID from TblUser where username = '$username'";
    $rs = mysql_query($sql, $conn);
    if ($rs){
        $row = mysql_fetch_assoc($rs);
        $id = $row['ID'];       
    }       
    if (strlen($id)==0) $id = 0;
    return $id;   
}

$UserId = IsUserCreated($brugernavn, $conn);
if( ! $UserId) {
    // kode til at oprette bruger
}
else{
    echo "brugernavn optaget";
}
?>


3 ) kigge på AjAX
Avatar billede kjeldsted Novice
16. oktober 2011 - 14:20 #2
Du laver en query til serveren, hvor du henter antallet af rækker hvor myusername er lig det brugere har indtastet. Hvis MySQL'en retunere mere end 0 findes brugernavnet, ellers gør det ikke.

Det er flere måder at gøre det på. Bl.a. både med MySQL COUNT(*) og PHP mysql_num_rows()
Altså noget i stil med (læs lige følgende kode igennem for variabler og så inden du bare "copy-past'er")

[div]$query = "SELECT NULL FROM users WHERE myusername='$myusername'";
$result = mysql_query($query);
$user_exist = 0;
if(mysql_num_rows($result)>0) $user_exist = 1;[div]

Det skulle vist kunne gøre det. Så få du en variabel der er 0 hvis brugernavnet er ledigt eller 1 hvis det er optaget i forvejen.
Avatar billede kjeldsted Novice
16. oktober 2011 - 14:21 #3
Too slow kan jeg se :)
Avatar billede Milla-Tigerdyr Praktikant
16. oktober 2011 - 14:51 #4
Hvor henne i min kode, ville jeg skulle placere det?
Altså, er det lige meget? (selvf. før jeg indsætter alle data'erne)
Avatar billede olsensweb.dk Ekspert
16. oktober 2011 - 15:42 #5
ca sådan (utested)
<?php 
    session_start();
    include("functions.php");
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ (...)
<link href="style.css" rel="stylesheet" type="text/css">
<br>
<br>
<?php
    if($_POST['add_user']){ //sikre at man har udfyldt formen via HTML
    //Helt først informationer fra HTTP POST

    //Tjek så om de indtastede data er gyldige. Fx. længde på password og om der bruges ugyldige tegn. Bl.a. med e-mail er der jo et meget konkret regelsæt hér.
    $myusername = $_POST['myusername'];
    $mypassword = $_POST['mypassword'];
    $email = $_POST['email'];
    $kon = $_POST['kon'];

    $pattern="/^([a-zA-Z0-9\-\_]{4,18})$/";
    $phpPattern="#$pattern#";
    if(!preg_match($pattern,$myusername)){
        die("Brugernavnet må kun indeholde bogstaver, tal bindestreg (-) og underscore (_) og skal være mindst 4 karaktere og maks. 18");
        exit();
    }

    $pattern="/^([a-zA-Z0-9]{6,24})$/";
    $phpPattern="#$pattern#";
    if(!preg_match($pattern,$mypassword)){
        die("Passwordet må kun indeholde små og store bogstaver samt tal og skal være mindst 6 karaktere og maks. 24.");
        exit();
    }

    $pattern="/^([a-zA-Z0-9\.\-\_\#\!\$\%\&\'\*\+\/\=\?\^\{\}\|]+)@([a-zA-Z0-9\.\-\_]+)\.([a-zA-Z+]{2,})$/";
    $phpPattern="#$pattern#";
    if(!preg_match($pattern,$email)){
        die("Der skal indtastes en gyldig e-mail");
        exit();
    }

    //Send infomation til MySQL
    require_once("db_conn.php");
    $tbl_name="members"; // Table name
    $ip = $_SERVER['REMOTE_ADDR'];

    function IsUserCreated($username, $conn){       
        $sql = "select id from members where myusername = '$username'";
        $rs = mysql_query($sql, $conn);
        if ($rs){
            $row = mysql_fetch_assoc($rs);
            $id = $row['id'];       
        }       
        if (strlen($id)==0) $id = 0;
        return $id;   
    }

    $UserId = IsUserCreated($myusername, $con);
    if( $UserId) {
        die("Brugernavn er optaget");
        exit();
    }
    else{
        echo "opret bruger";
        $query = "INSERT INTO members (myusername,mypassword,email,admin,kon,signupdate,ip) VALUES ('$myusername','$mypassword','$email','0','$kon',NOW(),'$ip')";
        mysql_query($query) or die('Der er sket en fejl. Tech-spec:<br>'.$query.'<br>'.mysql_error());
        echo "<b>". $myusername . "er nu blevet oprettet som bruger</b>";
   
        echo "<br>";
        echo "Du kan nu logge ind med de angivede oplysninger.";   
    }

}
?>


db_conn.php
<?php
$host="localhost"; // Host name
$username="users_camilla"; // Mysql username
$password=""; // Mysql password
$db_name="users_camilla"; // Database name
$con = mysql_connect($host,$username,$password);
if(!$con){
    die('Kunne ikke forbinde til server:' .mysql_error());
    exit();
}
mysql_select_db($db_name);
?>
16. oktober 2011 - 17:10 #6
...eller måske en tand simplere.  Du siger, at dit checke script opfylder dine krav (undtagen altså check for duplikat username.)  Så jeg accepterer det og foreslår blot en kort kode til at checke duplikater.  Jeg foreslår at gøre det først, for hvis brugernavnet er duplikeret, er der vel ingen grund til at checke resten.  ($host="localhost"; o.s.v.) op i begyndelsen af koden, og derefter:

...
$myusername = $_POST['myusername'];
$mypassword = $_POST['mypassword'];
$email = $_POST['email'];
$kon = $_POST['kon'];

if(mysql_num_rows(mysql_query("SELECT * FROM members WHERE myusername = '$myusername'")))
{
  echo "Det username er desværre allerede taget.  Prøv venligst med et nyt."
  exit();
}


$pattern="/^([a-zA-Z0-9\-\_]{4,18})$/";
$phpPattern="#$pattern#";
...

Funktionen mysql_num_rows(), som du muligvis allerede ved, tæller hvor mange resultater der kommer fra en query.  Hvis der kommer nul resultater af en søgning efter $myusername kan du gå videre.  Hvis der kommer et eller flere resultater skal du stoppe og exitte.  Jeg bruger så den egenskab, at 0 betragtes som FALSE og tal større end 0 som TRUE.  Derfor, hvis der er for eksempel 1 resultat, altså at usernavnet allerede er brugt, returneres TRUE, og programmet stopper med en melding at usernavnet er taget.

Det var svar på dit direkte spørgsmål (som jeg håber vil være dig til nytte).  Jeg kan så ikke dy mig for at observere, at hvis en bruger har lavet fejl i password eller email eller er kommet for skade at vælge et allerede taget usernavn, så ville det nok være mere brugervenligt at returnere useren til den foregående formular for endnu et forsøg i stedet for blot at exite.  Det vil du måske vende tilbage til ved lejlighed i et nyt spørgsmål.  (Det er 'dyrt' med mange spørgsmål når man ikke har mange points at tage af, men jeg kan ikke forestille mig, at kvalificerede medlemmer ville undlade at reagere på et spørgsmål med for eksempel 15 points fra en points-fattigt spørger.)
Avatar billede showsource Seniormester
16. oktober 2011 - 17:25 #7
Vil helt klart vælge at lade feltet med brugernavn være UNIQUE som foreslået i starten.
16. oktober 2011 - 17:31 #8
Det holder jeg i dig med (unikt brugernavn.)  Men det kan være en fordel at checke om brugernavnet er lovligt (unikt) før du prøver at indsætte det i database tabellen og så få en fejlmelding 'die('Der er sket en fejl. Tech-spec....'
Avatar billede olebole Juniormester
16. oktober 2011 - 18:24 #9
<ole>

Hvis det skal være smartere at spørge først, bør man nok bruge LIMIT 1, så databasen ikke bruger kræfter på at lede efter flere rækker, når den allerede har fundet én.

Du kan også lade feltet være unikt og så reagere på if (mysql_errno()==1062) efter forsøget på at indsætte

/mvh
</bole>
16. oktober 2011 - 19:15 #10
Milla-Tigerdyr, undskyld at jeg misbruger din tråd til selv at lære mere.  Olebole, det var mit indtryk (muligvis forkert,) at  database programmet gør 'præsentations' jobs såsom order og limit til sidst.  Tag en kode som SELECT p.navn, k.klubnavn FROM personer p JOIN klubber k ON p.klub = k.id WHERE p.id = 16 ORDER BY k.klubnavn LIMIT 5.  Der forstod jeg, at databasesystemet først udførte JOIN'en således at den laver en intern tabel med alle rækker i personer joinet med alle rækker i klubber (hvis der er 100 personer og 25 klubber får tabellen 2500 rækker), derefter ON hvor laver en ny tabel med kun de rækker hvor, i dette eksempel, p.klub = k.id, derefter WHERE hvor den laver endnu en tabel kun med de rækker, i dette tilfælde, hvor p.id = 16, derefter en tabel hvor den kun tager de søgte felter, p.navn og k.klubnavn, i betragtning.  Så er selve søgningen gjort, og så kommer præsentationen hvor den ordner rækkerne i resultatet og limit'er resultatet som specificeret.  (Det var vist sådan Codd forklarede det i sine oprindelige skrifter. Det er pudsigt, engang i slutningen af 1970'erne faldt jeg over en bog af Codd, som jeg fandt ganske facinerende.  Først langt senere mødte jeg relational database manage systems, og da jeg læste bogen, tror jeg, eksisterede de endnu ikke eller kun eksperimentalt.)  Hvis det stadig holder stik, altså at limit kommer sidst, så sparer det vel stort set ikke databasens tid.  Men skønt jeg så nogenlunde kan lave queries har jeg ikke den store viden om de indre funktioner og er ivrig efter at lære mere.

Og Milla, undskyld igen.  (Til gengæld stavede jeg vist dit navn rigtigt, så jeg forbedrer mig.)
Avatar billede olebole Juniormester
16. oktober 2011 - 19:18 #11
Det er forkert. Hvis du sætter en limit, vil databasen ikke fortsætte med at lede, når limit er opfyldt
Avatar billede olebole Juniormester
16. oktober 2011 - 19:32 #12
PS: Limit giver også god mening ved UPDATE. Her er der jo ikke tale om 'præsentation', hvorfor GROUP eller ORDER ikke giver mening
Avatar billede Milla-Tigerdyr Praktikant
17. oktober 2011 - 10:24 #13
Øeøeøøehm... Jeg tror lige jeg forsøger mig med ronols forslag, skal jeg stadig sætte myusername som unique?
Avatar billede Milla-Tigerdyr Praktikant
17. oktober 2011 - 10:32 #14
Ronols forslag virker helt fint uden myusername som UNIQUE, men skal jeg alligevel sætte den som UNIQUE?
Avatar billede olsensweb.dk Ekspert
17. oktober 2011 - 11:09 #15
#14
det vil være en ekstra sikkerhed, og kan ikke skade, men om den så bruger lidt recurser på at teste er en anden ting

jeg ville overveje at følge olobole's råd fra #9
Hvis det skal være smartere at spørge først, bør man nok bruge LIMIT 1, så databasen ikke bruger kræfter på at lede efter flere rækker, når den allerede har fundet én.



istedet for at retunerer når du har fundet 1 fejl kunne du finde samtlige fejl, give beskederne, og stoppe til sidst hvis der er fejl.

flowet kunne se ca sådan ud, "overflødig code" skåret vær

<?php
    if($_POST['add_user']){ //sikre at man har udfyldt formen via HTML

    $error=0;

    if(!preg_match($pattern,$myusername)){
        echo "Brugernavnet må kun indeholde bogstaver, tal bindestreg (-) og underscore (_) og skal være mindst 4 karaktere og maks. 18";
        echo "<br/>";
        $error=1;
    }
    if(!preg_match($pattern,$mypassword)){
        echo "Passwordet må kun indeholde små og store bogstaver samt tal og skal være mindst 6 karaktere og maks. 24.";
        echo "<br/>";
        $error=1;
    }
    if(!preg_match($pattern,$email)){
        $echo "Der skal indtastes en gyldig e-mail";
        echo "<br/>";
        $error=1;
    }
    $UserId = IsUserCreated($myusername, $con);
    if( $UserId) {
        echo "Brugernavn er optaget";
        echo "<br/>";
        $error=1;
    }
   
    if($error){
        exit();       
    }
    //Send infomation til MySQL
    else{       
        echo "opret bruger";
    }
}
?>
Avatar billede Milla-Tigerdyr Praktikant
17. oktober 2011 - 11:13 #16
Men..så mangler der jo en mass af mit kode?S:
Og det der pattern er jo forskelligt fra email,brugernavn og password?
Avatar billede olsensweb.dk Ekspert
17. oktober 2011 - 11:30 #17
hvad bruger følgende til ??
$phpPattern="#$pattern#";
$tbl_name="members"; // Table name

for mig ser de overflødige ud i viste code, men der kan selvføgelig være noget af siden du ikke visser

et html doc structur ser sådan ud:
<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
    <title></title>
    <style type="text/css">
    </style>
    <script type="text/javascript">
    </script>
</head>
<body>
</body>
</html>


#16, jeg skrev "overflødig code fjernet", det var bevist sat i gåseøjne.
hele coden ser sådan ud:

<?php 
    session_start();
    include("functions.php");
    require_once("db_conn.php");
    function IsUserCreated($username, $conn){       
        $sql = "select id from members where myusername = '$username' LIMIT 1";
        $rs = mysql_query($sql, $conn);
        if ($rs){
            $row = mysql_fetch_assoc($rs);
            $id = $row['id'];       
        }       
        if (strlen($id)==0) $id = 0;
        return $id;   
    }
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<link href="style.css" rel="stylesheet" type="text/css">
<br>
<br>
<?php
    if($_POST['add_user']){ //sikre at man har udfyldt formen via HTML
    //Helt først informationer fra HTTP POST

    //Tjek så om de indtastede data er gyldige. Fx. længde på password og om der bruges ugyldige tegn. Bl.a. med e-mail er der jo et meget konkret regelsæt hér.
    $myusername = $_POST['myusername'];
    $mypassword = $_POST['mypassword'];
    $email = $_POST['email'];
    $kon = $_POST['kon'];
    $error=0;
   
    $pattern="/^([a-zA-Z0-9\-\_]{4,18})$/";   
    if(!preg_match($pattern,$myusername)){
        echo "Brugernavnet må kun indeholde bogstaver, tal bindestreg (-) og underscore (_) og skal være mindst 4 karaktere og maks. 18";
        echo "<br/>";
        $error=1;
    }

    $pattern="/^([a-zA-Z0-9]{6,24})$/";   
    if(!preg_match($pattern,$mypassword)){
        echo "Passwordet må kun indeholde små og store bogstaver samt tal og skal være mindst 6 karaktere og maks. 24.";
        echo "<br/>";
        $error=1;
    }

    $pattern="/^([a-zA-Z0-9\.\-\_\#\!\$\%\&\'\*\+\/\=\?\^\{\}\|]+)@([a-zA-Z0-9\.\-\_]+)\.([a-zA-Z+]{2,})$/";   
    if(!preg_match($pattern,$email)){
        echo "Der skal indtastes en gyldig e-mail";
        echo "<br/>";
        $error=1;
    }   

    $UserId = IsUserCreated($myusername, $con);
    if( $UserId) {
        echo "Brugernavn er optaget";
        echo "<br/>";
        $error=1;
    }   
   
    if($error){
        exit();
    }
    //Send infomation til MySQL
    else{
        $ip = $_SERVER['REMOTE_ADDR'];           
        $query = "INSERT INTO members (myusername,mypassword,email,admin,kon,signupdate,ip) VALUES ('$myusername','$mypassword','$email','0','$kon',NOW(),'$ip')";
        mysql_query($query) or die('Der er sket en fejl. Tech-spec:<br>'.$query.'<br>'.mysql_error());
        echo "<b>". $myusername . "er nu blevet oprettet som bruger</b>";   
        echo "<br>";
        echo "Du kan nu logge ind med de angivede oplysninger.";   
    }
}
?>
Avatar billede Milla-Tigerdyr Praktikant
17. oktober 2011 - 11:33 #18
Super, og det virker skam stadig.
Skal jeg sætte unique på myusername?
Avatar billede olsensweb.dk Ekspert
17. oktober 2011 - 12:27 #19
>Skal jeg sætte unique på myusername?
som jeg skrev i #15, det vil være en ekstra sikkerhed, og kan ikke skade, men om den så bruger lidt recurser på at teste er en anden ting
jeg plejer ikke at gøre det, da jeg lave min test uden for db, og kan give min egen mere sigende fejlbesked, istedet for den db kommer med.
Avatar billede Milla-Tigerdyr Praktikant
17. oktober 2011 - 12:30 #20
Så det betyder egentlig ikke det store, om jeg gør det eller ej?
Avatar billede olsensweb.dk Ekspert
17. oktober 2011 - 12:39 #21
>Så det betyder egentlig ikke det store, om jeg gør det eller ej?
Nej ikke når du har sikret dig på anden måde (tester i php)
Avatar billede olebole Juniormester
17. oktober 2011 - 20:00 #22
I princippet gør det ikke det store for os andre - uanset, hvad du måtte gøre. Udfra dine kommentarer kunne det tyde på, du får allergiske reaktioner af felter, sat til UNIQUE - og så er det måske bedre at undgå det(?)
Avatar billede Milla-Tigerdyr Praktikant
17. oktober 2011 - 20:06 #23
Olebole, ehm det ved jeg ikke, har ikke brugt det før :)

Men hvem skal have point?:S
Avatar billede olebole Juniormester
17. oktober 2011 - 20:22 #24
Jeg samler ikke, så jeg skal ikke have nogen  =)

Bruger du andre former for index'es i forbindelse med din DB?
17. oktober 2011 - 20:22 #25
Milla, nu forstyrrer jeg din tråd igen for min egen sag, jeg håber du tilgiver. 

Olebole (hvis du stadig kikker med), du fik godt nok sat mine tanker igang med #9 og #11.  Jeg spurgte videre, http://www.eksperten.dk/spm/949352 , og er nu kommet til en forståelse, støttet af andre.  Dermed ikke sagt, at det ikke kan være en misforståelse, men jeg betragter chancen for mindre, end hvis det kun var min egen forståelse.

Altså: ved LIMIT 5 (for eksempel) returneres de fem første resultater ifølge query klausulerne, hvilket ikke nødvendigvis er de første fem resultater søgemaskinen støder på.  Derfor må, som udgangspunkt, søgemaskinen fuldføre søgningen og sortere resultaterne for at vide hvilke fem den skal returnere.

Men der er tilfælde, hvor søgemaskinen har mulighed på forhånd at kende rækkefølgen af resultaterne, såsom når der søges på og ORDER BY på et felt der er indekseret.  I sådanne tilfælde vil søgemaskinen finde de fem første og så stoppe. 

Det er hvad jeg nu har forstået.  Jeg takker for din hjælp til at udvide min viden.

Fordi gevinsten ved simple søgninger i små tabeller må være lille, tror jeg nok jeg vil vælge fortsat at se bort derfra i fremtidige spørgsmål jeg måtte deltage i.  (Du kan så tilføje det, hvis du vil.)
Avatar billede Milla-Tigerdyr Praktikant
17. oktober 2011 - 20:27 #26
olebole, okay :)
Hvad mener du med det? Altså jeg bruger primary key?:)


Christian_Belgien, det er i orden :)
Avatar billede olebole Juniormester
17. oktober 2011 - 20:44 #27
Så bør du hurtigst muligt tjekke op på, hvad indeksering er for noget. Du kan ikke lave bare nogenlunde effektive database drevne applikationer uden. Det er ekstremt vigtigt at indeksere tabeller udfra, hvordan søgningerne foretages!
20. oktober 2011 - 21:53 #28
Tråden gik ligesom i stå.  Jeg beklager min andel til forvirringen ved at starte en sidetråd (indlæg #10, #11, #12, #25) (men jeg kan fortælle, at det medvirkede til min egen udvikling.)  Jeg forstår hændelsesforløbet således:

1.  Du fik løst det problem du rejste i tråden.  Du fortæller i #14, at Ronols' forslag virker.  Så det må vel være en success.

2.  Så kom der to emner mere op i løbet af tråden:

a.  Om usernavn skal sættes som unique.  Svaret var, i realiteten, at 'det kan ikke skade.' (Det kan vist oversættes til 'det kan gøres på begge måder.')

b.  Betydningen af at indexere database tabeller.

Jeg vil vove et forslag:

a. at du beder om svar der hvor den direkte hjælp til det stillede spørgsmål kom fra og så accepterer det svar og lukker spørgsmålet.  (Så står det heller ikke længere som åbent i min (og andres) liste af indlæg.)

b. at du reflekterer over de andre emner når du kommer så langt. Du er (ligesom jeg og mange andre) i færd med at udvikle din kendskab til programmering, og rom blev ikke brygget på en dag.
Avatar billede olebole Juniormester
20. oktober 2011 - 22:26 #29
2a): Det meste kan gøres på mange måder, men ofte er der kun én god måde  *o)

Under alle omstændigheder er det helt elementært, at feltet username er indekseret, hvis det indgår i en WHERE klausul i en query. Det ville være forkert at reducere en indeksering til, at 'det ikke kan skade' - eller til, at 'det kan gøres på begge måder'
Avatar billede Milla-Tigerdyr Praktikant
24. oktober 2011 - 14:08 #30
Nu er jeg totalt forvirret..


Men ronols, gider du smide et svar?
Avatar billede olsensweb.dk Ekspert
24. oktober 2011 - 14:27 #31
får du her
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