diokhan Posted December 4, 2009 at 10:46 AM Report Share #298675 Posted December 4, 2009 at 10:46 AM boas, sei que ultimamente ando a fazer muitas perguntas..mas pronts..procurei antes no forum e nao encontrei nada deste genero. eu queria fazer um search no meu site, mas por exemplo, tenho uma input para introduzir o texto, e ao lado tenho uma select box para seleccionar a tabela onde pesquisar e desta escolha temos outra select box onde escolho o campo, referente a tabela escolhida, onde pesquisar, ou entao um search que faz a pesquisa em todas as tabelas ao mesmo tempo e em todos os campos. se alguem souber um script que me possa ajudar agradeciaĀ š ...Join the dark side...and get a free cookie... Link to comment Share on other sites More sharing options...
cyclop Posted December 4, 2009 at 03:48 PM Report Share #298707 Posted December 4, 2009 at 03:48 PM como ja sabes a tabela e o campo so precisas de concatenar uma string ( com a devida segurança usando o mysql_real_escape_string por exemplo ) e fazes uma query do genero $var = 'SELECT '.$campo.' FROM '.$tabela.' WHERE '.$campo.' LIKE \'%'.$textoQueAPessoaPesquisou.'%\'' PS: Caso queiras uma coisa um pouco mais "politicamente correcta" e um pouco mais complicada lê: http://dev.mysql.com/doc/refman/5.1/en/fulltext-search.html "Quando eu for grande quero ser como o Celso" Link to comment Share on other sites More sharing options...
diokhan Posted December 4, 2009 at 03:50 PM Author Report Share #298709 Posted December 4, 2009 at 03:50 PM eu vou dar uma vista de olhos e depois digo algo..obrigadoĀ š ...Join the dark side...and get a free cookie... Link to comment Share on other sites More sharing options...
diokhan Posted December 7, 2009 at 09:14 AM Author Report Share #299027 Posted December 7, 2009 at 09:14 AM como ja sabes a tabela e o campo so precisas de concatenar uma string ( com a devida segurança usando o mysql_real_escape_string por exemplo ) e fazes uma query do genero $var = 'SELECT '.$campo.' FROM '.$tabela.' WHERE '.$campo.' LIKE \'%'.$textoQueAPessoaPesquisou.'%\'' PS: Caso queiras uma coisa um pouco mais "politicamente correcta" e um pouco mais complicada lê: http://dev.mysql.com/doc/refman/5.1/en/fulltext-search.html e como é que eu apanho as variaveis? que eu faço por uma select box <SELECT name=project>     <option name=project>Project Name</option>     <option name=description>Description</option>     <option name=idplate>ID Plate</option> </SELECT> é pelo name da option certo? ...Join the dark side...and get a free cookie... Link to comment Share on other sites More sharing options...
apu Posted December 7, 2009 at 09:34 AM Report Share #299031 Posted December 7, 2009 at 09:34 AM NĆ£o, para isso funcionar o HTML tem que estar desta maneira <select name="lst_project"> Ā Ā Ā Ā <option value="project">Project Name</option> Ā Ā Ā Ā <option value="description">Description</option> Ā Ā Ā Ā <option value="idplate">ID Plate</option> </select> Agora no ficheiro que ira receber esses dados usas o array $_POST['lst_projecto'] Caso seja seleccionado a opƧao "project" o array vai retornar o valor que esta no atributo value. Percebido?Ā š Link to comment Share on other sites More sharing options...
diokhan Posted December 7, 2009 at 09:42 AM Author Report Share #299033 Posted December 7, 2009 at 09:42 AM este Ć© o meu codigo actual: echo'<form method="GET" action="restrito.php?opcao=project"> Ā Ā Ā <fieldset> Ā Ā Ā Ā <label for="consulta">Search:</label> Ā Ā Ā Ā <input type="hidden" value="project" name="opcao" /> Ā Ā Ā Ā <SELECT name=projects id=projects> Ā Ā Ā Ā <option name=nameproject>Project Name</option> Ā Ā Ā Ā <option name=description>Description</option> Ā Ā Ā Ā <option name=idplate>ID Plate</option> Ā Ā Ā Ā </SELECT> Ā Ā Ā Ā <input type="text" id="consulta" name="consulta" maxlength="255" /> Ā Ā Ā Ā <input type="submit" value="Search" /> Ā Ā Ā </fieldset> Ā Ā </form>'; no meu caso ficaria assim: echo'<form method="GET" action="restrito.php?opcao=project"> Ā Ā Ā <fieldset> Ā Ā Ā Ā <label for="consulta">Search:</label> Ā Ā Ā Ā <input type="hidden" value="project" name="opcao" /> Ā Ā Ā Ā <SELECT name=lst_project> Ā Ā Ā Ā <option value=nameproject>Project Name</option> Ā Ā Ā Ā <option value=description>Description</option> Ā Ā Ā Ā <option value=idplate>ID Plate</option> Ā Ā Ā Ā </SELECT> Ā Ā Ā Ā <input type="text" id="consulta" name="consulta" maxlength="255" /> Ā Ā Ā Ā <input type="submit" value="Search" /> Ā Ā Ā </fieldset> Ā Ā </form>'; e na query da pesquisa seria algo do tipo: "SELECT * FROM project WHERE '".$_GET['lst_project']."' LIKE '%".$_GET['consulta']."%' ORDER BY ID_PROJECT ASC"; certo? e o value das option devem ser iguais aos nomes dos campos nas tabelas? ...Join the dark side...and get a free cookie... Link to comment Share on other sites More sharing options...
yoda Posted December 7, 2009 at 10:45 AM Report Share #299040 Posted December 7, 2009 at 10:45 AM Não recomendo usares GET nesse form, por causa dos espaços das palavras, acentos, etc .. before you post, what have you tried? - http://filipematias.info sense, purpose, direction Link to comment Share on other sites More sharing options...
diokhan Posted December 7, 2009 at 10:46 AM Author Report Share #299041 Posted December 7, 2009 at 10:46 AM mas Ć© q preciso de usar o GET..porque tenho um campo hidden que preciso e com o POST nao faz o que quero š esta do GET foi outra duvida minha no forum: http://www.portugal-a-programar.pt/index.php?showtopic=31535 ...Join the dark side...and get a free cookie... Link to comment Share on other sites More sharing options...
yoda Posted December 7, 2009 at 11:00 AM Report Share #299042 Posted December 7, 2009 at 11:00 AM Uma coisa não invalida a outra amigo. Campos ocultos são passados por POST na mesma. before you post, what have you tried? - http://filipematias.info sense, purpose, direction Link to comment Share on other sites More sharing options...
diokhan Posted December 7, 2009 at 11:02 AM Author Report Share #299043 Posted December 7, 2009 at 11:02 AM tao neste caso com o POST o codigo ficaria: echo'<form method="POST" action="restrito.php?opcao=project"> Ā Ā Ā <fieldset> Ā Ā Ā Ā <label for="consulta">Search:</label> Ā Ā Ā Ā <input type="hidden" value="project" name="opcao" /> Ā Ā Ā Ā <input type="text" id="consulta" name="consulta" maxlength="255" /> Ā Ā Ā Ā <SELECT name=lst_project> Ā Ā Ā Ā <option value=NAME_PROJECT>Project</option> Ā Ā Ā Ā <option value=DESCRIPTION>Description</option> Ā Ā Ā Ā <option value=ID_PLATE>Plate</option> Ā Ā Ā Ā </SELECT> Ā Ā Ā Ā <input type="submit" value="Search" /> Ā Ā Ā </fieldset> Ā Ā </form>'; e na query: SELECT * FROM project WHERE '".$_POST['lst_project']."' LIKE '%".$_POST['consulta']."%' ORDER BY ID_PROJECT ASC certo? ou tenho de alterar algo? eu pensava que por causa dos campos hidden precisava mesmo de usar o GET š eu mudei do GET para o POST..mas agora sempre que faƧo uma pesquisa nao acontece nada š ...Join the dark side...and get a free cookie... Link to comment Share on other sites More sharing options...
yoda Posted December 7, 2009 at 12:07 PM Report Share #299049 Posted December 7, 2009 at 12:07 PM Sim, em princĆpio Ć© só isso, se nao tiveres mais campos com $_GET .. $_GET Ć© mais usado para campos que precisem ser passados pelo url before you post, what have you tried? - http://filipematias.info sense, purpose, direction Link to comment Share on other sites More sharing options...
diokhan Posted December 7, 2009 at 12:08 PM Author Report Share #299050 Posted December 7, 2009 at 12:08 PM eu ja troquei todos os GET por POST, mas sempre que faƧo pesquisar nao acontece nada, fica na mesma š ...Join the dark side...and get a free cookie... Link to comment Share on other sites More sharing options...
diokhan Posted December 7, 2009 at 12:23 PM Author Report Share #299052 Posted December 7, 2009 at 12:23 PM ja vi o meu erro..onde eu tinha: WHERE '".$_POST['lst_user']."' eu tinha de ter: WHERE ".$_POST['lst_user']." nao funcionava por causa de uma ' mas ja esta a funcionar..obrigado pela ajuda š ...Join the dark side...and get a free cookie... Link to comment Share on other sites More sharing options...
diokhan Posted December 10, 2009 at 12:14 PM Author Report Share #299577 Posted December 10, 2009 at 12:14 PM uma ultima duvida sobre o search..eu faço o search numa boa, mas se eu clicar num dos icones da tabela, apresenta os dados abaixo e a logica seria nao perder a pesquisa, mas perco a pesquisa. eu deixo aqui o meu codigo caso alguem possa ajudar-me <?php require_once ('../Project Manager/admin/page.php'); echo'<form method="POST" action="restrito.php?opcao=project">    <fieldset>     <label for="consulta">Search:</label>     <input type="text" id="consulta" name="consulta" maxlength="255" />     <SELECT name=lst_project id=lst_project>     <option value=NAME_PROJECT>Project Name</option>     <option value=DESCRIPTION>Description</option>     <option value=ID_PLATE>ID Plate</option>     <option value=DATE>Date</option>     </SELECT>     <input type="submit" value="Search" />    </fieldset>   </form>'; echo'<table class="tabela" align=center>   <tr>     <th align=center>   Name Project     </th>     <th align=center>     Date     </th>    <th align=center>     Id Plate    </th>    <th align=center>     View Project    </th>'; /* Verifica nivel de acesso do utilizador.     Apenas quem tem acesso de nivel 2 consegue visualizar estas opções. */ if (isset($_SESSION['ACCESS_LEVEL'])){ if ($_SESSION['ACCESS_LEVEL']==2){    echo'<th align=center>    Edit Project    </th>    <th align=center>    Delete Project    </th>    <th align=center>    View Task    </th>    </tr>';    } }      $conexao = new Conexao(); $conexao = $conexao->conexao; $paginacao = new Paginacao_PDO(); if (!isset($_POST['consulta'])) { $paginacao->sql = "SELECT * FROM project ORDER BY ID_PROJECT ASC"; } else{ $paginacao->sql = "SELECT * FROM project WHERE ".$_POST['lst_project']." LIKE '%".$_POST['consulta']."%' ORDER BY ID_PROJECT ASC"; } $res = $conexao->query($paginacao->sql()); while($r = $res->fetch(PDO::FETCH_OBJ)) {     echo '<tr>     <td>';     print $r->NAME_PROJECT;     echo'</td>     <td>';     print $r->DATE;     echo'</td>     <td align=center>';     print $r->ID_PLATE;     echo"</td>     <td align=center>    <a href=restrito.php?opcao=project&po=view&id=$r->ID_PROJECT>    <img src=images/add.png border=0 align=center></a>    </td>";         /* Verifica nivel de acesso do utilizador.     Apenas quem tem acesso de nivel 2 consegue visualizar estas opções. */     if (isset($_SESSION['ACCESS_LEVEL'])){     if ($_SESSION['ACCESS_LEVEL']==2){     echo"    <td align=center>    <a href=restrito.php?opcao=project&po=edit&id=$r->ID_PROJECT>    <img src=images/pencil.png border=0 align=center></a>    </td>    <td align=center>    <a href=restrito.php?opcao=project&po=delete&id=$r->ID_PROJECT>    <img src=images/cross.png border=0 align=center></a>    </td>    <td align=center>    <a href=restrito.php?opcao=project&po=task&id=$r->ID_PROJECT>    <img src=images/clipboard_text.png border=0 align=center></a>    </td>";     }     } echo'</tr>'; }     echo "</table>"; $paginacao->imprimeBarraNavegacao(); if ( isset ($_GET['po'])){ echo"<table align=center>"; if ($_GET['po']=='edit'){ include('admin/edit/edit_project.php'); }elseif($_GET['po']=='delete'){ include('admin/edit/delete_project.php'); }elseif($_GET['po']=='task'){ include('admin/viewtask.php'); }elseif($_GET['po']=='view'){ include('admin/viewproject.php'); } echo "</table>"; } ?> eu pensei em fazer um ciclo while dentro do: else{ //o while seria aqui $paginacao->sql = "SELECT * FROM project WHERE ".$_POST['lst_project']." LIKE '%".$_POST['consulta']."%' ORDER BY ID_PROJECT ASC"; } com a condiçao de fazer o ciclo ate sair da pagina..é possivel? ...Join the dark side...and get a free cookie... Link to comment Share on other sites More sharing options...
yoda Posted December 10, 2009 at 12:20 PM Report Share #299579 Posted December 10, 2009 at 12:20 PM NĆ£o percebi a Ćŗltima ideia. before you post, what have you tried? - http://filipematias.info sense, purpose, direction Link to comment Share on other sites More sharing options...
diokhan Posted December 10, 2009 at 12:23 PM Author Report Share #299582 Posted December 10, 2009 at 12:23 PM por exemplo..eu faƧo uma pesquisa e nos resultados faƧo editar um projecto, aparece a ediƧao em baixo, mas ao clicar em editar eu perco a pesquisa, mas gostaria que a pesquisa continuasse, que estivesse sempre a funcionar a pesquisa, e pensei em fazer algum ciclo antes da query da pesquisa para obrigar a manter a variavel activa. nao sei se a ideia que tenho Ʃ a mais correcta ...Join the dark side...and get a free cookie... Link to comment Share on other sites More sharing options...
yoda Posted December 10, 2009 at 12:38 PM Report Share #299589 Posted December 10, 2009 at 12:38 PM PHP é interpretado e no fim é lançado o resultado para o browser. A partir da altura em que fazem um request, deixas de ter qualquer php sequer, ficas só com o html, css, javascript, etc, como se fosse estÔtico. Se pusesses isso em execução com um cliclo, o que aconteceria é que o php ia ficar eternamente a pensar e não chegavas a receber o resultado estÔtico da pagina por completo, era até o php chegar ao limite de execução ou dar algum erro. Tens 2 soluções : 1. ir passando o valor da pesquisa (string) através das pÔginas, através de um input oculto (implica teres sempre um formulario que é executado) ou pelo url (ambas pouco usuais) 2. colocares na variÔvel de sessão, cookie ou base de dados com uso de um dos outros 2 como referência, o valor da pesquisa, e assim em cada pÔgina é só procurares esse valor e correr novamente a query. before you post, what have you tried? - http://filipematias.info sense, purpose, direction Link to comment Share on other sites More sharing options...
diokhan Posted December 10, 2009 at 01:26 PM Author Report Share #299603 Posted December 10, 2009 at 01:26 PM podes explicar melhor a segunda ideia por favor? talvez colocar nas variaveis de sessao seja mais simples e rapido nao? ? ...Join the dark side...and get a free cookie... Link to comment Share on other sites More sharing options...
yoda Posted December 10, 2009 at 01:30 PM Report Share #299606 Posted December 10, 2009 at 01:30 PM Sim, podes por nas variaveis de sessão directamente, se for coisa pouca, mas essas variÔveis têm limite de informação. before you post, what have you tried? - http://filipematias.info sense, purpose, direction Link to comment Share on other sites More sharing options...
diokhan Posted December 10, 2009 at 01:33 PM Author Report Share #299607 Posted December 10, 2009 at 01:33 PM mas vai ser pouca informação, é só mesmo o valor da pesquisa que preciso de guardar, e como faço para manter a pesquisa activa por assim dizer? guardo o valor da pesquisa na variÔvel de sessão e depois como a chamo para continuar a mesma pesquisa? que o meu problema é que sempre que clico em algum botão na mesma pagina, para editar ou apagar um registo da tabela eu perco a pesquisa, espero ter-me feito perceber ? PS: eu penso que ja sei o que tenho errado..reparei no link que obtenho antes de clicar em qualquer opçao, editar apagar ou assim tenho o link: http://localhost/Project%20Manager/restrito.php?pag=2&opcao=project depois de escolher uma opçao tenho o link: http://localhost/Project%20Manager/restrito.php?opcao=project&po=edit&id=79 basicamente, reparei que perco a variavel "pag=2", o que faz com que volte atras na paginaçao, o que eu nao queria, tenho a paginaçao feita numa classe num ficheiro a parte, é possivel buscar esta variavel pag de dentro da classe para o php? que assim eu colocava a variavel, "pag=$variavel", no: <a href=restrito.php?pag=$variavel&opcao=project&po=view&id=$r->ID_PROJECT> não sei se a ideia esta bem elaborada. ...Join the dark side...and get a free cookie... Link to comment Share on other sites More sharing options...
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