Avatar billede riefart Seniormester
19. august 2014 - 18:54 Der er 27 kommentarer og
1 løsning

Opslag i database under udfyldelse af formular

Jeg har brug for et script, som efter man i en formular har indtastet sin emailadresse, og går til næste felt, slår op i databasen og undersøger, om email-adressen allerede findes.
Kan nogen hjælpe med dette.
Avatar billede jakobdo Ekspert
19. august 2014 - 22:29 #1
Du kan garanteret lave det på flere måder, men en måde, er at gøre det på følgende:

http://jsfiddle.net/8s2uL9ru/2/

Der kaldes "blur" når et felt forlades.
I det "kald" kan du så kalde serveren bagved, via et ajax kald.
post/get og få json, xml, tekst eller hvad du ønsker retur.

Håber det gav en ide, ellers siger du til.

Det er ikke til at sige hvor meget du kan og vil selv, udfra dit spørgsmål. :o)
Avatar billede jakobdo Ekspert
20. august 2014 - 08:57 #2
Og her er der lidt ekstra kode: http://damgaard-olsen.dk/exp/997059.php

Som du kan se, så er der et "ajax" kald, som kalder php kode og der kan laves hvad som helst.
Avatar billede riefart Seniormester
24. august 2014 - 09:17 #3
Det er stort set ingenting jeg ved om ajax, andet end det giver mulighed for kald til serveren.
Jeg går ud fra at scriptet:
<script>
      $(function(){
        $("#email").blur(function(){
          $.post("997059.php", {email: $(this).val()}, function( data ) {
            if(data.exists){
              alert("E-mail findes");
            }else{
              alert("E-mail findes IKKE");
            }
          },'json');
        });
      });
    </script>
er "ajax"-kaldet.
Jeg har kopieret delene fra de links du har foreslået, og de virker naturligvis fint hos mig, mht validering af email.
Men hvor placerer jeg forespørgslen til databasen på serveren, for at se om emailadressen allerede findes?
Avatar billede jakobdo Ekspert
25. august 2014 - 11:35 #4
filen: 997059.php modtager en $_POST med email og den melder den så retur på.

I mit test her, består den blot af:

if(isset($_POST['email'])){
  echo json_encode(array('exists' => rand(0,1)));
  exit();
}
Avatar billede riefart Seniormester
25. august 2014 - 18:45 #5
Jeg er helt væk :-)
Hvordan kobler jeg en forespørgsel i databasen på.
Jeg bliver nok nødt til at have det trin for trin.
Er præ-novice på området.
Avatar billede jakobdo Ekspert
26. august 2014 - 11:11 #6
Hvor langt er du nået selv?
Kan du få postet email til serveren?
Avatar billede riefart Seniormester
26. august 2014 - 19:42 #7
Jeg har lavet formularen og kan sagtens sende indhold herfra til databasen.
Jeg kunne også lave valideringen, når hele formularen er sendt, men det var for at spare serveren for unødig belastning.
Avatar billede jakobdo Ekspert
26. august 2014 - 22:07 #8
Så prøver jeg at spørge anderledes.
Hvis du kigger på mit eksempel. Hvor langt kan du komme med det og hvor vil du have hjælp?
Jeg gider ikke lave en 100% løsning og så tager du den og spørger om samme problem en anden gang. :o)
Du må prøve selv og jeg skal nok "holde dig i hånden" undervejs.
Avatar billede riefart Seniormester
31. august 2014 - 13:13 #9
Jeg har lagt links til de 2 javascriptfiler samt funktionen ind på
"a_tjek.php" (hvor man opretter sig som medlem), oprettet php-filen "a_tjek_mail.php" (som skal tjekke om emailen allerede er i brug).
Der bliver fint oploadet oplysninger om ny bruger i databasen, men naturligvis ikke lavet et tjek på om email'en allerede er i brug, som jeg ønsker.
Du kan se koden her: http://web-legestuen.dk/a_tjek.php
Så mit spørgsmål er: Hvor og hvordan placerer jeg kaldet til databasen, som tjekker om emailen allerede eksisterer?
Avatar billede keysersoze Guru
31. august 2014 - 14:28 #10
Det første du skal gøre er at få ting til at hænge sammen - din $("#email") skal være $("#email_felt") da det er det du kaldt dit felt.

Hvis du benytter din developer toolbar kan du se hvad der sker, eller som her, ikke sker.
Avatar billede jakobdo Ekspert
31. august 2014 - 16:14 #11
Chrome og F12 skal du begynde at bruge ja, det er din VEN!
Avatar billede riefart Seniormester
31. august 2014 - 16:20 #12
Du har så fuldstændigt ret. Havde brugt name-atributten istedet for id'et. Er nu ændret. Til gengæld får jeg alert hver gang jeg indskriver email.
Avatar billede riefart Seniormester
31. august 2014 - 16:39 #13
Bruger altid Crome og f12, men primært til at se kode. Ved ikke hvordan jeg kan bruge det diagnostisk. Må notere mig det, og lære det ved senere lejlighed.
Avatar billede keysersoze Guru
31. august 2014 - 16:50 #14
Ikke hvis man skriver noget volapyk i email-feltet - så din login i a_tjek_mail.php må være forkert.
Avatar billede riefart Seniormester
31. august 2014 - 17:14 #15
Det var den også. Er nu rettet. Men får nu slet ingen respons, ej heller på brug af aktiv email.
Avatar billede keysersoze Guru
31. august 2014 - 17:40 #16
Kig i din developer toolbars console - enten får du en js fejl eller også returnerer du nu altid 0 (altså er din kode stadig ikke god nok)
Avatar billede riefart Seniormester
31. august 2014 - 18:32 #17
Jeg har kigget, men intet fundet.
Min kode i a_tjek_email.php er:

if(isset($_POST['email'])){
  echo json_encode(array('exists' => rand(0,1)));
  exit();
}
Avatar billede keysersoze Guru
31. august 2014 - 19:12 #18
Så kør din side direkte i browseren og se hvad den returnerer;

http://web-legestuen.dk/a_tjek_email.php
Avatar billede keysersoze Guru
31. august 2014 - 19:15 #19
Hos mig returnerer den konsekvent ingenting, ikke engang 0 - men min mail findes selvfølgelig heller ikke så få tjekket op på din kode igen og giv os evt en mail der findes.
Avatar billede riefart Seniormester
31. august 2014 - 20:03 #20
Jeg har svært ved at tjekke op på koden, da jeg som jeg tidligere har skrevet, er komplet novice, og ikke aner hvad jeg skal kigge efter.
Men en eksisterende mail i databasen kunne være: kontakt@riefart.dk
Avatar billede jakobdo Ekspert
31. august 2014 - 20:18 #21
Prøv at vis koden i a_tjek_email.php
For din a_tjek.php, skyder korrekt mod din "backend" kode.

Den smider email_felt:EMAIL, så så langt så godt. :o)
Avatar billede jakobdo Ekspert
31. august 2014 - 20:19 #22
Ved ikke om fejlen kan være:

a_tjek_email.php vs a_tjek_mail.php (bemærk mail vs email)
Avatar billede riefart Seniormester
31. august 2014 - 21:16 #23
Koden i a_tjek_email.php er:
if(isset($_POST['email'])){
  echo json_encode(array('exists' => rand(0,1)));
  exit();
}

Jeg har ikke en "a_tjek_email.php" men en "a_tjek.php".
Víl du foreslå, at jeg ændrer det ene navn?
Avatar billede keysersoze Guru
31. august 2014 - 21:41 #24
Så intet database-opslag for at kontrollere mod dine data?
Avatar billede jakobdo Ekspert
31. august 2014 - 22:14 #25
Hvis du har dette:

if(isset($_POST['email_felt'])){
  //HER SKAL DU LAVE DIT DATABASE TJEK.
  //og så skal du lave en "retur" værdi om email er fundet eller ej.
  //Måske noget ala:
  if($email_fundet_i_database){
    $ret = true;
  }else{
    $ret = false;
  }
  echo json_encode(array('exists' => $ret));
  exit();
}
Avatar billede riefart Seniormester
02. september 2014 - 21:12 #26
Jeg har dette:

<?php
if(isset($_POST['email']))
    {
    if($stmt=$mysqli->prepare('SELECT `id` FROM `medlemmer` WHERE `email`=?'))
        {
        $stmt->bind_param('s', $_POST['email']);
        $stmt->execute();
        $stmt->bind_result($id);
        $stmt->fetch();
        $stmt->close();
            if ($stmt->num_rows>0)
                {
                $ret = true;
                }
                else
                {
                $ret = false;
                }
  echo json_encode(array('exists' => $ret));
  exit();
        }
    }
?>
Men der bliver ikke afsendt og kontrolleret, når email-feltet forlades.
Avatar billede keysersoze Guru
03. september 2014 - 10:32 #27
Jeg tror du skal bruge lidt mere tid på at lære din developer toolbar noget bedre at kende for den kan altså guide dig rigtig meget på vej.

Jo, der bliver tydeligvis afsendt noget og der kommer også et svar retur - men du afsender parametren "email_felt" og ikke "email" og derfor når din PHP-kode aldrig ind i din if-sætning. Derfor er returværdien tom og da du udelukkende kigger på om exists er true ser det ud som om der ingenting sker.

Om din PHP kode derudover er ok tør jeg ikke sige.
Avatar billede keysersoze Guru
28. september 2014 - 00:21 #28
nå nå
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

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