Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
E ae pessoal,
Preciso de uma orientação no seguinte,
Fazendo algumas pesquisas cheguei no código onde seleciono multiplas imagens e as coloco em uma pasta especifica, até tranquilo.
Mas agora eu preciso que dentro do meu foreach cada imagem seja gravada na base de dados, ou seja, ao receber cada imagem eu terei de gravar na base linha a linha.
Tentei colocar o insert dentro do foreach mas não deu...algué tem alguma orientação de onde posso incluir meu insert por exem da tabela imagens ( codimg, nomeimagem )
Fiz o meu foreach desta forma:
session_start();
foreach($_FILES['images']['error'] as $key => $error){
if($error == UPLOAD_ERR_OK){
$name = $_FILES['images']['name'][$key];
$_SESSION['imagens'][] = $name;
move_uploaded_file($_FILES['images']['tmp_name'][$key], 'imagens/anuncios/upload/'.$name);
}
// Eu encontrei esta instrução abaixo mas não acredito que seja a forma mais adequada e esta tb não funcionou
foreach($_SESSION['imagens'] as $key => $imagem){
$sql = "INSERT INTO fotos_anuncio ( nomeimagem) VALUES ('$imagens');" or die(mysql_error());
if($resultado=mysql_query($sql)){
echo "<script>alert('salvou');</script>";
}else{
echo die(mysql_error());
echo "Deu guru!";
}
}
}O que acontece de errado?
o primeiro código não faz sentido porque você fez um loop dentro do outro.
mas qual o problema desse segundo? o que aparece?
isso aqui:
$sql = "INSERT INTO fotos_anuncio ( nomeimagem) VALUES ('$imagens');" or die(mysql_error());
está errado.
tente assim:
session_start();
foreach($_FILES['images']['error'] as $key => $error){
if($error == UPLOAD_ERR_OK){
$name = $_FILES['images']['name'][$key];
$_SESSION['imagens'][] = $name;
move_uploaded_file($_FILES['images']['tmp_name'][$key], 'imagens/anuncios/upload/'.$name);
$sql = "INSERT INTO fotos_anuncio (nomeimagem) VALUES ('$name');";
mysql_query($sql) or die(mysql_error());
}
}Tentei,
Na verdade a tela carrega as fotos na div, chama o javascript para upload das fotos na pasta, mas passa batido pelo INSERT.
Nem uma mensagem pelo insert exibe em tela...
Então procure no log da aplicação o que está acontecendo.
Sem mensagem de erro é impossível averiguarmos. Como o problema é PHP vou transferir teu tópico de fórum.
Alguém ai já passou por algo parecido para dar um norte.
Olhei com f12 para ver logs de erros mas não gerou nada.
Você tem que ver os logs do servidor. E não no F12.
Pesquise como ver os logs do php/apache no teu sistema operacional.
Opa William,
Olhei no easy nos log files > Apache error e Mysql error , e não contém nada na data atual quando tento executar as inclusões.
Vou ver se acho algum outro tipo, de envio com preview de múltiplas imagens pra base de dados.
RESOLVIDO
Opa descobri,
havia um bloqueio no servidor, devido ao limite de "mb" de envio das imagens, acho que estava impedindo de certa forma isso.
Segue para quem precisar usar um dia.
Seleção das imagens:
<form action="upload.php" enctype="multipart/form-data" method="post" >
<input type="file" name="images[]" id="images" multiple>
<button type="submit" id="btn">Enviar Arquivos</button>
</form>
**Publicando na base de dados:**
<?php
session_start();
include "conexao_banco";
foreach($_FILES['images']['error'] as $key => $error){
if($error == UPLOAD_ERR_OK){
$name = $_FILES['images']['name'][$key];
$_SESSION['imagens'][] = $name;
move_uploaded_file($_FILES['images']['tmp_name'][$key], 'local onde ira mover as imagens/'.$name);
$sql = "INSERT INTO tabela (nomeimagem) VALUES ('$name');";
mysql_query($sql) or die(mysql_error());
}
}
?>
**William obrigado pela atenção ae**.
**faz tempo que não entro no site e mudou, onde eu coloco o post como resolvido ?**Me deparei com mais um ultimo ponto para fechar.
Eu precisaria passar um id de anuncio como parâmetro
Tentei de duas formas: passando por input text e pegando no $_POST e/ ou passando por GET e pegando por $_GET
Mas ele insere zero na base, tipo não pega o POST ou o GET
Não entendi....
<form action="upload.php?id=<?php echo $_GET['id']?>" enctype="multipart/form-data" method="post" >
<input type="text" name="idanuncio" value="25">
<input type="file" name="images[]" id="images" multiple>
<button type="submit" id="btn">Enviar Arquivos</button>
</form>
Para salvar na base o idanuncio
foreach($_FILES['images']['error'] as $key => $error){
if($error == UPLOAD_ERR_OK){
$name = $_FILES['images']['name'][$key];
$_SESSION['imagens'][] = $name;
move_uploaded_file($_FILES['images']['tmp_name'][$key], 'imagens/anuncios/upload/'.$name);
$idanuncio = $_POST['idanuncio'];
**ou usando GET
$idanuncio = $_GET['idanuncio'];
$sql = "INSERT INTO fotos_anuncio (idanuncio, nomeimagem) VALUES ('$idanuncio','$name');";
mysql_query($sql) or die(mysql_error());
}
}<input type="hidden" name="id" value="<?=$_GET['id']?>">
Add no form um input escondido.E ae Williams
Justamente fiz isto mas não vai, as imagens estão sendo salva na base corretamente mas o input text que contém meu valor ou até mesmo o $_GET não absorve o valor no arquivo upload.php
Não sei o que pode ser que acontece...
Inseri diretamente o valor e no arquivo upload.php não esta pegando este valor do input,..
<input type="text" name="idanuncio" value="25"><form action="upload.php" enctype="multipart/form-data" method="post" >
<input type="hidden" name="idanuncio" value="25">
<input type="file" name="images[]" id="images" multiple>
<button type="submit" id="btn">Enviar Arquivos</button>
</form>
Faça um debug nos dados .
upload.php
var_dump($_POST);
e ve se chega o postVem este retorno:
array(1) { ["idanuncio"]=> string(2) "25" }
Só que tem uma coisa Williams...eu uso um js que faz o esquema das imagens multiplas e chama o upload.php .
Cara eu acho que eu deve passar este parametro pelo JS ..
Bha só pode ser isso não é?Faça o teste, mas se você fez o debug e esta aparecendo a string lá porque já foi enviada ou não!?
Testa diretamente, cara isso é bem básico, seja passado por js ou não!
$idanuncio = isset( $_POST['idanuncio'] ) ? $_POST['idanuncio'] : false;
echo $idanuncio;
Tentei desta forma e também não deu..