2016-08-29 10 views
0

Ich habe ein Formular namens test.php, das 2 Schaltflächen enthält, die jeweils eine E-Mail-ID und eine Benutzer-ID eingeben. und eine Schaltfläche zum Senden. Wenn der Benutzer auf die Senden-Schaltfläche klickt, überprüft mein Code einfach, ob die E-Mail-ID existiert und zeigt eine Nachricht an den Benutzer an. Ich möchte diese Nachricht neben dem Textfeld für die E-Mail-ID anzeigen. Aber wenn ich diese Nachricht direkt neben dem Textfeld hake, erhalte ich eine Fehlermeldung, dass die Variable nicht definiert ist, da sie die Variable nicht jedes Mal findet, wenn das Formular geladen wird. Wie ändere ich meinen Code, um die Nachricht neben dem Textfeld zur Eingabe der E-Mail-ID anzuzeigen? Muss ich Sitzungen benutzen?Wie wird eine Nachricht neben einem Textfeld in einem Formular angezeigt?

Hier ist mein Code:

<body> 
<h3>Registration Form</h3> 
<form action ="" method="POST"> 
<table align="center" cellpadding="10"> 
<tr> 
<td>Email Id</td> 
<td><input type="text" maxlength='100' name="emailid" id="emailid" required> 
<?php 
echo $msgemail; 
?> 
</td> 
</tr> 
<tr> 
<td>User Id</td> 
<td><input type="text" maxlength='100' name="userid" id="userid" required ></td> 
</tr> 
<tr> 
<td> 
<input type="submit" name="login" value="Login"> 
</td> 
</tr> 
</table> 
</form> 
</body> 
<?php     

//create a connection 
$conn = mysqli_connect('localhost', 'root', '', 'attendance'); 

if (isset($_POST['login'])) { 

    //capture the $_POST value 
    $email = $_POST['emailid']; 
    $email = trim($email); 
    $userid = $_POST['userid']; 
    $userid = trim($userid); 


    if ($email=="") { 
     echo "Please enter a valid email id"; 
    } 

    if ($userid=="") { 
     echo "Please enter a valid User Id"; 
    } 

    //check if the email id exists 
    $sql_check_email = "select * from employee where emp_email='$email';"; 

    mysqli_query($conn, $sql_check_email); 

    $aff_email = mysqli_affected_rows($conn); 

    // if email id exists ..display message 
    if ($aff_email==1) { 

     $msgemail = "the email id exists"; 


    } else if ($aff_email>1) { 

     $msgemail = "there are multiple employees with the same email";   

    //display error message if there is an error 
    } else if ($aff_email<0) { 

     echo "There is an error ..Try again"; 

    } 

} 

>

+0

Wenn Sie die Nachricht auf der gleichen Seite angezeigt werden wollte, dann können Sie machen die test.php als eine Aktion der Form wie 'action =" test.php "'. – claudios

+0

@ claudios..it doesnt work.it gibt immer noch eine Fehler..undefined Variable .. –

+0

welche Variable ist nicht definiert? Vielleicht poste ein paar Fehler, die du hier bekommen hast. – claudios

Antwort

0

Danke für Ihre Eingaben verwenden. Sitzungen können das oben genannte Problem lösen. Allerdings habe ich das gleiche mit ajax, php, mysql versucht. Ich habe eine Nachricht in einem div - Tag angezeigt, die ich direkt neben dem Textfeld platziert habe, in dem die E - Mail - ID eingegeben wurde: Im onchange - Ereignis des Textfelds für die E - Mail - ID verwende ich eine Funktion showuser, die den Wert des Textfelds akzeptiert Parameter und überprüft, ob die E-Mail-ID durch Ajax und eine PHP-Datei existiert: welcome_user.php. Jedes Mal, wenn ein Benutzer eine bereits existierende E-Mail-ID eingibt und mit der nächsten Textboxeingabe fortfährt, wird eine Nachricht in dem div-Tag neben dem Textfeld angezeigt, dass die "E-Mail-ID existiert".

Hier ist, was ich getan habe:

registration.php:

<!DOCTYPE html> 
<html> 
<head> 
<title> 
Registration Form 
</title> 
<script> 
function showUser(str) { 
    if (str == "") { 
     document.getElementById("txtHint").innerHTML = ""; 
     return; 
    } else { 
     if (window.XMLHttpRequest) { 
      // code for IE7+, Firefox, Chrome, Opera, Safari 
      xmlhttp = new XMLHttpRequest(); 
     } else { 
      // code for IE6, IE5 
      xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
     } 
     xmlhttp.onreadystatechange = function() { 
      if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
       document.getElementById("txtHint").innerHTML = xmlhttp.responseText; 
      } 
     }; 
     xmlhttp.open("GET","welcome_user.php?q="+str,true); 
     xmlhttp.send(); 
    } 
} 
</script> 
</head> 
<body> 
<h3>Registration Form</h3> 
<form action ="test-reg.php" method="POST" enctype="multipart/form-data"> 
<table align="center" cellpadding="20"> 
<tr> 
<td>Name</td> 
<td><input type="text" maxlength='100' name="empname" id="empname" required></td> 
</tr> 
<tr> 
<td>Email Id</td> 
<td><input type="text" maxlength='100' name="emailid" id="emailid" onchange="showUser(this.value)" required></td> 
<td align="left"><div id="txtHint"></div></td></tr> 
</tr> 
<tr> 
<td>User Id</td> 
<td><input type="text" maxlength='100' name="userid" id="userid" required ></td> 
</tr> 
<tr> 
<td>Password</td> 
<td><input type="password" maxlength='100' name="pwd" id="pwd" required ></td> 
</tr> 

welcome_user.php:

<?php 

if (isset($_GET['q'])) { 

    $q = $_GET['q']; 

    $conn = mysqli_connect('localhost','root','','attendance'); 

    $sql_get_email = "select * from employee where emp_email='$q'"; 

    mysqli_query($conn, $sql_get_email); 

    $aff_email = mysqli_affected_rows($conn); 

    if ($aff_email>0) { 

     echo "Email id exists"; 
    } 

} 
?> 
0

Versuchen Sie $msgemail als Session-Einstellung und nur den Scheck für die Sitzung hinzufügen, in dem Sie die $msgemail angezeigt werden soll?.

Denken Sie daran, die Sitzung zu löschen, oder sie wird weiterhin angezeigt.

Sidebar: Verwenden Sie für Layouts bootstrap. Besser als Tische zu benutzen.

0

definieren $msgemail vor if (isset($_POST['login'])) { da Sie es in das Hinzufügen, wenn $msgemail wird von PHP nach dem Schließen, wenn } getötet werden. Und setzen Sie PHP-Code oben, bevor Sie es in html

Verwandte Themen