Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

erikabarrado

Upload com varias imagens em PHP e MYSQL

Recommended Posts

Boa noite, não tenho muito conhecimento em PHP, e estou com algumas dúvidas. Estou tentando fazer um formulário que cadastra várias informações e algumas imagens no banco de dados. Os campos da tabela são (valor_terreno, telefone, localizacao, contato_pessoa, cidade,imagem1, imagem2, imagem3, imagem4, imagem5, imagem6, observacao), no caso preciso que o codigo salve 6 imagens nas respectivas colunas. Já fiz com apenas 1 imagem e salva normalmente na pasta do servidor e no banco, mas com várias nunca tinha feito tentei realizando o código abaixo, salva as informações e nos campos das imagens salva 1 mesma imagem em todos os campos assim como na pasta do servidor fica somente uma. Alguém pode me ajudar? Segue codigos:

index.html

<form class="" action="recebe_terreno_1.php" method="POST" enctype="multipart/form-data">
<div class="row" >
<div class="col-md-6">
<div class="form-group">
<input type="text" class="form-control" placeholder="Digite o Valor do Terreno *" name="valor_terreno" id="valor_terreno" required data-validation-required-message="Você não digitou o valor!">
<p class="help-block text-danger"></p>
</div>
<div class="form-group">
<input type="tel" class="form-control" placeholder="Digite o Telefone *" name="telefone" id="telefone" required data-validation-required-message="Você não digitou o telefone.">
<p class="help-block text-danger"></p>
</div>
<div class="form-group">
<input type="text" class="form-control" placeholder="Digite a Localização *" name="localizacao" id="localizacao" required data-validation-required-message="Você não digitou a localização do Terreno.">
<p class="help-block text-danger"></p>
</div>
<div class="form-group">
<input type="text" class="form-control" placeholder="Digite o Contato *" name="contato_pessoa" id="contato_pessoa" required data-validation-required-message="Você não digitou o contato.">
<p class="help-block text-danger"></p>
</div>
<div class="form-group">
<textarea class="form-control" placeholder="Observação" name="observacao" id="observacao"></textarea>
<p class="help-block text-danger"></p>
</div>

</div>
<div class="col-md-6">
<div class="form-group">
<select class="form-control" name="cidade" id="cidade" >
<option value="Bauru" selected>Bauru</option>
<option value="Agudos" >Agudos</option>
<option value="Lencoes" >Lenções Paulista</option>
</select>
</div>

<div class="form-group">
<input type="file" class="form-control" name="arquivo[]">
<input type="file" class="form-control" name="arquivo[]">
<input type="file" class="form-control" name="arquivo[]">
<input type="file" class="form-control" name="arquivo[]">
<input type="file" class="form-control" name="arquivo[]">
<input type="file" class="form-control" name="arquivo[]">

</div>

</div>
<div class="row form-group">
<div class="col-sm-offset-5 col-sm-7">
<button type="submit" class="btn btn-success" value="Salvar">
<span class="glyphicon glyphicon-floppy-disk"></span> Salvar
</button>
<button type="submit" class="btn btn-danger" value="Limpar">
<span class="glyphicon glyphicon-refresh"></span> Limpar
</button>
</div>
</div>

</form>

recebe_terreno_1.php


<?php

include("./config.php");
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/

//CRIAR UMA LISTA COM TODOS OS MIME-TYPES PERMITIDOS
//Lista de tipos de arquivos permitidos
$tipoPermitidos = array('image/gif', 'image/jpeg', 'image/jpg', 'image/png');
//TAMANHO MÁXIMO (EM BYTES)
$tamanhoPermitido = 1024 * 3000; //700KB

/* @var $descricao type */
$valor_terreno = $_POST['valor_terreno'];
$telefone = $_POST['telefone'];
$localizacao = $_POST['localizacao'];
$contato_pessoa = $_POST['contato_pessoa'];
$cidade = $_POST['cidade'];
$observacao = $_POST['observacao'];


//O NOME ORIGINAL DO ARQUIVO NO COMPUTADOR DO USUÁRIO
$arqName1 = $_FILES['arquivo']['name'][0];
$arqName2 = $_FILES['arquivo']['name'][1];
$arqName3 = $_FILES['arquivo']['name'][2];
$arqName4 = $_FILES['arquivo']['name'][3];
$arqName5 = $_FILES['arquivo']['name'][4];
$arqName6 = $_FILES['arquivo']['name'][5];
//O TIPO MIME DO ARQUIVO. UM EXEMPLO PODE SER "foto/gif
$arqType1 = $_FILES['arquivo']['type'][0];
$arqType2 = $_FILES['arquivo']['type'][1];
$arqType3 = $_FILES['arquivo']['type'][2];
$arqType4 = $_FILES['arquivo']['type'][3];
$arqType5 = $_FILES['arquivo']['type'][4];
$arqType6 = $_FILES['arquivo']['type'][5];
//TAMANHO, EM BYTES, DO ARQUIVO
$arqSize1 = $_FILES['arquivo']['size'][0];
$arqSize2 = $_FILES['arquivo']['size'][1];
$arqSize3 = $_FILES['arquivo']['size'][2];
$arqSize4 = $_FILES['arquivo']['size'][3];
$arqSize5 = $_FILES['arquivo']['size'][4];
$arqSize6 = $_FILES['arquivo']['size'][5];
//NOME TEMPORARIO DO ARQUIVO, COMO FOI GUARDADO NO SERVIDOR
$arqTemp1 = $_FILES['arquivo']['tmp_name'][0];
$arqTemp2 = $_FILES['arquivo']['tmp_name'][1];
$arqTemp3 = $_FILES['arquivo']['tmp_name'][2];
$arqTemp4 = $_FILES['arquivo']['tmp_name'][3];
$arqTemp5 = $_FILES['arquivo']['tmp_name'][4];
$arqTemp6 = $_FILES['arquivo']['tmp_name'][5];
//O CÓDIGO DE ERRO ASSOCIADO A ESTE UPLOAD DE ARQUIVO
$arqError1 = $_FILES['arquivo']['error'][0];
$arqError2 = $_FILES['arquivo']['error'][1];
$arqError3 = $_FILES['arquivo']['error'][2];
$arqError4 = $_FILES['arquivo']['error'][3];
$arqError5 = $_FILES['arquivo']['error'][4];
$arqError6 = $_FILES['arquivo']['error'][5];


/*
* MOVENDO O ARQUIVO PARA A PASTA CERTA
*/

if (($arqError1 == 0)&&($arqError2 == 0) && ($arqError3 == 0) && ($arqError4 == 0) && ($arqError5 == 0) && ($arqError6 == 0)) {
//VERIFICA O TIPO DE ARQUIVO ENVIADO
if (array_search($arqType1, $tipoPermitidos) === false && array_search($arqType2, $tipoPermitidos) === false &&
array_search($arqType3, $tipoPermitidos) === false && array_search($arqType4, $tipoPermitidos) === false &&
array_search($arqType5, $tipoPermitidos) === false && array_search($arqType6, $tipoPermitidos) === false) {
echo 'O tipo de arquivo enviado é inválido!';
//VERIFICA O TAMANHO DO ARQUIVO ENVIADO
} elseif (($arqSize1 > $tamanhoPermitido) && ($arqSize2 > $tamanhoPermitido) &&
($arqSize3 > $tamanhoPermitido) && ($arqSize4 > $tamanhoPermitido) &&
($arqSize5 > $tamanhoPermitido) && ($arqSize6 > $tamanhoPermitido)) {
echo 'O tamnho do arquivo enviado é maior que o limite';
//NÃO HOUVE ERRO, MOVE O ARQUIVO
} else {
$pasta = 'imagem_terreno/';
//PEGA A EXTESÃO DO ARQUIVO ENVIADO
$tipo1 = strtolower(end(explode('.', $arqName1)));
$tipo2 = strtolower(end(explode('.', $arqName2)));
$tipo3 = strtolower(end(explode('.', $arqName3)));
$tipo4 = strtolower(end(explode('.', $arqName4)));
$tipo5 = strtolower(end(explode('.', $arqName5)));
$tipo6 = strtolower(end(explode('.', $arqName6)));
//DEFINE O NOME DO ARQUIVO USANDO UM UNIX TIMESTAMP
$nomea1 = time() . '.' . $tipo1;
$nomea2 = time() . '.' . $tipo2;
$nomea3 = time() . '.' . $tipo3;
$nomea4 = time() . '.' . $tipo4;
$nomea5 = time() . '.' . $tipo5;
$nomea6 = time() . '.' . $tipo6;

//ESCAPA OS CARACTERES DO ARQUIVO USANDO UM UNIX TIMESTAMP
$nomeMySQL = mysql_real_escape_string($_POST['valor_terreno']);
$nomeMySQL1 = mysql_real_escape_string($_POST['telefone']);
$nomeMySQL2 = mysql_real_escape_string($_POST['localizacao']);
$nomeMySQL3 = mysql_real_escape_string($_POST['contato_pessoa']);
$nomeMySQL4 = mysql_real_escape_string($_POST['cidade']);
$nomeMySQL5 = mysql_real_escape_string($_POST['observacao']);

$upload1 = move_uploaded_file($arqTemp1, $pasta . $nomea1);
$upload2 = move_uploaded_file($arqTemp2, $pasta . $nomea2);
$upload3 = move_uploaded_file($arqTemp3, $pasta . $nomea3);
$upload4 = move_uploaded_file($arqTemp4, $pasta . $nomea4);
$upload5 = move_uploaded_file($arqTemp5, $pasta . $nomea5);
$upload6 = move_uploaded_file($arqTemp6, $pasta . $nomea6);

//VERIFICA SE O ARQUIVO FOI MOVIDO COM SUCESSO
if (($upload1 == true) && ($upload2 == true) &&
($upload3 == true) && ($upload4 == true) &&
($upload5 == true) && ($upload6 == true)) {
//CRIA UMA QUERY MYSQL
$sql = "insert into pre_cadastro (valor_terreno, telefone, localizacao, contato_pessoa, cidade,
imagem1, imagem2, imagem3, imagem4, imagem5, imagem6, observacao)
values('$valor_terreno', '$telefone', '$localizacao', '$contato_pessoa', '$cidade', "
. "'$nomea1', '$nomea2', '$nomea3', '$nomea4', '$nomea5','$nomea6', '$observacao')";

$query = mysql_query($sql);
if ($query == true) {
echo "PRÉ CADASTRO DE TERRENO REALIZADO COM SUCESSO!";
header("Location: index.php");
}
}
}
} else {
echo"Ocorreu um erro com o upload, por favor tente novamente";
}

Compartilhar este post


Link para o post
Compartilhar em outros sites
Me parece que o problema é que você está gerando o nome dos arquivos sempre iguais (usar a função time() várias vezes, uma seguida da outra, retorna o mesmo valor), então as imagens são sobrescritas.


Utilize a função uniqid para gerar um nome único para cada imagem. Troque:


$nomea1 = time() . '.' . $tipo1;
$nomea2 = time() . '.' . $tipo2;
$nomea3 = time() . '.' . $tipo3;
$nomea4 = time() . '.' . $tipo4;
$nomea5 = time() . '.' . $tipo5;
$nomea6 = time() . '.' . $tipo6;


Por:


$nomea1 = uniqid() . '.' . $tipo1;
$nomea2 = uniqid() . '.' . $tipo2;
$nomea3 = uniqid() . '.' . $tipo3;
$nomea4 = uniqid() . '.' . $tipo4;
$nomea5 = uniqid() . '.' . $tipo5;
$nomea6 = uniqid() . '.' . $tipo6;

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por landerbadi
      Boa tarde pessoal. Estou tentado fazer uma consulta no banco de dados porém estou tendo dificuldades. Tenho uma tabela chamada "itens" com os seguintes campos: id, item, ativo. Nela tem cadastrado vários itens. No campo ativo eu coloco a letra "S" para informar que este item está ativo no sistema. Por exemplo: 1, casa, S 2, mesa, S 3, cama, S 4, moto S 5, rádio O quinto registro "radio" não está ativo no sistema pois não tem um "S" no campo ativo. E outra tabela chamada "produtos" com os seguintes campos (id, item1, item2, item3) com os seguintes registros: 1, casa, mesa, moto 2, mesa, casa, cama 3, rádio, cama, mesa Eu preciso fazer uma busca na tabela produtos da seguinte maneira: Eu escolho um registro na tabela "itens", por exemplo "mesa". Preciso fazer com que o php me liste todos os registros da tabela "produtos" que contenham a palavra "mesa". Até aqui tudo bem eu consigo listar. Estou fazendo assim: <?php $item = "mesa" $sql = mysqli_query($conn, "SELECT * FROM produtos WHERE item1 LIKE '$item' OR item2 LIKE '$item' OR item3 LIKE '$item' LIMIT 10"); while($aux = mysqli_fetch_assoc($sql)) { $id = $aux["id"]; $item1 = $aux["item1"]; $item2 = $aux["item2"]; $item3 = $aux["item3"]; echo $id . " - " . $item1 . ", " . $item2 . ", " $item3 . "<br>"; } ?> O problema é que está listando todos os registros que contém o item mesa. Eu preciso que o php verifique os demais item e me liste somente os registro em que todos os registros estejam ativos no sistema. No exemplo acima ele não deveria listar o registro 3. pois nesse registro contém o item "radio" e este item não está ativo no sistema. Ou seja, o registro "radio" na tabela itens não possui um "S" na coluna "ativo". Alguém sabe como resolver isso?
    • Por ILR master
      Fala galera.
      Espero que todos estejam bem.
      Seguinte: Tenho um arquivo xml onde alguns campos estão com : (dois pontos), como o exemplo abaixo:
       
      <item>
      <title>
      d sa dsad sad sadasdas
      </title>
      <link>
      dsadas dsa sad asd as dsada
      </link>
      <pubDate>sadasdasdsa as</pubDate>
      <dc:creator>
      d sad sad sa ad as das
      </dc:creator>
      </item>
       
      Meu código:
       
      $link = "noticias.xml"; 
      $xml = simplexml_load_file($link); 
      foreach($xml -> channel as $ite) {     
           $titulo = $ite -> item->title;
           $urltitulo = $ite -> item->link;
           print $urltitulo = $ite -> item->dc:creator;
      } //fim do foreach
      ?>
       
      Esse campo dc:creator eu não consigo ler. Como faço?
       
      Agradeço quem puder me ajudar.
       
      Abs
       
       
    • Por First
      Olá a todos!
       
      Eu estou criando um sistema do zero mas estou encontnrando algumas dificuldades e não estou sabendo resolver, então vim recorrer ajuda de vocês.
      Aqui está todo o meu código: https://github.com/PauloJagata/aprendizado/
       
      Eu fiz um sistema de rotas mas só mostra o conteúdo da '/' não sei porque, quando eu tento acessar o register nada muda.
      E eu também quero que se não estiver liberado na rota mostra o erro de 404, mas quando eu tento acessar um link inválido, nada acontece.
      Alguém pode me ajudar com isso? E se tiver algumas sugestão para melhoria do código também estou aceitando.
       
       
      Desde já, obrigado.
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.