Just nu i M3-nätverket
Gå till innehåll
happyfejs

Kontrollera om epost redan finns i databas

Rekommendera Poster

Hello..

 

Håller på att gör ett formulär för att lägga till användare, men man ska bara kunna lägga till en epost en gång.

 

Hur gör jag för att direkt efter man skrivit in sin epost i formuläret kolla om den redan existerar i databasen och då inaktivera "lägg till" knappen?

 

Tack på förhand

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Med jQuery skulle du kunna använda något i stil med följande, där AddButton är id för Lägg till-knappen och emailField är id för text-fältet.

"dinCheckFil.ashx" är din server-handler (om du använder asp.net) som kollar adressen och returnerar strängen "1" om den existerar.

(Har inte testkört scriptet, men jag tror jag fick till det korrekt)

Du behöver naturligtvis även inkludera en script-referens till jQuery-biblioteket.

 

jQuery(document).ready(function () {
jQuery('#emailField').blur(function () {
	var email = jQuery(this).val();
	jQuery.ajax({
		type: "POST",
		url: "dinCheckFil.ashx",
		async: true,
		data: "email=" + email,
		success: function (status) {
			if (status == "1") {
				jQuery("#AddButton").attr('disabled', 'disabled');
			}
		}
	});
});
});

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Postad (redigerade)

Jodå, det spelar ingen roll vad du kör på servern. Se bara till att php-filen inte returnerar något annat än just returvärdet, ex. 0 eller 1 (dvs. inga html-taggar eller dylikt)

I PHP-filen tar du emot email-parametern på sedvanligt sätt, som om ett formulär hade postats.

Redigerad av Anjuna Moon

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Ska vi se så jag fattat allt rätt då, jQuery koden ligger under med formuläret i koden?

Och den uppdateras under tiden man skriver i mailen?

 

I dinCheckFil.ashx eller ska det vara dinCheckFil.php om jag använder php så ska den hämta data från databasen och returnera typ 0 om den inte finns och 1 om den finns? Och sen skicka det tillbaka till filen med formuläret i?

 

Eller är jag helt ute och cyklar? Har inte använt jQuery nånting förut :S

 

Tack för svar

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Scriptet aktiveras när användaren LÄMNAR epost-fältet (tycker det är onödigt att göra ett server-anrop för varje tangenttryckning i detta fall)

 

jQuery-koden kan du lägga var som helst, förslagsvis inom HEAD-taggarna (efter raden där du inkluderar jQuery-biblioteket)

Ex.

<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>

// Här kan du lägga in jQuery-snippeten

</head>

 

Den anropade filen ska vara din php-fil ja, ex. dinCheckFil.php

Du har förstått rätt hur den ska fungera och vad den ska returnera.

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Hur skickar jag 1 eller 0 tillbaka till formuläret utan att uppdatera det då?

Kan man lösa så det står en text bredvid epost rutan att mailen redan finns också?

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Du ser till att php-filen enbart skriver ut en etta eller en nolla. PHP är inte mitt språk, men i princip ska filen innehålla följande (fast med en kontroll av eposten mot databasen såklart, istället för som jag gjort)

Inga html-taggar eller något annat alltså. Resten sköts av mitt javascript.

 

<?php
$email=$_POST["fname"]
if($email=='post@post.com')
  echo "1"
else
  echo "0"
?>

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

if(!isset($_POST["email"])) die("1");
 $username = "";
 $password = "";
 $hostname = "";    
 $dbconn = mysql_connect($hostname, $username, $password) or die("1");

 $database = mysql_select_db("email",$dbconn);

 $query  = "SELECT email FROM tabell WHERE email = '" . $_POST["email"] . "'";
 $result = mysql_query($query) or die("1");
 echo ($result) ? "1" : "0";

 

Nu är det ingen vidare felhantering - om något är fel eller om adressen redan finns så returneras "1".

 

1 som svar kan alltså bero på en av följande saker:

* "email" i post-datan är tom

* Fel i databaskopplingen

* Fel i queryresultatet

* Adressen finns redan

 

 

Hur löser du detta då?

Koppla inte php-sidan mot ajax-requesten förrän du vet att php-sidan fungerar som den skall.

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

nu har jag skrivit så här

<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js">	
jQuery(document).ready(function () {
       jQuery('email').blur(function () {
               var email = jQuery(this).val();
               jQuery.ajax({
                       type: "POST",
                       url: "checkMail.php",
                       async: true,
                       data: "email=" + email,
                       success: function (status) {
                               if (status == "1") {
								<? echo "mail finns"; ?>
                                       jQuery("submit").attr('disabled', 'disabled');
                               }
                       }
               });
       });
});
</script>
</head>

<form enctype="multipart/form-data" action="memberContent.inc.php?page=addMemberToDB" method="post" name="changer">

<input name="email" type="text" value="">

<input type="submit" name="submit" value="Lägg till" />

 

Och i checkMail.php har jag skrivit denna koden

<?php
	include 'includes/db_settings.inc.php';
	include 'includes/opendb.php';
	$email = $_POST[email];
	$query = mysql_query("SELECT email FROM `members` WHERE email = '" . $email . "'");

	$row = mysql_fetch_array($query)

	if($row != ''){
		echo "1";
	}else{
		echo "0";
	}

include 'includes/closedb.php';
?>  

 

men det vill inte funka :S Har jag gjort nått fel?

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

$email = $_POST["email"];

 

Och som sagt, se till att det fungerar som det skall innan du kopplar på ajax.

 

testa med en statisk variabel först

$email = "en.epostadress@somfinnsi-registret.se";

Redigerad av Jonas__B

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Den funkar som den ska om jag kör filen direkt utan ajax, men när jag kör den via ajax så händer inget, submit knappen ska inte gå att trycka på om det lyckas va?

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Du måste följa min kod och mina instruktioner om det skall fungera. Till att börja med behöver ditt textfält och knappen ett id

 

<input name="email" id="email" type="text" value="">
<input type="submit" id="submit" name="submit" value="Lägg till" />

 

Sedan har du tappat bort # i jQuery-selektorerna. Ändra

 jQuery('email').blur(function () {

till

 jQuery('#email').blur(function () {

samt

 jQuery("submit").attr('disabled', 'disabled');

till

 jQuery("#submit").attr('disabled', 'disabled');

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Aha, Sorry, trodde det var namnen på dem bara :)..

 

Har ändrat nu men funkar fortfarande inte tyvärr, kan man lägga nån text som uppdateras istället för att knappen inaktiveras? lättare att se resultatet då :S

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

if(!isset($_POST["email"])) die("1");
 $username = "";
 $password = "";
 $hostname = "";    
 $dbconn = mysql_connect($hostname, $username, $password) or die("1");

 $database = mysql_select_db("email",$dbconn);

 $query  = "SELECT email FROM tabell WHERE email = '" . $_POST["email"] . "'";
 $result = mysql_query($query) or die("1");
 echo ($result) ? "1" : "0";

 

Nu är det ingen vidare felhantering - om något är fel eller om adressen redan finns så returneras "1".

 

1 som svar kan alltså bero på en av följande saker:

* "email" i post-datan är tom

* Fel i databaskopplingen

* Fel i queryresultatet

* Adressen finns redan

 

Såg detta inlägget först nu Jonas, vad händer i den koden? Kollar den igenom de punkter du punktade upp? Eller det fattar jag väl att den gör egentligen, men jag testar att lägga till detta när jag ser att första steget funkar :S, nu funkar ju inte kopplngen alls till ajaxen?

Redigerad av mrsebastian

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Ja, script-taggar ska det vara också. Jag postar din kod, med korrigeringar. Dessutom hade du lagt in en php-echo mitt i javascriptet, vilket sabbar det, så det är borttaget också.

<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js" />

<script type="text/javascript">     
jQuery(document).ready(function () {
       jQuery('#email').blur(function () {
               var email = jQuery(this).val();
               jQuery.ajax({
                       type: "POST",
                       url: "checkMail.php",
                       async: true,
                       data: "email=" + email,
                       success: function (status) {
                               if (status == "1") {
                                                                                                               jQuery("#submit").attr('disabled', 'disabled');
                               }
                       }
               });
       });
});
</script>
</head>
<body>
<form enctype="multipart/form-data" action="memberContent.inc.php?page=addMemberToDB" method="post" name="changer">

<input id="email" name="email" type="text" value="">

<input type="submit" id="submit" name="submit" value="Lägg till" />

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

har du exempel på en e-postadress som finns?

alternativt, lägg in "test@testsson.se" så det går att testa.

jag fick 0 som svar iaf.

Redigerad av Jonas__B

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Skapa ett nytt konto på vårt forum. Det är lätt!

Registrera ett nytt konto

Logga in

Redan medlem? Logga in här.

Logga in nu



×
×
  • Skapa nytt...