Jump to content
Fórum Script Brasil
  • 0

Form Com Multiplas Consultas Com Sql


THX1138

Question

estou montando um código em PHP que dependendo do que a gente escolhe

num FORM ele executa uma consulta diferente no BD.

+- Assim:

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
Ordenar <select name="list" class=news>
<option VALUE="query1">por ordem alfabética
<option VALUE="query2">Por ordem decrescente de área
<option VALUE="query3">Por ordem crescente de área
<option VALUE="query4">Por região
</select> etc

O problema é que não sei como passar essas queries pro SQL.

quer dizer eu monto as queries:

$query1 = "SELECT * FROM tabela ORDER BY nome";

$query2 = etc...

Mas como faço essa ligação do FORM pro banco?

Falow! ph34r.gif

Link to post
Share on other sites

14 answers to this question

Recommended Posts

  • 0

pega assim $_POST['list']; ai e so da uma condição para quando for a query q quiser e pronto... mais ai quer uma solução melhor... coloque no value do menu o nome da tabela q ai e so criar 1 query para todas e no lugar de <tabela> e so colocar $_POST['list'];

Link to post
Share on other sites
  • 0

sugestãozinha minha seria a seguinte:

$ord = $_POST['list'];

$sql = "SELECT * FROM tabela ORDER BY $ord";

Sacou? Daí você muda o nome dos option's no form para:

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">

Ordenar <select name="list" class=news>

<option VALUE="nome">por ordem alfabética

<option VALUE="nome DESC">Por ordem decrescente de área

.

.

.

etc...

te ajuda???

Link to post
Share on other sites
  • 0

Beleza, estou seguindo sua orientação, mas ainda tem um problema:

quando o código roda pela primeira vez ele precisa de um valor default

para a query, não é? esse valor não é passado...

Vou explicar melhor, meu código tá assim (mas dá erro):

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
Ordenar <select name="list" class=news>
<option VALUE="nome">por ordem alfabética
<option VALUE="area DESC">Por ordem decrescente de área
<option VALUE="area">Por ordem crescente de área
<option VALUE="regiao">Por região
</select>&nbsp;&nbsp;<input type=button VALUE="Ok"></form>

<?
$username="root";
$password="";
$host="localhost";
$databasename="dados";
$db = mysql_connect("$host", "$username", "$password");
mysql_select_db("$databasename", $db);
$ord = $_POST['list'];

echo "<TABLE><THEAD><TR>";
echo "<TH scope=col>Nome</TH>";
echo "<TH scope=col>Abrev.</TH>";
echo "<TH scope=col>Área</TH>";
echo "<TH scope=col>Região</TH>";
echo "</TR></THEAD>";
echo "<TFOOT><TR><TH scope=row>Total</TH><TD colSpan=4>Lista competa</TD></TR></TFOOT>";

$query = "SELECT * FROM tabela ORDER BY $ord";
$result = mysql_query($query, $db);
for ($i = 1; $i <= 80; $i++)
{
   $row = mysql_fetch_array($result, MYSQL_ASSOC);
    if ($i % 2 == 0) { $f="class=odd"; } else $f="";
    $k=$row["abrev"];
    echo "<TR $f><TH scope=row>";
    echo $row["nome"];
    echo "</TH><TD>";
    echo $row["endereco"];
    echo "</TD><TD>" . $k . "</TD><TD>";
    echo $row["alfa"];
    echo "</TD><TD>";
    echo $row["area"];
    echo "</TD><TD>";
    echo $row["regiao"];
    echo "</TD><TD>";
}
print "</table>\n";
mysql_free_result($result);
mysql_close($db);
?>

Não esquenta com a última parte, como eu sei que são só 80 tuplas

na tabela fiz um loop FOR e para diagramar uso uma rotina pra ver

se a linha é par ou ímpar e imprimir bonitinho. Só frescura. O problema

é que o código assim ainda não funciona... tá faltando alguma coisa...

Link to post
Share on other sites
  • 0

verifica se o "list" contem algo se não coloca um valor padrão para a $ord.. tipo :

<?

if($_POST['list'])

$ord = $_POST['list'];

else

$ord = "nome";

$sql = "SELECT * FROM tabela ORDER BY $ord";

Link to post
Share on other sites
  • 0

Belê! Funcionou a dica do "Guest". Agora olha só, charlesschaefer e Guest,

o problema é que quando eu carrego a página, ele faz a consulta padão

e imprime sem problema, mas se eu escolher qualquer opção no FORM

e digitar OK, nada acontece. Não será que a linha

<input type=button VALUE="Ok"> tem parâmetros insuficientes pra

realizar uma nova consulta?

Obrigado pelas respostas!

Link to post
Share on other sites
  • 0

vou tentar explicar o que coloquei (o guest era eu smile.gif )

a primeira vz que executa a variavel $ord esta sem nada então o que fiz ai foi determinar algum valor para ela caso não tenha conteudo..

então bem no inicio voce verifica se existe conteudo no POST, se ele estiver sem nada vai preencher o $ord com o conteudo nome, se tiver algo preenchido vai pegar o que foi passado pelo $_POST.

if($_POST['list'])  // verifica se foi passado algo
    $ord = $_POST['list'];  // Se foi passado atribui ao $ord o valor passado
else
    $ord = "nome";  // Se não foi passado, coloca nome como padrão

Link to post
Share on other sites
  • 0

Tranquilo, Jissa. Entendi! E funcionou. Quando eu carrego a página ele

faz a consulta padrão (nome). Mas porque quando eu escolho outra

opção no FORM (por Regiao, por explo, só pra citar uma) nada acontece?

Esse é o problema agora! Ele só faz a consulta padrão. Nada acontece

quando clico no OK do form.

Valeu!

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      149390
    • Total Posts
      645880
×
×
  • Create New...