fddsantos Posted July 31, 2012 at 12:02 PM Report #471083 Posted July 31, 2012 at 12:02 PM Boa tarde, Eu quero realizar uma filtragem a uma tabela apartir de uma combobox em php, já estou a conseguir recolher bem o value da combobox agora só precisava que conseguir filtrar esse valor através de código php/sql. A questão é que não escontro maneira de o php receber esse valor, porque eu não queria usar o post por ser preciso fazer "submit". A questão é, como consigo enviar dados para uma instrução sql/php sem ter que carregar no botão submit ? Agradeço a Atenção, Fábio Santos Lei de Lavoisier aplicada à Informática:Na Informática nada se compra, nada se cria! Tudo se copia!
pmg Posted July 31, 2012 at 12:21 PM Report #471085 Posted July 31, 2012 at 12:21 PM Só com PHP é impossível. Tens que arranjar ajuda de Javascript. Com a ajuda de Javascript tens duas maneiras: 1) mandas o valor para o servidor, que retorna os dados filtrados, e depois apresentas os dados 2) no primeiro acesso ao servidor este manda os dados TODOS numa variavel Javascript; ao seleccionares um valor o Javascript filtra e actualiza a página PS. em teoria sei fazer, na prática não tenho nenhum exemplo pronto para colar aqui 🙂 What have you tried? Não respondo a dúvidas por PM A minha bola de cristal está para compor; deve ficar pronta para a semana. Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!
MoshMage Posted July 31, 2012 at 12:42 PM Report #471089 Posted July 31, 2012 at 12:42 PM (edited) O que tu queres chama-se Ajax - o primeiro link desta pesquisa aqui no google explica-te como usar. Edited July 31, 2012 at 12:42 PM by MoshMage If all Else fails, use Else If;
fddsantos Posted July 31, 2012 at 01:09 PM Author Report #471093 Posted July 31, 2012 at 01:09 PM sim estou a usar javascript também, eu apresento o que já tenho, ou o que pretendo mais ou menos fazer. combobox: <select name="cbTipo" onchange="FillTextBox(this.value)"> <?php $cbox = mysql_query("SELECT * FROM tipo_produto ORDER BY ID") or die(mysql_error()); while($reg = mysql_fetch_array($cbox)) { ?> <option value="<?php echo $reg['SiglaNomeTipo'];?>"><?php echo $reg['NomeTipo'];?></option> <?php } ?> </select> Javascript: <script type="text/javascript" language="javascript"> function FillTextBox(obj) { <?php //$obj = obj $idSigla = mysql_query("SELECT MAX( ID_IDTipoProduto) FROM catalogo WHERE Sigla_TipoProduto LIKE '$_POST[obj]' ") or die(mysql_error()); while($reg1 = mysql_fetch_array($idSigla)) {?> idSigla = "<?php echo $reg1['MAX( ID_IDTipoProduto)'];?>"; <?php } ?> document.getElementById("refIDTipo").value = idSigla; document.getElementById("refTipo").value = obj; } </script> Lei de Lavoisier aplicada à Informática:Na Informática nada se compra, nada se cria! Tudo se copia!
HappyHippyHippo Posted July 31, 2012 at 01:19 PM Report #471096 Posted July 31, 2012 at 01:19 PM https://www.portugal-a-programar.pt/topic/53102-variavel-de-js-para-php/page__hl__+client-side%20+server-side?do=findComment?comment=455407 IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
fddsantos Posted July 31, 2012 at 03:01 PM Author Report #471108 Posted July 31, 2012 at 03:01 PM Eu estou a experimentar o que o MoshMage disse, usar ajax... O exemplo neste site: http://www.w3schools.com/php/php_ajax_database.asp Mas não estou é a conseguir receber e meter no value da textbox, para receber estou a usar assim: document.getElementById("refIDTipo").value = xmlhttp.responseText; Lei de Lavoisier aplicada à Informática:Na Informática nada se compra, nada se cria! Tudo se copia!
HappyHippyHippo Posted July 31, 2012 at 03:53 PM Report #471116 Posted July 31, 2012 at 03:53 PM (edited) em que parte do site estás a ver a atribuição : .value = Edited July 31, 2012 at 03:54 PM by HappyHippyHippo IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
fddsantos Posted July 31, 2012 at 04:01 PM Author Report #471117 Posted July 31, 2012 at 04:01 PM (edited) Já percebi que talvez o problema não seja a receber no script mas sim no ficheiro php, onde pode haver problema aqui? <?php $idPro=$_GET["id"]; $con = mysql_connect("localhost","xxx","xxx"); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db("bd", $con); $idSigla = mysql_query("SELECT MAX( ID_IDTipoProduto) FROM catalogo WHERE Sigla_TipoProduto = '".$idPro."' ") or die(mysql_error()); while($reg1 = mysql_fetch_array($idSigla)) { echo $reg1['MAX( ID_IDTipoProduto)']; } mysql_close($con); ?> a parte do value é para uma textbox Edited July 31, 2012 at 04:06 PM by fddsantos Lei de Lavoisier aplicada à Informática:Na Informática nada se compra, nada se cria! Tudo se copia!
HappyHippyHippo Posted July 31, 2012 at 04:14 PM Report #471118 Posted July 31, 2012 at 04:14 PM uma está uma imagem do facepalm quando preciso de uma !!!!! olha para o exemplo da w3schools, olha para o código que tens e diz : Onde está a atribuição .value = no código da w3scools !!!!!! o que queres fazer eu sei bem, eu estou a iluminar o teu problema !!! (espero ter sido mais moderado que das vezes anteriores ...) 1 Report IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
fddsantos Posted July 31, 2012 at 04:19 PM Author Report #471120 Posted July 31, 2012 at 04:19 PM eles estão a usar .innerHTML = então como atribuo valor depois ao "value" da textbox? Lei de Lavoisier aplicada à Informática:Na Informática nada se compra, nada se cria! Tudo se copia!
HappyHippyHippo Posted July 31, 2012 at 04:24 PM Report #471121 Posted July 31, 2012 at 04:24 PM se eles estão a retornar HTML é obvio que tens de usar .innerHTML = olha bem para o que o script deles está a retornar: ... echo "<table border='1'> <tr> <th>Firstname</th> <th>Lastname</th> <th>Age</th> <th>Hometown</th> <th>Job</th> </tr>"; while($row = mysql_fetch_array($result)) { echo "<tr>"; echo "<td>" . $row['FirstName'] . "</td>"; echo "<td>" . $row['LastName'] . "</td>"; echo "<td>" . $row['Age'] . "</td>"; echo "<td>" . $row['Hometown'] . "</td>"; echo "<td>" . $row['Job'] . "</td>"; echo "</tr>"; } echo "</table>"; ... IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
fddsantos Posted July 31, 2012 at 05:06 PM Author Report #471125 Posted July 31, 2012 at 05:06 PM já consegui, e não precisei fazer nada do que disses-te agora exatamente assim: document.getElementById("refIDTipo").value = xmlhttp.responseText; Lei de Lavoisier aplicada à Informática:Na Informática nada se compra, nada se cria! Tudo se copia!
HappyHippyHippo Posted July 31, 2012 at 05:13 PM Report #471127 Posted July 31, 2012 at 05:13 PM ainda bem que conseguiste. mas se conseguiste dessa maneira é por duas razões : - não estás a seguir exatamente o exemplo dado pela w3schools - não deste o teu código para saber o que realmente queres aqui não existem adivinhos, somente pessoas normais que tiram parte do seu tempo para ajudar outros IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
fddsantos Posted July 31, 2012 at 05:22 PM Author Report #471128 Posted July 31, 2012 at 05:22 PM Sim estou a seguir mais ou menos o exemplo dado pela w3schools, só alterei aquilo do value. Desde inicio que tenho vindo a dizer o que pretendo, colei aqui a parte php e o script que recebo. Eu estou a experimentar o que o MoshMage disse, usar ajax... O exemplo neste site: http://www.w3schools.com/php/php_ajax_database.asp Mas não estou é a conseguir receber e meter no value da textbox, para receber estou a usar assim: document.getElementById("refIDTipo").value = xmlhttp.responseText; Já percebi que talvez o problema não seja a receber no script mas sim no ficheiro php, onde pode haver problema aqui? <?php $idPro=$_GET["id"]; $con = mysql_connect("localhost","xxx","xxx"); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db("bd", $con); $idSigla = mysql_query("SELECT MAX( ID_IDTipoProduto) FROM catalogo WHERE Sigla_TipoProduto = '".$idPro."' ") or die(mysql_error()); while($reg1 = mysql_fetch_array($idSigla)) { echo $reg1['MAX( ID_IDTipoProduto)']; } mysql_close($con); ?> a parte do value é para uma textbox e como se pode ver alterei basicamente só aquela linha no script: <script type="text/javascript" language="javascript"> function FillTextBox(obj) { if (obj=="") { document.getElementById("refIDTipo").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("refIDTipo").value = xmlhttp.responseText; } } xmlhttp.open("GET","getIDPro.php?id="+obj,true); xmlhttp.send(); } </script> Lei de Lavoisier aplicada à Informática:Na Informática nada se compra, nada se cria! Tudo se copia!
fddsantos Posted July 31, 2012 at 05:33 PM Author Report #471130 Posted July 31, 2012 at 05:33 PM e já agora peço desculpa se não fui bem explicito durante o post a explicar o que pretendia. Lei de Lavoisier aplicada à Informática:Na Informática nada se compra, nada se cria! Tudo se copia!
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