Th3Alchemist Posted September 25, 2012 at 11:25 AM Report #476473 Posted September 25, 2012 at 11:25 AM (edited) Boas, estou a desenvolver um site onde um utente gerencie a sua medicação, e quando submete uma nova medicação, a página instantaneamente verifica se existe alguma possível interação entre as medicações que este esteja a tomar, para tal tenho a seguinte função: function getInfo(strURL, 'interacao') { var req = getXMLHTTP(); if (req) { req.onreadystatechange = function() { if (req.readyState == 4) { if (req.status == 200) { document.getElementById(div).innerHTML=req.responseText; } } } req.open("GET", strURL, true); req.send(null); } } Este é o código PHP que retorna a DIV com as respectivas interações: <? require_once '../class/database.php'; require_once 'auth.php'; $dci = $_GET['dci']; $datai = $_GET['datai']; $dataf = $_GET['dafaf']; if (!$dci || !$datai || !$dataf) { ?> <div id="interacao"> </div> <?php } else { $database = new MySQLDatabase(true); $sql = "SELECT subactiva.SA_nome FROM subactiva WHERE subactiva.SA_ID in (SELECT interaccao.SA_ID2 FROM interaccao, subactiva, medsub, medicamento, medicacao WHERE interaccao.SA_ID2 = subactiva.SA_ID AND subactiva.SA_ID = {$dci} AND subactiva.SA_ID = medsub.SA_ID AND medsub.ME_ID = medicamento.ME_ID AND medicamento.ME_ID = medicacao.ME_ID AND medicacao.MD_datai <= '{$dataf}' AND medicacao.MD_dataf >= '{$datai}')"; $result = $database->query($sql); if($database->num_rows($result) > 0) { ?> <div id="interacao"> Interação!<br> <?php while ($row = $database->fetch_assoc($result)) { ?> <small><?php echo $row['SA_nome'];?></small><br> <?php } ?> </div> <?php } else { ?> <div id="interacao"> Sem possíveis interações! </div> <?php } $database->disconnect(); unset($database); } ?> O problema é que na FORM onde o utente submete a sua nova medicação, este código so pode verificar se existe interação uma vez preenchidas 3 elementos na form: - "dci" - "datai" - "dataf" A minha dúvida acaba por ser simples: Como faço correr esta função AJAX somente quando o utilizador preencheu esses 3 elementos na FORM? Edited September 25, 2012 at 11:26 AM by Th3Alchemist
HappyHippyHippo Posted September 25, 2012 at 11:41 AM Report #476475 Posted September 25, 2012 at 11:41 AM (edited) function getInfo(strURL, 'interacao') { var elem_dci = document.getElementById("#dci"); // exemplo var elem_datai = document.getElementById("#datai"); // exemplo var elem_dataf = document.getElementById("#dataf"); // exemplo if (elem_dci.value != "" && elem_datai.value != "" && elem_dataf.value !=) { // AJAX } } Edited September 25, 2012 at 11:41 AM by HappyHippyHippo IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
Th3Alchemist Posted September 25, 2012 at 08:34 PM Author Report #476519 Posted September 25, 2012 at 08:34 PM Ok obrigado, funcionou bem! Meti foi a propriedade onchange="getInfo()" nas três inputs, era a maneira correcta?
HappyHippyHippo Posted September 25, 2012 at 08:37 PM Report #476522 Posted September 25, 2012 at 08:37 PM não sei, isso já terá haver com o modelo de interação com o utilizador queres que a verificação seja feita na alteração dos valores individuais ou tens um botão para isso ? IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
Th3Alchemist Posted September 25, 2012 at 09:04 PM Author Report #476540 Posted September 25, 2012 at 09:04 PM automatico na alteração dos dados... mas existe outra forma de que esta função detecte automaticamente alterações?
HappyHippyHippo Posted September 25, 2012 at 09:52 PM Report #476562 Posted September 25, 2012 at 09:52 PM a função só é chamada quando assim a programares. se programares no onchange dos inputs, será chamada nesses momentos. se programares num event onclick de um botão será ai chamada. isso agora és tu que decides IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now