Mam , wydawać by się mogło, banalny problem ze sprawdzeniem numeru NIP w bazie. Ambitny plan jest taki:
- w formularzu który wypełniają mi ludzie jest pole NIP, jako jeden ze składników opisu firmy,
- po jego wpisaniu następuje validacja przez JS (czy jest poprawny), (działa)
- jeśli nie, to pojawia się stosowny komunikat, jeśli tak to następuje sprawdzenie pod kątem występowania takiego NIPu w bazie, (też działa)
- jeśli istnieje, to są pobierane wartości i wyświetlane, jeśli nie to można taką firmę dodać do bazy.
Reasumując,
formularz ma być blokowany jeśli jest błąd (zły nim, lub nip już istnieje), a jeśli jest to nowy nip to można w bazie zapisać.
Problem ma niestety z blokowaniem formularza. Koncepcja była taka, żeby zatrzymywać użytkownika na polu NIP, dopóki wszelkie warunki nie będą spełnione, albo blokować przycisk zapisu do bazy. Tak jak bez problemu działają mi validacje poprawności danych oraz odczytywanie zawartości bazy w tle, tak wysypuję się blokowaniu formularza przed nieodpowiednim zapisem. Błąd pewnie banalny, ale mój stan wiedzy chyba zbyt mały żeby go samemu poprawić.
Poniżej moje "wypociny"
formularz.php:
Kod
...
echo 'Firma: <input type="text" name="firma[1]" value="'.$firma[1].'" ><br>';
echo 'NIP: <input type="text" name="firma[2]" value="'.$firma[2].'" id="NipInput" onchange="ShowNip(this.value)"><br>';
...
echo '<input type="submit" name="ok" id="firm_ok" value="DODAJ">';
echo '<div id="div_info" class="div_nip"></div>';
...
echo 'Firma: <input type="text" name="firma[1]" value="'.$firma[1].'" ><br>';
echo 'NIP: <input type="text" name="firma[2]" value="'.$firma[2].'" id="NipInput" onchange="ShowNip(this.value)"><br>';
...
echo '<input type="submit" name="ok" id="firm_ok" value="DODAJ">';
echo '<div id="div_info" class="div_nip"></div>';
...
funkcje.js (chciałbym zatrzymać focus na polu 'NipInput', lub zablokować przycisk 'firm_ok')
Kod
function ShowNip(str)
{
if (str=="")
{
document.getElementById("div_info").innerHTML="";
return;
}
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("div_info").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","getnip.php?nip="+str,false);
xmlhttp.send();
}
function niperr(){
document.getElementById('NipInput').focus();
document.getElementById('firm_ok').disabled=true;
document.getElementById('firm_ok').style.color="#a0a0a0";
}
function nipok(){
document.getElementById('firm_ok').disabled=false;
document.getElementById('firm_ok').style.color="#000000";
}
{
if (str=="")
{
document.getElementById("div_info").innerHTML="";
return;
}
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("div_info").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","getnip.php?nip="+str,false);
xmlhttp.send();
}
function niperr(){
document.getElementById('NipInput').focus();
document.getElementById('firm_ok').disabled=true;
document.getElementById('firm_ok').style.color="#a0a0a0";
}
function nipok(){
document.getElementById('firm_ok').disabled=false;
document.getElementById('firm_ok').style.color="#000000";
}
i pobieranie danych z bazy. getnip.php
Kod
<?php
$nip=$_GET["nip"];
include("config.php");
$con = mysql_connect($pnconfig['dbhost'] ,$pnconfig['dbuname'],$pnconfig['dbpass']);
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db($pnconfig['dbname'], $con);
$sql="SELECT * FROM firmy WHERE nip = '".$nip."'";
$result = mysql_query($sql);
if (mysql_num_rows($result)>0){
echo "<div class='div_c'>";
while($row = mysql_fetch_array($result))
{
echo "<b>FIRMA JUŻ ISTNIEJE!!</b><br>";
echo $row['nazwa'] . "<br>";
echo $row['adr_ulica'] . "<br>";
echo $row['adr_kod'] . "<br>";
echo $row['adr_miasto'] . "<br>";
echo $row['wojewodztwo'] . "<br>";
echo "<script language='JavaScript'>niperr();</script>"; //radosna twórczość;)
}
echo "</div>";
}
else {
echo "<script language='JavaScript'>nipok();</script>"; //radosna twórczość;)
}
mysql_close($con);
?>
$nip=$_GET["nip"];
include("config.php");
$con = mysql_connect($pnconfig['dbhost'] ,$pnconfig['dbuname'],$pnconfig['dbpass']);
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db($pnconfig['dbname'], $con);
$sql="SELECT * FROM firmy WHERE nip = '".$nip."'";
$result = mysql_query($sql);
if (mysql_num_rows($result)>0){
echo "<div class='div_c'>";
while($row = mysql_fetch_array($result))
{
echo "<b>FIRMA JUŻ ISTNIEJE!!</b><br>";
echo $row['nazwa'] . "<br>";
echo $row['adr_ulica'] . "<br>";
echo $row['adr_kod'] . "<br>";
echo $row['adr_miasto'] . "<br>";
echo $row['wojewodztwo'] . "<br>";
echo "<script language='JavaScript'>niperr();</script>"; //radosna twórczość;)
}
echo "</div>";
}
else {
echo "<script language='JavaScript'>nipok();</script>"; //radosna twórczość;)
}
mysql_close($con);
?>
Z góry dzięki za wszelkie sugestie co robię nie tak.