Joel F 6 Denunciar post Postado Abril 1, 2013 Ola, pessoal. Eu estou com uma duvida com relação a possibilidade de fazer algo. Bem eu tenho um formulário e possui um campo de upload. Gostaria de fazê-lo funcionar como alguns que vejo na internet em que a pessoa escolhe a foto e clica em enviar. A foto que ela enviou aparece listada perto do campo permitindo que ela vá adicionando arquivos e só realmente finaliza o envio quando a pessoa clica por exemplo no botão de concluir. Para isso eu precisaria de uma variável em php que guarda-se o valor adicionado em um array mas sem sobrescrever com o submit isso é possível? <html> <input type="file" name="foto[]"/> <input type="submit" name="mais-foto" value="+"/>// input para adicionar valor; Essa é só uma das formas que eu tentei. Eu até consigo guardar o array sem problema. Mas sempre acontece do array sobrescrever o anterior. Mesmo que a variável $_post['foto'] esteja como um array quando ela recebe os dados da nova foto ela não adiciona a linha mas sobrescreve a anterior. <php> if(isset($_POST['mais-foto'])): $fotos = $_FILES['foto']; echo $fotos['name'][0].'<br />'; endif; Gostaria de saber se fazer algo como isso é possível ou se a cada submit todas as variáveis são sobrescritas independente de serem array. Obrigado. Compartilhar este post Link para o post Compartilhar em outros sites
Vinicius Rangel 208 Denunciar post Postado Abril 1, 2013 $indice = 0; if(isset($_FILES['mais-fotos'])){ $indice++; $array[$indice] = $_FILES['name']; } Isso aqui é conceitual, não vai funcionar simplesmente assim. mas vc precisa mudar o seu indice, é a ideia que to passando. Compartilhar este post Link para o post Compartilhar em outros sites
Joel F 6 Denunciar post Postado Abril 1, 2013 $indice = 0; if(isset($_FILES['mais-fotos'])){ $indice++; $array[$indice] = $_FILES['name']; } Isso aqui é conceitual, não vai funcionar simplesmente assim. mas vc precisa mudar o seu indice, é a ideia que to passando. Obrigado pela resposta, mas ainda não esta dando certo acredito que o problema é que em uma variável normal o valor é apagado ao fim do script. Teria que ser em outra por isso pensei numa superglobal vou postar o código junto com o html talvez fique melhor de visualizar <td class="input"> <?php $i = 0; if(isset($_POST['mais-foto'])): $i++; $_FILES['img'][$i] = $_FILES['foto']; $fotos = $_FILES['img']; echo '<pre>'; print_r($_FILES['img']); echo '</pre>' foreach ($fotos as $foto) { echo $foto['name'][0]; } endif; ?> <input class="border-radius" type="file" id="nomes-auternativos" name="foto[]"/><input type="submit" name="mais-foto" value="+"/> </td> Compartilhar este post Link para o post Compartilhar em outros sites
Evandro Oliveira 331 Denunciar post Postado Abril 1, 2013 Obrigado pela resposta, mas ainda não esta dando certo acredito que o problema é que em uma variável normal o valor é apagado ao fim do script. Teria que ser em outra por isso pensei numa superglobal vou postar o código junto com o html talvez fique melhor de visualizar Superglobais são just-in-time. Você precisaria armazenar em sessão. Compartilhar este post Link para o post Compartilhar em outros sites
Joel F 6 Denunciar post Postado Abril 1, 2013 Superglobais são just-in-time. Você precisaria armazenar em sessão. Vlw, pela dica mas mesmo assim continua sobrescrevendo veja como ficou o código. <td class="input"> <?php $sessao = new sessao(); if(isset($_POST['mais-foto'])): $sessao->guardaFoto($_FILES['foto']); $fotos = $sessao->mostraFoto(); echo '<pre>'; print_r($fotos); echo '</pre>'; foreach ($fotos as $foto) { echo $foto['name'][0]; } endif; ?> <input class="border-radius" type="file" id="nomes-auternativos" name="foto[]"/><input type="submit" name="mais-foto" value="+"/> </td> e na classe sessão a variável que guarda e as funções que setam. Como eu já tinha essa classe apenas adicionei. private $fotos = array(); public function guardaFoto($foto){ $this->fotos[] = $foto; } public function mostraFoto(){ return $this->fotos; } Compartilhar este post Link para o post Compartilhar em outros sites
Joel F 6 Denunciar post Postado Abril 2, 2013 Superglobais são just-in-time. Você precisaria armazenar em sessão. Agora funciono da forma que eu gostaria valeu pela dica. Eu apenas mudei a forma em vez de guardar em uma variavel na classe sessao eu indiquei diretamente no código guardei na variável $_SESSION['img'][]. Agora só vou dar uma lida na net para ver se guarda essas informações nessa variável não é uma pratica ruim, se pode dar algum problema, se não vai dar algum problema com a classe que verifica o login afinal está também usa $_SESSION e etc... Mas vlw. <?php if(isset($_POST['mais-foto'])): $_SESSION['img'][] = $_FILES['foto']; $fotos = $_SESSION; echo '<pre>'; print_r($fotos); echo '</pre>'; endif; ?> Compartilhar este post Link para o post Compartilhar em outros sites