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?