Array
(
)

buscando uma imagem em um diretorio

PHP
Guicruz_1983
   - 07 mai 2013

ola pessoal, como vai?
sou novo no forum e estou precisando de uma ajuda...
estou aprendendo php e estou com uma duvida, vou tentar explicar o que estou fazendo
minha ideia é criar um tipo de dicionario ilustrado que funciona da seguinte forma...
em um textbox eu digito uma palavra, por exemplo "casa" ai cliko no botão para pesquisar, essa pesquisa estara buscando dentro de uma pasta em meu pc, tipo pasta "FOTOS" assim que ele encontrar a palavra casa, que na verdade estara como imagem casa.JPG ele tem que me mostrar na minha pagina php a imagem da casa...
não sei se fui claro na explicação... pensei em fazer com BD mas o meu prof, falou que o banco pode ficar muito carregado.
aguardo uma ajuda de vcs...
tenha um otimo dia

Jedipinguim
|
MVP
    07 mai 2013

Ola, tudo bem?

Cara a ideia é basicamente ler o nome de arquivos dentro de um diretório e pesquisar o nome do jpg.

Basicamente vc utilizará a função scandir para ler o conteudo do diretório:

#Código

<?php
$diretorio = '/caminho/para/diretorio/fotos';
$lista_dir = scandir($diretorio);

print_r($lista_dir);


Depois utilize um FOREACH para percorrer o array e pesquisar o nome do arquivo. Guardando todos os nomes que forem encontrando. Acho que é isso.

Uma sugestão para incrementar seu projeto. Seu professor está correto, guardar arquivos no MySql não é a melhor opção. Mas você pode usar o Banco de Dados como um catalogo com o nome, descrição e caminho da foto. Isso vai agilizar e muito na pesquisa, já que um banco de dados trabalha melhor com coleções e você poderá utilizar vários niveis de subdiretorios.

Espero ter ajudado.

Guicruz_1983
   - 07 mai 2013

obrigado pela ajuda Vinicius...

vc poderia me dar uma ideia melhor sobre o foreach, pois li algo sobre e não entendi muito bem, percebi que ele percorre o array mas não entendi como serão inseridos os itens da minha pasta dentro da sintaxe...

outra coisa a função fica no botão?

abaixo segue a pagina que ainda estou montando

<html>
<head>
<title> >>>>:: Dicionario ::<<<< </title>

<center><p><p><font face = "verdana" size = "4" color = "blue"><b>Dicionario</b>

<p><img src="logo.jpg">
</center>

<center><font face = "verdana" size = "3" color = "blue"><b>Seja Bem Vindo</b><p>
<center><font face = "verdana" size = "2" color = "blue">insira abaixo a palavra<p></b></font>
</p>
<tr>
<td>Palavra</td>
<td><label>
<input name="txtPalavra" type="text" id="txtPalavra" size="50" maxlength="50" />
</label></td>
</tr>
<p>
<label>
<input type="submit" name="btnBuscar" id="btnBuscar" value="Buscar" />

</center>

</head>
</html>

isso não vai ajudar muito mas...

desculpe a inexperiencia ainda

Jedipinguim
|
MVP
    07 mai 2013

gui,

O loop FOREACH é a maneira mais fácil de percorrer um array. Para cada interação, você pode pesquisar a linha do array, comparando com a palavra digitada.

#Código

<?php

//Depois de realizar toda a pesquisa no diretorio
//Crio o array que vou guardar os arquivos encontrados
$arquivos_encontrados = [];

//Percorrer o array com diretorios
foreach ($lista_dir as $arquivo) {
    
    // Verifica se o item do array é a palavra chave digitada
    if ($pesquisa == $arquivo) {
        
        $arquivos_encontrados[] = $arquivo;
        
    } 
    
}

?>


Claro que você pode incrementar este código. Permitindo a pesquisa por parte da palvra. Por exemplo a pessoa digita a palavra CASA e vc tb vai pesquisar CASAS.

Sobre a pergunta de onde estará o código, você com certeza colocará uma tag <FORM> com o atributo ACTION. Você pode chamar um arquivo .php com toda sua lógica e linkar no ACTION do formulário de pesquisa. Você sabe fazer isso?

Guicruz_1983
   - 08 mai 2013

sim ja utilizei o atributo action, creio que nessa parte não terei problema, não estou entendendo muita coisa sobre isso... meu prof. falou que é uma pagina simples e não estou conseguindo... não sei oque farei

Jedipinguim
|
MVP
    08 mai 2013

Realmente seu professor esta correto, não é algo tão complicado.

Você terá um arquivo html com o formulario de pesquisa ( Edit e Botão). E no Action do form vc vai colocar um arquivo PHP com a logica.

- Arquivo HTML - Com formulario
- Arquivo PHP - Com logica e mostrar imagem.

Em qual ponto está tendo dificuldades?

Guicruz_1983
   - 08 mai 2013

então vinicius, eu estava pensando em fazer tudo em uma unica pagina, até pensei que daria certo... a pagina htmleu ja fiz, agora o complicado esta na parte logica do coisa que ainda não tenho, fiz varias testes aqui mas meu conhecimento não ajudou muito...

eu criei a pagina principal, nela esta linkando com a pagina de pesquisa, nessa pagina de pesquisa tenho um textbox que pretendo digitar a palavra de busca, e tenho o botão para mandar o comando de busca, só montei o basico ainda... pelo que conheco um pouco de delphi creio que os comando serão inseridos dentro do botão pesquisar, ele que fara a ação de buscar dentro do diretorio, ai sera apresentado ao lado a imagem recuperada...

Jedipinguim
|
MVP
    08 mai 2013

É possivel fazer tudo em uma página sim. mas não recomendado. Porém se seu objetivo é entregar o trabalho, acredito que não terá problemas.
Cola seu código ai. Vamos ver o que posso te ajudar.

Guicruz_1983
   - 09 mai 2013

então essa pagina abaixo é o html queria fazer toda em php, sendo uma unica pagina como eu pensei que daria...
deletei todo o codigo que estava errado, pois não funcionava nada..

no trabalho tem varias outras paginas como, informações de libras, contatos, imagens entre outras coisas, mas tudo mais simples em html e jsp

#Código

<html>
<head>
<title> >>>>:: Dicionario de Libras ::<<<< </title>

<center><p><p><font face = "verdana" size = "4" color = "blue"><b>Dicionario de Libras</b>

<p><img src="logo.jpg">
	</center>
	
<center><font face = "verdana" size = "3" color = "blue"><b>Seja Bem Vindo</b><p>
<center><font face = "verdana" size = "2" color = "blue">insira abaixo a palavra<p></b></font>
</p>
    <tr>
      <td>Palavra</td>
      <td><label>
        <input name="txtPalavra" type="text" id="txtPalavra" size="50" maxlength="50" />
      </label></td>
    </tr>
	  <p>
    <label>
      <input type="submit" name="btnPesquisar" id="btnPesquisar" value="Pesquisar" />

</center>



</head>
</html>


eu estava tentando jogar os comandos dentro do botão pesquisar mas não deu certo

Jedipinguim
|
MVP
    09 mai 2013

Gui,

Eu fiz um pequeno exemplo de como seria um formulario, a leitura do valor do edit e imprimir na mesma pagina. Tente adaptar a suas necessidades. Qualquer coisa é só falar.

#Código

<?php

// Verifica se o formulario foi submetido.
// Alimentar a variavel de retorno para mostrar posteriormente
// Poderia ser um array com nome de arquivos
if(isset($_POST['submit']))
{
    $retorno = $_POST['nome'];
} else {
    $retorno = 'Digite o nome no Edit';
}
?>

<html>
<head>
    <title> Teste </title>
</head>

<body>
    <form method = "post" action = "<?php echo $_SERVER['PHP_SELF']; ?>">
        <input type = 'text' name = 'nome'>
        <input type = 'submit' name = 'submit'>
    </form>
</body>
</html>

<?php
    echo "Palavra Digitada : <b> $retorno </b><br>";
    echo "Se fosse uma imagem seria (Veja o fonte): <img src = '$retorno.jpg'>";
?>


Só um dica. Você deve tomar mais atenção as tag do html. Você esta abrindo e fechando de forma errada. Qual editor esta utilizando?

Guicruz_1983
   - 09 mai 2013

estou trabalhando com notepad++, não tenho como utilizar outras ferramentas aqui onde estou fazendo o trab.

Guicruz_1983
   - 10 mai 2013

é disso mesmo que eu estava precisando vinicius, adaptei o codigo na minha pagina e ficou perfeita, só estou incrementado o que estava faltando na pagina ta ficando muito boa, utilizei css pra ficar mais maneiro, estou com mais duas dificuldades em tratamento, uma é o alert, não sei onde estou errando, eu quero que quando a pessoa clika no botão pesquisar de um alerta se a palavra não existir ("Palavra ainda não cadastrada") no diretorio e tbm se ela clikar e não tiver colocado nada no edit (" por favor, insira uma palavra no campo de busca") são essas duas informações que estou precisando... se ainda poder me ajudar?

Jedipinguim
|
MVP
    15 mai 2013

Você já começou a desenvolver este Alert?

Coloque o código ai para analisar melhor.

Guicruz_1983
   - 15 mai 2013

sim vinicius, eu cheguei a desenvolver mas estava dando erro ai deletei e mudei, vou fazer novamente o que estava fazendo e postarei para vc ver... para vc ter uma idéia estava fazendo a tela de bem vindo apois login, ele até apareceu o alert apos efetuar o login mas quando clikava no ok ele não puxava a proxima pagina. Mas postarei para vc, se possivel amanhã mesmo... obrigado