Autor Zpráva
jaroslav7
Profil
Zdravím,
chtěl bych vytvořit porovnávání políčka formuláře se záznamem v DB před odesláním celého formuláře (testovat zda už je login obsazen).
formulář na stránce prihlaseni.php mám vytvořen takto:
<form action=<?php echo 'Zakaznik.php?akce=prihlasit';?> method="post">
  Uživatelské jméno: <input type="text" id="jmeno" value="" name="username" onkeyup="overUsername()"><br>
  Heslo: <input type="password" name="heslo"><br>
  <input type="submit" name="odeslat" value="Přihlásit">   
</form>

v hlavičce stránky mám tento script
<script>

function overUsername(){



var XMLHttpRequest = false;
if (window.XMLHttpRequest){ // vytvoreni objektu XMLHttpRequest v novych prohlizecich
XMLHttpRequest = new XMLHttpRequest();
} 
else if (window.ActiveXObject){     // v IE5 a IE 6 se pouziva ActiveXObject
XMLHttpRequest = new ActiveXObject("Microsoft.XMLHTTP");
}

 


var input = document.getElementById("jmeno");
var cilovyDiv = document.getElementById("cilovyDiv");

if(XMLHttpRequest) {
XMLHttpRequest.open("POST","zpracuj.php", true);
XMLHttpRequest.setRequestHeader('Content-Type',
'application/x-www-form-urlencoded');

XMLHttpRequest.onreadystatechange = function(){
if (XMLHttpRequest.readyState == 4 && XMLHttpRequest.status == 200) { 
var obsah=XMLHttpRequest.responseText;      //odpoved serveru

if(obsah.responseText == "ne"){
cilovyDiv.innerHTML = "<div>ZMENTE JMÉNO.</div>";
}
if(obsah.responseText == "ano"){
cilovyDiv.innerHTML = "<div>VOLNÉ.</div>";}
}
}
XMLHttpRequest.send("jmeno="+input.value);}
}

</script>

skript jsem si půjčil odtud tak snad by měl být správně.

ve zpracuj.php mám:
<?php
include "DB_spojeni.php";

if($_REQUEST["username"]){

 
$prom = $_REQUEST["username"];

 $dotaz = "SELECT zakaznik_login FROM zakaznik WHERE zakaznik_login = '" . $prom . "';";
    $vysledek = mysql_query($dotaz) 
          or die(mysql_error());

if (mysql_num_rows($vysledek) != 0) 
{echo "ne";}

else
{echo "ano";}

}
?>

Vůbec nic to nedělá. Myslím, že se ani nevykoná ta funkce overUsername() a nejsem si jistý jestli mohu k těmto proměnným přistupovat přes $_REQUEST[]. Neví někdo kde je chyba / jsou chyby?
Chamurappi
Profil
Reaguji na jaroslava7:
skript jsem si půjčil odtud tak snad by měl být správně
Vypadá správně. Nejspíš by fungoval, kdybys ho neupravoval zbytečně víc, než je potřeba.
Zdá se, že jsi změnil název proměnné XMLHttpRequestObjekt tak, aby byl v konfliktu s názvem nativního objektu. Na to pozor. Nemůžeš dvěma různým věcem říkat stejně. Konkrétně to vadí, protože…

XMLHttpRequest = new XMLHttpRequest();
Do lokální proměnné XMLHttpRequest jsi dal o dva řádky výš false. A jelikož false není konstruktor, nemůžeš z něj vyrábět novou instanci — něco podobného by ti pověděla i chybová konzole v prohlížeči.
jaroslav7
Profil
Chamurappi:
Díky, po změně názvu proměnných už to funguje.
Ještě k tomu mám jeden dotaz ohledně volání funkce overUsername() z externího js souboru. Když mám tuto funkci přímo v hlavičce stránky tak to funguje, ale když jí umístím do Java_script.js a v hlavičce stránky mám
<script src="Java_script.js"></script> tak nevím jak tu funkci zavolat okeyup="overUsername()" nefunguje. Zatím se mi nepodařilo z externího souboru zavolat žádnou funkci, kterou sem zkoušel tak nevím, co dělám špatně.
Chamurappi
Profil
Reaguji na jaroslava7:
Zatím se mi nepodařilo z externího souboru zavolat žádnou funkci
Tak ho máš asi špatně přilinkovaný. Opravdu se jmenuje Java_script.js? Je ve správném adresáři? Není v něm nějaká podivnost, která v něm nemá být? Hodila by se nejspíš živá ukázka.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: