codeigniter, opret bruger / tjek bruger

Tags:    php

Hej, jeg er igang med codeigniter, men jeg har et lille problem og det er at jeg godt kan oprette den samme bruger 2 gange, og jeg kan ikke få den til at gå over på en side som hedder "oprettet.php", altså en view fil.

her er min kode, håber i kan se hva jeg gør galt
Fold kodeboks ind/udPHP kode 





To ting:

#1: Hvis du siger where() og derefter where() igen overskriver du den første where(). Dermed tjekker den reelt kun på om passwordet findes. Du behøver slet ikke tjekke passwordet, eftersom der ikke skal være to brugere med samme brugernavn uanset om deres passwords er ens eller ej.

#2: Du laver "return" i din submit() action inden du kan lave dit redirect. Efter dit return stopper kørslen af funktionen, og du kan dermed ikke nå til redirect(). Du skal slet ikke returne data i din Controller, så bare fjern return helt.

Derudover redirecter du til noget der hedder oprettet_view. Det betyder at du henviser brugeren til ditdomæne.dk/oprettet_view/

Medmindre du har en controller der hedder oprettet_view, så er det forkert. Hvis du vil vise oprettet_view-view filen skal du istedet sige $this->load->view('opretttet_view');



Indlæg senest redigeret d. 23.10.2010 01:32 af Bruger #8223
wow :O gode guldkorn dér :D tusind tak det virker nu, ved bare ikke lige helt hvis nu brugernavnet er optaget hvordan får jeg sendt en besked til brugeren så han kan se det er optaget, er der noget med det der validation helper hvor man kan skrive en besked selv ?

tak ihvertfald :D



du tjekker allerede om brugernavnet findes. I din ovenstående kode skriver du return false. Istedet for at sige return false kan du lave $data['fejl'] = 'brugernavnet er optaget' og så sende det med i din $this->load->view - og så i viewfilen skrive <?php if(isset($fejl)){ echo $fejl; }?> der hvor du vil have den.

Når du har styr på det vil jeg anbefale dig at lægge database-koden ind i en model og at lave brugernavns-checket som en callback-funktion i en validation rule, men den slags kan du godt vente med til du er lidt mere verseret i viewfiler og controllerfunktioner.

Hvis du har flere spørgsmål skyder du bare løs :)



Indlæg senest redigeret d. 23.10.2010 13:17 af Bruger #8223
tror jeg vil prøve med call-back det virker mere "normalt" at gøre :D, men det med at smide database filerne ind i en model fil er det ikke dumt at oprette en model fil bare for at smide 2 linier kode ind, og i en model fil kan man ikke hente input felternes værdi ud, altså $this->input->post('username')



Jo, alle libraries, inklusiv input-librariet, er tilgængelige i modeller, sålænge parent::Model() får lov at køre(dette gør den automatisk hvis du ikke laver din egen constructor), så du kan sagtens lave både validation, input->post() og andre ting i modeller.

Det er aldrig dumt at smide database-håndtering ind i modeller, uanset hvor lidt/meget det drejer sig om - modeller er beregnet til at være datalaget.

Det vil betyde at du har noget der minder om dette:

controller:
submit(){
//en masse validation-rules, og hvis alt er korrekt:
if($this->validation->run(){
$this->users_model->create_user();
}
}



okay :), jeg prøvede nemlig bare på et tidspunkt at ville gøre som du skriver men så kunne jeg ikke få fat i det information som brugeren skrev i input felterne, men må lige prøve det igen :).

når jeg bruger de der inbyggede form helpere ved du så hvordan jeg kan få sat en class ind lige her

<input class="farve" name="brugernavn" />

kan nemlig ikke lige finde noget på codeigniters hjemmeside omkring det, ved heller ikke helt hvad jeg skal søge efter..

men det er det her jeg mener

form_input('brugernavn', set_value('brugernavn'));



Du siger bare:
Fold kodeboks ind/udKode 

det tredje argument er "alt muligt andet" du vil have med i tagget.

Alternativt kan du bruge 1 argument, et array, fx:
Fold kodeboks ind/udKode 




ahh nice tusind tak :) lære fanme meget lige nu :D, jeg har os det typiske problem med æøå at det bliver mærkelige tegn, i min config fil har jeg sat den til

$config['charset'] = "iso-8859-1";

og i min header.php fil hedder den os iso-8859-1

min database er bare standard: latin1_swedish_ci





har du et <meta http-equiv="content-type" content="text/html;ISO-8859-1"/> tag i dit <head>?

Hvad charset kører din editor med?

Alternativt kan du prøve at ændre alting til ISO-8859-15 istedet for ...59-1.

Selvom det allerbedste er at bruge UTF-8, men så skal du til at konvertere din database.



rettede det til UTF-8 og nu virker det :D Tusind mange tak :)



t