Jump to content
eduardaarosaa

Foreach array

Recommended Posts

Ola!!!!

Tenho essa função: 

 public function cadastro_info(Request $request)
    {
        $images=array();
        if($files=$request->file('images')){

            foreach($files as $key => $file){
                $name=$file->getClientOriginalName();
                $extension = $file->getClientOriginalExtension();
                $new = rand();
                $file->move('image',$new.'.'.$extension);
                $images[]=$new. '.' .$extension;
                
            }
            }
        }

Ela move 4 arquivos para a pasta image, estou tentando pegar um array com o nome das 4 imagens para adicionar no banco de dados, mas não tive sucesso ...

Tentei pegar pela posição, mas ela só retorna a primeira imagem e quando tento colocar [1] por exemplo fiz dá esse erro: Use of undefined constant images - assumed 'images' (this will throw an Error in a future version of PHP). 

Share this post


Link to post
Share on other sites

Aqui você obtém a extensão:

$extension = $file->getClientOriginalExtension();

Aqui você cria o novo nome do arquivo:

$new = rand(); // Sugiro que use a função time(); rand() pode gerar nomes duplicados a longo prazo....

 

O que podemos fazer é criar um atributo que será tratado como array e a cada volta do loop adicionamos um novo índice a esse atributo:

Na verdade você já está fazendo isso aqui:

$images[]=$new. '.' .$extension;

 

Então basta que não trate $images como array de escopo e sim como atributo da classe:

 

private $images = []; // Adicione esse novo atributo em sua classe

 

Removendo isso:

$images=array();

E substituindo isso

$images[] = $new. '.' .$extension;

Por

$this->images[] = $new. '.' .$extension;

 

Basta então criar um método para retornar esse valor:

public function verArray() {
  return ($this->images);
}

 

Agora então poderá consultar o nome de todas as imagens geradas pelo método

cadastro_info

 

Citar

Caso queira associar numericamente cada índice basta criar uma variável com indicar quantas voltas o loop deu.

Antes do foreach entre com a variável

$contagem = 0;

então ao registrar os índices:

$contagem++;

$this->images[$contagem] = $new. '.' .$extension;

 

Share this post


Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By EvertonFD
      Olá alguém pode me ajudar?
      estou tentando pegar valores do check box selecionado e por no banco de dados a questão é que:
      Quando eu faço uma seleção vai de boa quando seleciono mais de uma fica tudo em branco.
      estou usando esse codigo:
      <?php if(isset($_POST['submit'])){ if(!empty($_POST['checkArr'])){ foreach($_POST['checkArr'] as $checked){ echo $checked . '<br>'; } } else { echo '<div class="error">Checkbox is not selected!</div>'; } } ?> <div class=" form-row"> <div class="col-md-4 text-left"> <div class="form-check col-md-12"> <input class="form-check-input" type="checkbox" name="checkArr[]" value="Iluminação Publica"> <label class="form-check-label" for="gridCheck"> Iluminação Publica </label> </div> <div class="form-check col-md-12"> <input class="form-check-input" type="checkbox" name="checkArr[]" value="Saneamento Basíco"> <label class="form-check-label" for="gridCheck"> Saneamento Basíco </label> </div> <div class="form-check col-md-12"> <input class="form-check-input" type="checkbox" name="checkArr[]" value="Alamentos"> <label class="form-check-label" for="gridCheck"> Alagamentos </label> </div> //que vai para o insert: <?php session_start(); include_once("../conexao.php"); $nome = filter_input(INPUT_POST, 'nome', FILTER_SANITIZE_STRING); $email = filter_input(INPUT_POST, 'email', FILTER_SANITIZE_EMAIL); $tel = filter_input(INPUT_POST, 'telefone', FILTER_SANITIZE_STRING); $bairro = filter_input(INPUT_POST, 'bairro', FILTER_SANITIZE_STRING); $end = filter_input(INPUT_POST, 'end', FILTER_SANITIZE_STRING); //--------------------------------- $problema = filter_input(INPUT_POST, 'checkArr[]', FILTER_SANITIZE_STRING); $observacao = filter_input(INPUT_POST, 'observacao', FILTER_SANITIZE_STRING); //--------------------------------- //$resposta = filter_input(INPUT_POST, 'resposta', FILTER_SANITIZE_STRING); $result_usuario = "INSERT INTO itaim ( nome, email, telefone, bairro, rua_cep, problemas, detalhes, created) VALUES ('$nome', '$email' , '$tel' , '$bairro' , '$end' , '$problema' , '$observacao' , NOW())"; $resultado_usuario = mysqli_query($conn, $result_usuario); if(mysqli_insert_id($conn)){ $_SESSION['msg'] = "<p style='color:green;'>Menssagem envida</p>"; header("Location: ../index.php"); }else{ header("Location: ../index.php"); //$_SESSION['msg'] = "<p style='color:red;'>Houve um errono envio favor informar.</p>"; } Quem puder me ajudar agradeço muito
       
    • By juliosertori
      Amigos, estou utilizando um sistema de FormValidation, e vem pronta algumas coisas, mas estou com dúvida:
       
      Como pego os dados desse POST no PHP?
       
      FormValidation.utils.fetch(formSubmitUrl, { method: 'POST', dataType: 'json', params: { name: form.querySelector('[name="username"]').value, email: form.querySelector('[name="password"]').value, }, }) Obrigado!
    • By msergioaguiar
      boa noite a todos

      hoje um cliente me procurou querendo um sistema.
      ele Trabalha com aposta esportiva ele quer um sistema q quando ele fazer a aposta na conta dele esta aposta seja feita em varios outros usuarios q esta logados em pcs na intarnet.

      Gostaria de uma ajuda como vou fazer isso mais gostei muito do projeto

      desde ja fico muito grato a todos pela ajuda
    • By Usleydocarmo
      Estou com o seguinte erro:
      Ao acessar o meu site na pagina principal tudo ok. Porém quando acesso em um menu que vai carregar um arquivo que está em uma pasta e não na pasta raiz, ai o arquivo css não é carregado.
       
      <a href="usuarios"> home</a> chamo o arquivo funcionarios na mesma pasta onde está o arquivo index.php -funciona
      <a href="usuarios/usuarios"> home</a>  Pasta 'usuarios' e dentro dela chamo o arquivo 'usuarios' - ai não funciona
       
      Descobri que quando entro na pasta usuários fica assim, com a basta no diretório do arquivo. Como corrigir?
      <link rel="stylesheet" href="http://localhost/keiri/admin/usuarios/plugins/fontawesome-free/css/all.min.css&nbsp;">
       
      Meu htaccess
      RewriteRule ^([a-z]+)\/?$ dashboard.php?arquivo=$1 [NC,L]
      RewriteRule ^([a-z]+)\/([a-z]+)$ dashboard.php?pasta=$1&arquivo=$2 [NC,L]
      RewriteRule ^([a-z]+)\/([a-z]+)\/([0-9]+)$ dashboard.php?pasta=$1&arquivo=$2&item=$3 [NC,L]
    • By msantino
      Bom dia.
       
      Estou desenvolvendo uma aplicação que vai acessar e gravar dados via webservice dentro do nosso crm... mas estou com um problema que quando tento fazer o acesso mostra a seguinte mensagem de erro:
       
      Fatal error: Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing Schema: can't import schema from 'http://dsksp015.phonoway.com.br:8051/wsDataServer/mex?xsd=xsd0' in /home/httpd/html/phonoweb.com.br/public_html/carrinhobitrix_busca/teste_soap.php:113 Stack trace: #0 /home/httpd/html/phonoweb.com.br/public_html/carrinhobitrix_busca/teste_soap.php(113): SoapClient->SoapClient('http://187.93.2...') #1 {main} thrown in /home/httpd/html/phonoweb.com.br/public_html/carrinhobitrix_busca/teste_soap.php on line 113
       
      Não sei se faz alguma diferença, mas nosso CRM é o TOTVS RM
       
      Grato.
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.