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

Kontrollera om epost redan finns i databas

Rekommendera Poster

happyfejs

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
Anjuna Moon

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
happyfejs

Thanks, nått sånt låter vettigt. Kör dock inte asp.net utan php :S, kan det funka ändå?

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Anjuna Moon
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
happyfejs

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
Anjuna Moon

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
happyfejs

Najs, tack för hjälpen, ska testa så fort jag får tid.. Hojtar resultatet efter jag testat..

Dela detta inlägg


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

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
Anjuna Moon

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
Jonas__B

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
happyfejs

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
Jonas__B

$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
happyfejs

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
Jonas__B

använd firebug i firefox för att se vad som händer

Dela detta inlägg


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

Vart ska det hända nått? Under konsol? har inte använt det tidigare :S

Dela detta inlägg


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

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
happyfejs

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
happyfejs

Jag ändrade en sak till från din kod, jag la jQuery scripet mellan <script> taggarna, du hade lagt det efter, är det fel också då?

Dela detta inlägg


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

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
Anjuna Moon

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
Jonas__B

under Net, utöka namnet på php-sidan du postar till och klicka på Response så ser du ev felmeddelande.

 

Fungerar det inte- posta url

Dela detta inlägg


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

funkar fortfarande inte :S..

 

Känner mig puckad som tusan nu, hehe

Dela detta inlägg


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

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...