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

Pegar Campo Dentro Da Função.


Penny Lane

Pergunta

Olá gente.. eu sou nova aqui na programação. Estou começando agora com php, javascript, css.. essas coisas todas...

Mas então... eu comecei agora aqui na empresa e já peguei muita coisa pronta.. então estou trabalhando em cima desses códigos prontos.. criando os meus..

O meu problema é o seguinte.

Eu tenho minha página index.php que tem uma função javascript para que quando um botão é clicado, essa função vai "criar" um novo campo para a inserção de fotos. Só poderá ser criado 10 campos para a inserção de fotos. Até aí, tudo bem. O problema todo então está na hora de salvar essas fotos.

Quando eu clico no botão "Enviar foto" esse botão vai me direcionar para uma outra página, a verifica.php pra verificar qual botão que foi clicado, já que eu tenho mais funções no meu código. Dae nessa função eu não estou conseguindo pegar o name do input que foi criado na função javascript.

Pra facilitar eu vou colar aqui os trechos dos códigos. Lembrando que essa parte toda ára inserir a foto, já está rodando em uma outra página, mas eu quero adicioná-la na minha para treinar e aprender mais:

Abaixo a função javascript para adicionar os campos. Essa função está na página index.php

<script language="javascript" type="text/javascript">

      function addCampo()    /// Adiciona mais campos file e desc ao formulário.
      {
        // report("");
         cont = document.getElementById("nroCampos").value;
          cont++;
          document.getElementById("nroCampos").value = cont;
          if(cont >= 11)
          {
            alert("Não é permitido o envio de mais de 10 Fotos de uma vez!");
            return false;
          }
          else
          {
           inserido = document.getElementById("campos").innerHTML;
            document.getElementById("campos").innerHTML = inserido+ "&nbsp;&nbsp;<input name='file[]' id='file' type='file' class='Boxes' size='30'>" + 
                                                              "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" + 
                                                              "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"+
                                                              "&nbsp;&nbsp;&nbsp;&nbsp;<input name='descFoto[]' id='descFoto' type='text' class='Boxes' size='70' maxlength='50'>"+
                                                              "<br><br>";
         }
     }  
</script>
Abaixo a página verifica.php onde vai fazer a inserção das fotos:
case 'envia':{

     if($_POST['up'])
         {
               $mostraStatus = true;
               $objImagens = new AdmImage();
               $objImagens->setDir($_POST['cdImo']);
               $objImagens->criaDir();
               $fotos = $_POST['descFoto'];
  
     for($i = 0; $i < sizeof($Fotos['name']); $i++)
    {
      
       $img = $objImagens->ordenaMultiplos($Fotos, $i);
       $objImagens->setAtributos($_POST['cdImo'], $i, $dxc[$i],$objImagens->imgNomeFinal);
       if($img['name'] != "")
       {
           $objImagens->setPropriedades($img);
           $objImagens->setNomeFoto();
           $objImagens->salvaImagem();
           $objImagens->set_X_Y();
           $objImagens->setNomeMini();
           $xy = $objImagens->validacoes(320, 240, 61440);
           if($xy)
           {
               $dxc = $_POST['descFoto'];
               $objImagens->setAtributos($_POST['cdImo'], $i, $dxc[$i],$objImagens->imgNomeFinal);
               $objImagens->insereFotoBD();
               $objImagens->geraMini(80, 60);
               $objImagens->marcaDagua("../../imagens/wm.png");
           }
       }
   }
   $errosOcorridos = $objImagens->erros;
   // relatório de erros....
   if($mostraStatus && count($errosOcorridos) > 0)
   {
    $errMsg = "<p class=error>&nbsp;&nbsp;Ocorreram Erros durante o envio. Veja os detalhes abaixo:</p><ul>";
     foreach($errosOcorridos as $erro)
     {
       $errMsg .= "<li>".$erro."</li>";
     }
     $errMsg .="</ul>";
   }
   if($mostraStatus && count($errosOcorridos) == 0)
   {
     $errMsg = "<p class=success>&nbsp;&nbsp;Todas as Imagens foram enviadas Corretamente!</p>";
   }
}

    }    
    
    break;

Bom, não se se só com isso alguém vai poder me ajudar..

se precisar também do código onde tem os botões e tals.. me avisem que eu posto aqui..

do mais espero obter ajuda..

heheheh

valeu gente. :P

Link para o comentário
Compartilhar em outros sites

11 respostass a esta questão

Posts Recomendados

  • 0

oi Penny, seja bem vinda ao forum.

pelo que entendi, você consegue criar os campos dinamicamentes via javascript.

correto!?

o seu problema não esta no js, e sim no arquivo php para capturar o valor dos inputs, é isso?

então seu problema parece ser com php e não com js.

vou mover para area adequada.

at+

Link para o comentário
Compartilhar em outros sites

  • 0

Provavelmente o seu erro está aqui:

$fotos = $_POST['descFoto'];
Outro detalhe:
$fotos = $_POST['descFoto'];
  
     for($i = 0; $i < sizeof($Fotos['name']); $i++)
    {
Onde é criada esta variavel $Fotos??? Porque $fotos é diferente de $Fotos pois o PHP é case sensitive. Para enviar algum arquivo para o servidor tu tem que usar a variavel global $_FILES. Neste caso ficaria assim:
$Fotos = $_FILES['file'];

E no formulário o enctype deve ser "multipart/form-data" caso contrário irá dá erro.

T+

André

Link para o comentário
Compartilhar em outros sites

  • 0

Então cara, eu arrumei aquilo tudo que você falou.. a variável case sensitive, que foi um descuido meu mesmo, porque no código de verdade estava certo, e coloquei o enctype="multipart/form-data" no formulário, mas mesmo assim não funcionou..

Eu coloquei uns echo ("teste 1").. aí pra testar e ver até onde ele estava indo.. e ele foi só até o teste 6.. dê uma olhada.. ve se pode me ajudar...

caso precise de mais alguma parte do código me fale que eu posto aqui.. se precisar do html onde tem os botões e tals..

if($_POST['up'])
    {
 echo ("teste 1");echo ("<br>");
   $mostraStatus = true;
   
    echo ("teste 2");echo ("<br>");
   $objImagens = new AdmImage();
   
    echo ("teste 3");echo ("<br>");
   $objImagens->setDir($_POST['cdImo']);
   
    echo ("teste 4");echo ("<br>");
   $objImagens->criaDir();
   
    echo ("teste 5");echo ("<br>");
   $Fotos = $_FILES['file'];
   
    echo ("teste 6");echo ("<br>");
   for($i = 0; $i < sizeof($Fotos['name']); $i++)
   {
       echo ("teste 7");echo ("<br>");
       $img = $objImagens->ordenaMultiplos($Fotos, $i);
       $objImagens->setAtributos($_POST['cdImo'], $i, $dxc[$i],$objImagens->imgNomeFinal);
       if($img['name'] != "")
       {
Valeu mais uma vez.. aguardo respostas... :lol: Então, eu fiz mais alguns testes aqui e eu percebi que essa parte do código que não está funcionando :
$Fotos = $_FILES['file'];
Como que eu sei? porque eu coloquei logo abaixo no for a comparação com o operador == e dae entro na função, mas logicamente não salvou nada.. já que não tem nada pra salvar...
for($i = 0; $i == sizeof($Fotos['name']); $i++)

galera.. desespero total..

preciso de ajuda pra terminar isso.....

Link para o comentário
Compartilhar em outros sites

  • 0

é que lá no javascript ele tah criando desc_foto[] , um vetor... então pra ler no php você precisa de algo do tipo

//meio na loka

for ($i=0; $i < count($HTTP_POST_FILES['desc_foto']['tmp_name']); $i++) {
   $sFoto = $HTTP_POST_FILES['desc_foto']['name'][$i];
   $sDir   = 'fotos/'; //aqui vai o diretorio onde as fotos estao sendo salvas
   $urlFoto = $sDir . $sFoto;
   move_uploaded_file($HTTP_POST_FILES['desc_foto']['tmp_name'][$i], $urlFoto);   
}

não testei esse código, mas a idéia é por ai... pra ler a imagem você precisa da variavel $HTTP_POST_FILES, e depois precisa de move_uploaded_file pra salvar no servidor... e pra como você tah passando um vetor ( desc_foto[] ) vai precisar de uma estrutura de repetição pra ler os dados...

com certeza eu complikei mais tua cabeça, mas a coisa é loka mesmo... hehe

só uma pergunta: você pegou esse código pronto e ele tava funcionando?

Link para o comentário
Compartilhar em outros sites

  • 0

Oi.. ah então, eu peguei esse código funcionando sim.. mas ele tá rodando de uma maneira diferente..

Está tudo dentro da index.php não tem a página verifica, entende?

Bom eu vou tentar fazer algo do tipo que você (Dr. Gap) colocou aí.. não entendi muito bem o que você quis dizer com tudo isso não. mas vou tentar..

Ah.. mas uma coisa.. eu continuo fazendo isso: $Fotos = $_FILES['file']; antes do for?

porque isso que não está funcionando.. esse $Fotos, está vazio entende?

valeu..

Link para o comentário
Compartilhar em outros sites

  • 0

pra pegar a foto você usa $HTTP_POST_FILES['desc_foto']['name']

pra você entender dê um echo nessa variavel

echo $HTTP_POST_FILES['desc_foto']['name'];
mas como tah num vetor, tenta
$HTTP_POST_FILES['desc_foto']['name'][0]; //por exemplo, pode ser 1

eu nunca peguei arkivos de post num vetor, talvez esse ultimo comando não funcione direito...

mas pra você sair dessa você precisa pegar as imagens do $HTTP_POST_FILES e ainda depois fazer um move_uploaded_files... a única maneira que eu conheço de uplodear arkivos... vou fazer uns testes com um vetor de imagens e posto aqui o que eu descobrir...

abraço... t+

Link para o comentário
Compartilhar em outros sites

  • 0

teus problemas são os seguintes

<input name='descFoto[]' id='descFoto' type='text' class='Boxes' size='70' maxlength='50'>
se você quer fazer upload de arquivo então type deve ser file e não text ... o certo seria
<input name='descFoto[]' id='descFoto' type='file' class='Boxes' size='70' maxlength='50'>
outra coisa.... ele não entra no for porque tah assim o teu for
$fotos = $_POST['descFoto'];  
     for($i = 0; $i < sizeof($Fotos['name']); $i++)
o correto seria
$fotos = $_FILES['descFoto'];
   for ($i=0; $i < sizeof($fotos['name']); $i++)

agora é pra entra no for... e não eskeça de colocar as fotos quando testar, senão não entra de jeito nenhum...

faz o teste ai, e a gente vai ajudando daki

abraço

Editado por Dr. Gap
Link para o comentário
Compartilhar em outros sites

  • 0

Genteeeeeeeee

graças a paciência e competência do amigo DR GAP eu consegui arrumar meu código....

O que estava acontecendo é que lá na minha função JS eu estava criando o campo no form errado, não era no form que tinha o botão de enviar esses dados.. por isso que a variável estava vazia..

Qual a solução???

A minha função JS vai analisar o local de criação do campo por essa linah de código:

inserido = document.getElementById("campos").innerHTML;

logo, esse meu "elemento" campos estava em local errado, foi so alterar a localização dele para dentro do form que vai enviar esses dados que funcionou tudo..

:lol: :lol: :lol:

Muito obrigada DR. GAP :P :P

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,8k
×
×
  • Criar Novo...