Jump to content
Fórum Script Brasil
  • 0

Pegar Campo Dentro Da Função.


Penny Lane
 Share

Question

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 to comment
Share on other sites

11 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

  • 0

Falae Dr GAP... ehehhe

Fiz uns testes malucos com tudo isso que você me passou.. mas não funcionou não...

ai ai ai .. e agora, José???

Bom, se você conseguir algo mais poste aí..

e eu add você no messene.. heehhee

obrigada merrmo aí..

até..

:lol:

Link to comment
Share on other 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

Edited by Dr. Gap
Link to comment
Share on other 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 to comment
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.

 Share

  • Forum Statistics

    • Total Topics
      149.8k
    • Total Posts
      646.6k
×
×
  • Create New...