Jump to content

filtrar dados sql


fddsantos

Recommended Posts

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!

Link to comment
Share on other sites

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!

Link to comment
Share on other sites

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!

Link to comment
Share on other sites

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!

Link to comment
Share on other sites

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 by fddsantos

Lei de Lavoisier aplicada à Informática:Na Informática nada se compra, nada se cria! Tudo se copia!

Link to comment
Share on other sites

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 ...)

  • Vote 1
IRC : sim, é algo que ainda existe >> #p@p
Link to comment
Share on other sites

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
Link to comment
Share on other sites

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
Link to comment
Share on other sites

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!

Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.