[Ajax, php, html, css] wysyłanie form'a


(Aglasek) #1

Hej,

robię coś takiego, że po wpisaniu określonego ciągu znaków do form'a następuje połączenie do bazy i sprawdzenie czy np takie imię istnieje i jeżeli istnieje to ustaw formularz na background: red; I PRZERWIJ DODAWANIE DO BAZY a jeżeli nie istnieje to dodaj tą wartość wpisaną w forma. Wszystko mi działa oprócz tego co napisałem wielkimi literami czyli aby po wpisaniu takiego np imienia co już jest w bazie nie dodało następnego takiego samego, po prostu ma być tak jakby przerwanie skryptu. Wiem ze można np w bazie ustawić zrobić nie powtarzalne się wartości ale ja tak nie chcę. Poniższy przykład zaznacza mi ładnie inputa na czerwono jeżeli takiego imienia nie ma w bazie lecz po wciśnięciu 'wyślij' i tak dodaje do bazy. Nie wiem jak ten poniższy przykład obsłużyć aby było ok (nie dodawało do bazy jeśli imię już istnieje) , czy ktoś może mi pomoc?

to mój formularz

Popraw dane
[/code] to część pliku obslugaajax.php do połączenia z bazą (wszystko się łączy bez problemu)
[code] //połączenie do bazy, wpisanie selecta itp header("Content-type: text/xml"); echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"; echo ""; while($row = mysql_fetch_array($result, MYSQL_ASSOC)){ echo ""; foreach($row as $klucz => $wartosc){ if ($klucz == "Nr") echo "".$wartosc.""; else if ($klucz == "Imie") echo "".$wartosc.""; } echo ""; } echo "";
a to plik js:

var XMLMainElement = null;

window.onload = init;


function init()

 {

   document.getElementById("kontakt").onblur = function()

   {

          showBox(this.value);

   }

   suggestBox()

}


function ajaxInit() {

    //inicjalizacja ajaxa, XmlHttpRequest ....

}

function suggestBox() {

   var XHR = ajaxInit();

   if (XHR != null) {

          XHR.open("GET", "obslugaajax.php" + "?random=" + Math.random(), true);


          XHR.onreadystatechange = function() {

                 if (XHR.readyState == 4) {

                        if (XHR.status == 200) {

                           XMLMainElement = XHR.responseXML.documentElement;

                           showBox("");

                        }

                        else alert("Wystapil blad" + XHR.status);

                 }

          }


          XHR.send(null);

   }

}


function showBox(tresc){


   if (XMLMainElement != null){

          var kontakty = XMLMainElement.getElementsByTagName("Kontakt");


          document.getElementById("kontakt").className = 'error2';

          document.getElementById("popraw").className = 'error3';        


          for (var i = 0; i < kontakty.length; i++){


                 var dane = kontakty[i].getElementsByTagName("Imie")[0].firstChild.nodeValue;


                 if(dane.toLowerCase().indexOf(tresc.toLowerCase()) == 0 )                

                         document.getElementById("kontakt").className ='error';                                          

          }

   }

}

no i te trzy klasy styli:

.error{ background-color: white; }

.error2{background-color: red; }

.error3{visibility: visible; }

-- Dodane 31.01.2011 (Pn) 21:16 -- powiedzmy, że sobie poradziłem jednak czy ktoś mi może wyjaśnić to:

if(dane == document.getElementById("kontakt").value){

			document.getElementById("kontakt").className = 'error2'; //ta linia działa dopiero gdy wstawie niżej alert

			document.getElementById("eytkieta").style.visibility = 'visible'; //ta linia działa dopiero gdy wstawie niżej alert

			alert("W bazie istnieje już takie imie!"); 

		 }

Linie w których jest komentarz działaja dopiero gdy poniżej wstawię alert'a inaczej nie zadziałaja. Jak to jest możliwe? O co tu chodzi?