Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Inserir 5 Fotos Ao Mesmo Tempo


fabiosanches

Pergunta

bom galera..to com esse probleminha ai.. e tipo.. uma so eu ate consigo.. tem um script q gera um codigo automatico para ela.. e baseado nesse codigo e caminho ele a vincula na tabela do banco depois eu tendo apenas q mandar exibir aquele caminho.. ate ai ok.. mais quando eu tento fazer o mesmo codigo para 5 imagens ao mesmo tempo. ele sempre traz o mesmo codigo randomico e insere e copia para o banco apenas o ultimo codigo gerado para todas as 5 fotos e copia apenas a ultima para o banco. segue abaixo o codigo para q possam me ajudar..

obrigado

<?
include("../conect.php");
$conn = mysql_connect("$srv","$usr","$pass");
$db = mysql_select_db("$dbase",$conn);
$tamanho = "512000"; //tamanho máximo da foto em bytes 
if (($foto1 != "") or ($foto2 != "") or ($foto3 != "") or ($foto4 != "") or ($foto5 != "")) {
if ($foto_size > $tamanho)
{die("Arquivo da foto muito grande. Ele deve ter $tamanho bytes ou menos.");}}

    // verifica se tem imagem sendo cadastrada
    if (trim($HTTP_POST_FILES["foto1"]["tmp_name"]) != "") {

        // o arquivo é gerado com um nome que nunca se repetirá para evitar que um arquivo existente seja perdido   
        // no exemplo, as fotos ficarão dentro do diretório "fotos", é necessário que o mesmo dê permissão total de gravação 
        // para o usuário que roda o Servidor web(nobody, wwwrun são os mais comuns)
        $foto1 = 'fotos/' . md5(md5($HTTP_POST_VARS["nome"]) . date("YmdHis")) . strstr(basename($HTTP_POST_FILES["foto1"]["name"]), '.');

        // arquivo com o local de origem
        $orig1 = $HTTP_POST_FILES["foto1"]["tmp_name"];

        // copia o arquivo para o destino    
        if (!copy($orig1, $foto1)) {
            echo "<br><br><center>Problemas no upload do arquivo: " . $HTTP_POST_FILES["foto1"]["name"] . "...<br>";
            $erro = "yes";
            $foto1 = "";
        }       
}


     // verifica se tem imagem sendo cadastrada
    if (trim($HTTP_POST_FILES["foto2"]["tmp_name"]) != "") {

        // o arquivo é gerado com um nome que nunca se repetirá para evitar que um arquivo existente seja perdido   
        // no exemplo, as fotos ficarão dentro do diretório "fotos", é necessário que o mesmo dê permissão total de gravação 
        // para o usuário que roda o Servidor web(nobody, wwwrun são os mais comuns)
        $foto2 = 'fotos/' . md5(md5($HTTP_POST_VARS["nome"]) . date("YmdHis")) . strstr(basename($HTTP_POST_FILES["foto2"]["name"]), '.');

        // arquivo com o local de origem
        $orig2 = $HTTP_POST_FILES["foto2"]["tmp_name"];

        // copia o arquivo para o destino    
        if (!copy($orig2, $foto2)) {
            echo "<br><br><center>Problemas no upload do arquivo: " . $HTTP_POST_FILES["foto2"]["name"] . "...<br>";
            $erro = "yes";
            $foto2 = "";
        }       
}

    // verifica se tem imagem sendo cadastrada
    if (trim($HTTP_POST_FILES["foto3"]["tmp_name3"]) != "") {

        // o arquivo é gerado com um nome que nunca se repetirá para evitar que um arquivo existente seja perdido   
        // no exemplo, as fotos ficarão dentro do diretório "fotos", é necessário que o mesmo dê permissão total de gravação 
        // para o usuário que roda o Servidor web(nobody, wwwrun são os mais comuns)
        $foto3 = 'fotos/' . md5(md5($HTTP_POST_VARS["nome3"]) . date("YmdHis")) . strstr(basename($HTTP_POST_FILES["foto3"]["name3"]), '.');

        // arquivo com o local de origem
        $orig3 = $HTTP_POST_FILES["foto3"]["tmp_name3"];

        // copia o arquivo para o destino    
        if (!copy($orig3, $foto3)) {
            echo "<br><br><center>Problemas no upload do arquivo: " . $HTTP_POST_FILES["foto3"]["name3"] . "...<br>";
            $erro3 = "yes";
            $foto3 = "";
        }       
}

    // verifica se tem imagem sendo cadastrada
    if (trim($HTTP_POST_FILES["foto4"]["tmp_name4"]) != "") {

        // o arquivo é gerado com um nome que nunca se repetirá para evitar que um arquivo existente seja perdido   
        // no exemplo, as fotos ficarão dentro do diretório "fotos", é necessário que o mesmo dê permissão total de gravação 
        // para o usuário que roda o Servidor web(nobody, wwwrun são os mais comuns)
        $foto4 = 'fotos/' . md5(md5($HTTP_POST_VARS["nome4"]) . date("YmdHis")) . strstr(basename($HTTP_POST_FILES["foto4"]["name4"]), '.');

        // arquivo com o local de origem
        $orig4 = $HTTP_POST_FILES["foto4"]["tmp_name4"];

        // copia o arquivo para o destino    
        if (!copy($orig4, $foto4)) {
            echo "<br><br><center>Problemas no upload do arquivo: " . $HTTP_POST_FILES["foto4"]["name4"] . "...<br>";
            $erro4 = "yes";
            $foto4 = "";
        }       
}

    // verifica se tem imagem sendo cadastrada
    if (trim($HTTP_POST_FILES["foto5"]["tmp_name5"]) != "") {

        // o arquivo é gerado com um nome que nunca se repetirá para evitar que um arquivo existente seja perdido   
        // no exemplo, as fotos ficarão dentro do diretório "fotos", é necessário que o mesmo dê permissão total de gravação 
        // para o usuário que roda o Servidor web(nobody, wwwrun são os mais comuns)
        $foto5 = 'fotos/' . md5(md5($HTTP_POST_VARS["nome5"]) . date("YmdHis")) . strstr(basename($HTTP_POST_FILES["foto5"]["name5"]), '.');

        // arquivo com o local de origem
        $orig5 = $HTTP_POST_FILES["foto5"]["tmp_name5"];

        // copia o arquivo para o destino    
        if (!copy($orig5, $foto5)) {
            echo "<br><br><center>Problemas no upload do arquivo: " . $HTTP_POST_FILES["foto5"]["name5"] . "...<br>";
            $erro5 = "yes";
            $foto5 = "";
        }       
}

        $sql4=mysql_query("insert into `tcarros`  values('','$nome','$marca','$ano','$modelo','$motor','$cor','$placa','$portas', '$categoria','$km','$combustivel','$valor','$ipva','$licenciamento','','$opcionais','$obs','','$foto1','$foto2','$foto3','$foto4','$foto5')") or die ("Itens Não Inseridos");
         echo ("<script language='JavaScript' type='text/javascript'>");
        echo ("window.location='addveiculo.php'");
        echo ("</script>");

?>

Link para o comentário
Compartilhar em outros sites

18 respostass a esta questão

Posts Recomendados

  • 0

Não resolvendo o teu problema ... mas contribuindo para melhorar esse script ... olha bem:

$foto1 = 'fotos/' . md5(md5($HTTP_POST_VARS["nome"]) . date("YmdHis")) . strstr(basename($HTTP_POST_FILES["foto1"]["name"]), '.');

Tá ok, o nome nunca vai se repetir, mas ter um nome inválido para a web do mesmo jeito...

Imagina que estou fazendo o upload da foto:

"zé e o patrão na fazenda.jpg"

O nome upado ia ficar algo do tipo

fotos/1234567891223456789112345678911220071116081510zé e o patrão na fazenda.jpg

se ficasse:

ze_e_o_patrao_na_fazenda.jpg

estaria ok.

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Fábio Sanches

obrigado pela resposta.. mais o q acontece é o seguinte.. ele modifica o nome da foto todo.. não utiliza nem o nome da foto nesse aleatorio não.. pega apenas o codigo gerado e o utiliza.. ou seja.. se o nome da foto for "a barrada do tio ze" ele não utiliza esse nome o caminho da foto q fica no banco nem no nome da foto não.. sendo q ele renomeia o arquivo. a minha duvida é q ele gera sempre um codigo aleatorio ai insere as 5 fotos com o mesmo codigo aleatorio.. ai é nisso q to me perdendo aki.. :(

Link para o comentário
Compartilhar em outros sites

  • 0

Sim, mas ele está "upando" as imagens ou não, ou o problema é apenas no que fica gravado no banco de dados?

Achei mais um problema ... neste if ele não vai entrar nunca!

if (($foto1 != "") or ($foto2 != "") or ($foto3 != "") or ($foto4 != "") or ($foto5 != ""))

teria que checar ["foto1"]["name"] or ["foto2"]["name"]

...

Link para o comentário
Compartilhar em outros sites

  • 0

ele ate entra no if porque eu verifiquei.. e tipo.. ele insere no banco e upa a foto.. normal.. porém o q acontece é oseguinte.. eu insiro 5 fotos diferentes.. na hora de inserir no banco ele insere o mesmo caminho para todas as 5 e consequentemente so upa uma foto pra pasta descrita ali.. ao invez de gerar 5 codigos aleatorios diferentes para upar 5 fotos diferentes.. o problema é q ele so gera um codigo aleatorio para todas sendo q preciso de 5 codigos diferentes...

Link para o comentário
Compartilhar em outros sites

  • 0

E se teu código ficasse assim?

<?php
include("../conect.php");
$conn = mysql_connect("$srv","$usr","$pass");
$db = mysql_select_db("$dbase",$conn);

include('inc.upload.php');

if( o formulário foi submetido .....)
 {

    if(!$foto1=upload('foto1','C:\\Arquivos de programas\\xampp\\htdocs\\'))
     echo 'erro 1';
     
    if(!$foto2=upload('foto2','C:\\Arquivos de programas\\xampp\\htdocs\\'))
     echo 'erro 2';
     
    if(!$foto3=upload('foto3','C:\\Arquivos de programas\\xampp\\htdocs\\'))
        echo 'erro 3';
    
    if(!$foto4=upload('foto4','C:\\Arquivos de programas\\xampp\\htdocs\\'))
     echo 'erro 4';
     
   if(!$foto5=upload('foto5','C:\\Arquivos de programas\\xampp\\htdocs\\'))
     echo 'erro foto 5';
     
 } // fim do if que testa se o form foi submetido

$sql4=mysql_query("insert into `tcarros`  values('','$nome','$marca','$ano','$modelo','$motor','$cor','$placa','$portas', '$categoria','$km','$combustivel','$valor','$ipva','$licenciamento','','$opcionais','$obs','','$foto1','$foto2','$foto3','$foto4','$foto5')") or die ("Itens Não Inseridos");
         echo ("&lt;script language='JavaScript' type='text/javascript'>");
        echo ("window.location='addveiculo.php'");
        echo ("</script>");

?>
eu não tinha estas funções, mas como qualquer dia iria precisar de algo mais fácil para fazer upload criei agora esse aqruivo que está dando include no código aí de cima... segue abaixo: arquivo inc.upload.php
<?php
/* parâmetros da função
$origem - o nome do campo de formulário do tipo FILE ex.: foto
$destino - o diretório para onde carregar o arquivo ex.: /home/user/site/img/
CAMINHO ABSOLUTO no destino, não o relativo


retorna false se não carregou e o nome do arquivo carregado se deu certo
o upload
*/
function upload($origem,$destino)
 {
   if (validfile($origem))
    { //se chegou aqui é porque tem um arquivo parra carregar
      $novoNome = md5($_FILES[$origem]['tmp_name']).'.'.ext($origem);
      if (move_uploaded_file($_FILES[$origem]['tmp_name'],$destino.$novoNome)) {
           return $novoNome; 
         }
      else
        return false;
    } else
     return false;
 } // fim da função 

/*
retorna true ou false, valida se o parâmetro (o arquivo se ser carregado )
se encontra nas condições estabeleciadas na função.

*/
function validfile($nomeCampo)
 {
    $tamMaxFoto=102400; // seta o tamanho máximo permitido isso aí é 100 kb
    $tamEmKb= ($tamMaxFoto/1024);
    
    $exValidas = array("gif","GIF","jpg","JPG","jpeg","JPEG");
    
    if(trim($_FILES[$nomeCampo]['name'])!='' and $_FILES[$nomeCampo]['size'] < $tamMaxFoto){

       if (in_array(ext($nomeCampo), $exValidas))
            return true;
    } // fim do tem nome
   
 }

/*
Esta função retorna a extenção do arquivo que é passado.
Parâmetro:
$uploadCampo - campo do formulário que vai ser usado para upload
*/
function ext($uploadCampo)
 {
     $ex = explode(".",$_FILES[$uploadCampo]['name']);
    $cnt = (count($ex) -1);
    $ex = $ex[$cnt];
    
    return $ex;
 }
?>
um exemplo de uso ... um pouco mais fácil
...
<?php
include('inc.upload.php');

if($_POST['btnSubmit']!='')
 {
   if(upload('file','C:\\Arquivos de programas\\xampp\\htdocs\\'))
      echo 'ok';
   else
     echo 'erro';
 }
?>
<form id="form1" name="form1" enctype="multipart/form-data" method="post" action="">
  <label>
  <input type="file" name="file" id="file" />
  <br />
  <input type="submit" name="btnSubmit" id="btnSubmit" value="Submit" />
  </label>
</form>
....
Adapta aí para que você precisa. t+ referente aos post das 9:48
ele ate entra no if porque eu verifiquei.. e tipo.. ele insere no banco e upa a foto.. normal.. porém o q acontece é oseguinte.. eu insiro 5 fotos diferentes..
Tá ok, mas no teu script original tem mais erros ...
$HTTP_POST_FILES["foto4"]["tmp_name4"]
isso não existe... existe sim
$HTTP_POST_FILES["foto4"]["tmp_name"]

Link para o comentário
Compartilhar em outros sites

  • 0

Para excluir um arquivo se usa o unlink (http://www.php.net/unlink), para excluir uma pasta o rmdir (http://www.php.net/rmdir), lembrando que você só pode apagar uma pasta que esteja vazia, já postei um código aqui no fórum para apagar todo o conteúdo de uma pasta utilizando um coringa...

Obviamente o processo é, o cara vai excluir, você pega a pasta apaga o conteúdo (com o unlink) e após a própria pasta se for o caso, com o rmdir...

Link para o comentário
Compartilhar em outros sites

  • 0

camarada.. ao q tudo indica esta funcionando ok.. só tme um porém.. esta dando erro de permissao na pasta na hora de deletar o arquivo.. e eu sou admin do pc.. se eu for la deleto os arquivos numa boa.. q q pode estar acontecendo??? me da uma luz ai..

abraços

e eu tbn não quero apagar a pasta inteira não cara.. quero so apagar determinadas fotos q estao como seu link la no bd.. ai eu vo buscar esse caminho das fotos no bd e apaga-los conforme eu apago os valores do bd.. o q eu fiz ficou +- assim

$foto=$pasta."/".$valordobd

unlink($foto);

ai ele da erro de permissao de pasta.. :(

Link para o comentário
Compartilhar em outros sites

  • 0

bom o chmod eu não sei porque eu to no XP aki e testei apenas permissao de pasta no sentiro de inserir e deletar itens da pasta e esta ok.. estou como admin da maquina.. mais tem o comando chmod no xp?? e segue abaixo o codigo q estou utilizando

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Deletando Veículo....10%....30%...50%...70%...100%...</title>
</head>
<body>
<?
//conectar no banco
include("../conect.php");
$conn = mysql_connect("$srv","$usr","$pass");
$db = mysql_select_db("$dbase",$conn);

     $codnot=$_GET['codnoticia'];
         $dir="fotos";
        $sql=mysql_query("delete from `tcarros` where `idcar`='$codnot'") or die ("Erro na exclusão da noticia");
        $sql1=mysql_query("Select * from `tcarros` where `idcar`='$codnot'") or die ("não achou a foto 1");
            while($linha=mysql_fetch_row($sql1))
        {  
        $foto=$dir."/".$linha[19];
        $foto1=$dir."/".$linha[20];
        $foto2=$dir."/".$linha[21];
        $foto3=$dir."/".$linha[22];
        $foto4=$dir."/".$linha[23];
                        
        }
        unlink($foto);
        unlink($foto1);
        unlink($foto2);
        unlink($foto3);
        unlink($foto4);
        
        /*echo ("<script language='JavaScript' type='text/javascript'>");
        echo ("window.location='listarveiculo.php'");
        echo ("</script>");*/

?>

</body>
</html>

e esse é o erro

Warning: Unlink failed (Permission denied) in c:\apache\htdocs\webcar\veiculos\delveiculo.php on line 26

Warning: Unlink failed (Permission denied) in c:\apache\htdocs\webcar\veiculos\delveiculo.php on line 27

Warning: Unlink failed (Permission denied) in c:\apache\htdocs\webcar\veiculos\delveiculo.php on line 28

Warning: Unlink failed (Permission denied) in c:\apache\htdocs\webcar\veiculos\delveiculo.php on line 29

Warning: Unlink failed (Permission denied) in c:\apache\htdocs\webcar\veiculos\delveiculo.php on line 30

Link para o comentário
Compartilhar em outros sites

  • 0

tipo.. a pasta aparece o somente leitura la nela.. mais eu desmarco dou ok e na hora q volto ele aparece de novo.. e tipo.. não sei porque não aparece o tipo de alteração de segurança na pasta não..

cara.. setei todas as premissoes aki como leitura e gravação.. nem sei mais o q pode ser... da uma luz ae..

abraços

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --heltonritter --

é windows vista que está usando? se for aí complica e do sistema operacional nâo sei te ajudar.

se for xp, faz o seguinte, vai no gerenciador de tarefas, e vê qual é o usuário que está executando o processo do "apache", eu também uso xampp aqui no ambiente de testes, o usuário deve ser SYSTEM

Da permissão total para ele na pasta. Deve resolver.

Alguém aí da área de sistemas operacionais sabe da alguma coisa que possa estar empedindo o processo do apache?

Link para o comentário
Compartilhar em outros sites

  • 0

fera.. eu vou fazer o teste do usuario SYSTEM.. e tipo.. aquele codigo q você me passou para inserir os itens.. tipo

if($post)
{

    if(!$foto1=upload('foto1','fotos\\'))
     echo 'erro 1';
    
    if(!$foto2=upload('foto2','fotos\\'))
     echo 'erro 2';
    
    if(!$foto3=upload('foto3','fotos\\'))
        echo 'erro 3';
    
    if(!$foto4=upload('foto4','fotos\\'))
     echo 'erro 4';
    
    if(!$foto5=upload('foto5','fotos\\'))
     echo 'erro 5';
}

quando eu uso ele local aki ele vai q é uma maravilha pra inserir.. mais foi so jogar pra web q nada feito.. Aff...

cara eu uso o xp.. dei permissao total a TODOS e nada feito.. to ficando doido aki já...

Link para o comentário
Compartilhar em outros sites

  • 0

nada feito.. e ficou pior ainda.. porque quando eu coloco na web.. mesmo eu setando a permissao da pasta fotos ele não insere os itens dando os erros "erro 1" , "erro 2" , "erro 3" , "erro 4" , "erro 5" q menciona o fato de não conseguir inserir os itens da pasta

Link para o comentário
Compartilhar em outros sites

  • 0

ae pessoal.. resolvido o problema.. hahaha bom.. era simples mais ninguém reparou nesse ponto.. heheh

$sql=mysql_query("delete from `tcarros` where `idcar`='$codnot'") or die ("Erro na exclusão da noticia");
        $sql1=mysql_query("Select * from `tcarros` where `idcar`='$codnot'") or die ("não achou a foto 1");
se repararem no codigo.. primeiro ele limpava todas as informações do banco depois buscava o campo para as fotos.. q consequentemente já estava vazio.. por isso não funcionada a exclusao das fotos.. foi apenas mudas o delete do banco para o final do script q funcionou.. ficando assim..
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Deletando Veículo....10%....30%...50%...70%...100%...</title>
</head>
<body>
<?
//conectar no banco
include("../conect.php");
$conn = mysql_connect("$srv","$usr","$pass");
$db = mysql_select_db("$dbase",$conn);

     $codnot=$_GET['codnoticia'];
         $dir="fotos";
        $sql1=mysql_query("Select * from `tcarros` where `idcar`='$codnot'") or die ("não achou a foto 1");
            while($linha=mysql_fetch_row($sql1))
        {  
        $foto=$dir."/".$linha[19];
        $foto1=$dir."/".$linha[20];
        $foto2=$dir."/".$linha[21];
        $foto3=$dir."/".$linha[22];
        $foto4=$dir."/".$linha[23];
                        
        }
        
        unlink("$foto");
        unlink("$foto1");
        unlink("$foto2");
        unlink("$foto3");
        unlink("$foto4");
          
        $sql=mysql_query("delete from `tcarros` where `idcar`='$codnot'") or die ("Erro na exclusão da noticia");          
        echo ("<script language='JavaScript' type='text/javascript'>");
        echo ("window.location='listarveiculo.php'");
        echo ("</script>");

?>

</body>
</html>

Valeu

ESerra e heltonritter

Abração

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652k
×
×
  • Criar Novo...