Ir para conteúdo
Fórum Script Brasil
  • 0

Form Com Multiplas Consultas Com Sql


THX1138

Pergunta

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 para o comentário
Compartilhar em outros sites

14 respostass a esta questão

Posts Recomendados

  • 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros sites

  • 0

cara, você so deve usar o button se tiver uma função para chamar no modo onclick do mesmo, caso contrário você deve usar o submit para enviar o formulário para o link descrio no atb action do form:

<form action="pagina.php" method="post" name="nome">

....

....

....

<input type="submit" value="OK!" />

flows...

Link para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...