dr.x 1 Denunciar post Postado Abril 16, 2015 Olá pessoal ! Como que eu faço para que ao clicar em um link, visualizar o diretório de imagens e salvar o path da mesma em uma tabela ? Desde já agradeço. Compartilhar este post Link para o post Compartilhar em outros sites
Alaerte Gabriel 662 Denunciar post Postado Abril 17, 2015 Confuso sua dúvida. Quer fazer o upload dela e salvar o caminho no DB ? Compartilhar este post Link para o post Compartilhar em outros sites
dr.x 1 Denunciar post Postado Abril 17, 2015 Amigo, eu estou migrando do desktop para web, e sei que os conceitos e nomenclaturas são bem diferentes, porém preciso apenas clicar em um botão e abrir uma janela onde me mostre um diretório onde eu busco somente com as imagens Quando eu selecionar o arquivo de imagem , então tenho outro botão de salvar e aí sim eu salvo na base. Será que eu consegui me expressar direito ? Compartilhar este post Link para o post Compartilhar em outros sites
Alaerte Gabriel 662 Denunciar post Postado Abril 17, 2015 Basta utilizar o campo tipo FILE... ele vai abrir a janela e você seleciona o arquivo que quiser... <input type="file" name="imagens" accept="image/*"> Dessa forma, você força ele reconhecer apenas imagens. Compartilhar este post Link para o post Compartilhar em outros sites
dr.x 1 Denunciar post Postado Abril 17, 2015 Ôh amigão, obrigado e perdoe a minha ignorância, é que é tudo bem novo pra mim... Vejo que és bem entendido da matéria. Estou testando localmente com wampserver. Pergunto: Tem como testar upload localmente ? Por exemplo: Através de um painel de controle, o usuário faz o aupload da imagem buscando-a localmente e salvando-a na pasta por exemplo "banners", e ao carregar o index.php, então busca a imagem na pasta "banners" ? Será que é necessário banco de dados ? Compartilhar este post Link para o post Compartilhar em outros sites
Alaerte Gabriel 662 Denunciar post Postado Abril 17, 2015 Sim. Do contrário você vai armazenar o caminho da imagem para exibi-la depois onde ? também pode ser gravado num txt. Mais recomando banco de dados. Da uma olhada nesse artigo do amigo Thiago. Upload de Arquivos – Como tudo funciona - Thiago Belem / Blog Compartilhar este post Link para o post Compartilhar em outros sites
dr.x 1 Denunciar post Postado Abril 17, 2015 Obrigadão meu amigo pela paciência e aprendizado. Compartilhar este post Link para o post Compartilhar em outros sites
Alaerte Gabriel 662 Denunciar post Postado Abril 17, 2015 Disponha Compartilhar este post Link para o post Compartilhar em outros sites
dr.x 1 Denunciar post Postado Abril 17, 2015 Olá Alaerte ! Esse exemplo é exatamente o que eu preciso, porém dá erro. Estou tratando localmente. Dá uma olhadina. Desde já agradeço. <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Cadastro de usuário</title> </head> <body> <h1>Cadastro de Usuário</h1> <form action="" method="post" enctype="multipart/form-data" name="cadastro" > Nome:<br /> <input type="text" name="nome" /><br /><br /> Email:<br /> <input type="text" name="email" /><br /><br /> Foto de exibição:<br /> <input type="file" name="foto" /><br /><br /> <input type="submit" name="cadastrar" value="Cadastrar" /> </form> </body> </html> <?php // Conexão com o banco de dados $conn = @mysql_connect("localhost", "usuario", "") or die ("Problemas na conexão."); $db = @mysql_select_db("db_banco", $conn) or die ("Problemas na conexão"); // Se o usuário clicou no botão cadastrar efetua as ações if ($_POST['cadastrar']) { // Recupera os dados dos campos $nome = $_POST['nome']; $email = $_POST['email']; $foto = $_FILES["foto"]; // Se a foto estiver sido selecionada if (!empty($foto["name"])) { // Largura máxima em pixels $largura = 450; // Altura máxima em pixels $altura = 280; // Tamanho máximo do arquivo em bytes $tamanho = 1000; <<<< aquí // Verifica se o arquivo é uma imagem if(!preg_match("/^image/(jpeg|jpg|png|gif|bmp)$/", $foto["type"])){ $error[1] = "Isso não é uma imagem."; <<<< aquí } // Pega as dimensões da imagem $dimensoes = getimagesize($foto["tmp_name"]); // Verifica se a largura da imagem é maior que a largura permitida if($dimensoes[0] > $largura) { $error[2] = "A largura da imagem não deve ultrapassar ".$largura." pixels"; } // Verifica se a altura da imagem é maior que a altura permitida if($dimensoes[1] > $altura) { $error[3] = "Altura da imagem não deve ultrapassar ".$altura." pixels"; } // Verifica se o tamanho da imagem é maior que o tamanho permitido if($foto["size"] > $tamanho) { $error[4] = "A imagem deve ter no máximo ".$tamanho." bytes"; } // Se não houver nenhum erro if (count($error) == 0) { // Pega extensão da imagem preg_match("/.(gif|bmp|png|jpg|jpeg){1}$/i", $foto["name"], $ext); // Gera um nome único para a imagem $nome_imagem = md5(uniqid(time())) . "." . $ext[1]; // Caminho de onde ficará a imagem. obs: neste caso localmente. $caminho_imagem = "C:/wamp/www/upload-2/imagens/" . $nome_imagem; // Faz o upload da imagem para seu respectivo caminho move_uploaded_file($foto["tmp_name"], $caminho_imagem); // Insere os dados no banco $sql = mysql_query("INSERT INTO usuarios VALUES ('', '".$nome."', '".$email."', '".$nome_imagem."')"); // Se os dados forem inseridos com sucesso if ($sql){ echo "Você foi cadastrado com sucesso."; } } // Se houver mensagens de erro, exibe-as if (count($error) != 0) { foreach ($error as $erro) { echo $erro . ""; } } } } ?> <?php /* // Seleciona todos os usuários $sql = mysql_query("SELECT * FROM banners ORDER BY nome"); // Exibe as informações de cada usuário while ($usuario = mysql_fetch_object($sql)) { // Exibimos a foto echo "< img src='C:/wamp/www/upload-2/imagens/".$usuario->foto."' alt='Foto de exibição' />< br />"; // Exibimos o nome e email echo "Nome: " . $usuario->nome . "< br />"; echo "Email: " . $usuario->email . "< br />< br />"; } */ ?> Compartilhar este post Link para o post Compartilhar em outros sites
dr.x 1 Denunciar post Postado Abril 17, 2015 Olá Laerte ! Na verdade, localmente estou fazendo o upload. Digo, da origem para o destino. O único problema é que não está gravando na tabela. Testei as variáveis e está retornando corretamente, porém o insert não insere na tabela. Será que está faltando mais alguma coisa ? // Insere os dados no banco $sql = mysql_query("INSERT INTO usuarios VALUES ('', '".$nome."', '".$email."', '".$nome_imagem."')"); Compartilhar este post Link para o post Compartilhar em outros sites
Alaerte Gabriel 662 Denunciar post Postado Abril 17, 2015 Retire os " @ " (arrobas) do início das linhas de conexão, pois eles podem inibir um erro de conexão com a base de dados e você ficará a ver navios. Adicione ao final de sua quero, a função mysql_error(); Que irá apresentar algum erro na hora da inserção. Porém, procure estudar sobre MSQLi ou PDO, pois o mysql_ foi depreciado e não é viável utilizá-lo. $sql = mysql_query("INSERT INTO usuarios VALUES ('', '".$nome."', '".$email."', '".$nome_imagem."')")or die(mysql_error()); Compartilhar este post Link para o post Compartilhar em outros sites
dr.x 1 Denunciar post Postado Abril 17, 2015 Dá essa mensagem: Column count doesn't match value count at row 1 Compartilhar este post Link para o post Compartilhar em outros sites
Alaerte Gabriel 662 Denunciar post Postado Abril 20, 2015 Então, agora você já tem a causa do problema, o que fazer ? Corrigir. Você deve estar passando mais valores do que a quantidade de campo na tabela, não acha não ? Compartilhar este post Link para o post Compartilhar em outros sites
dr.x 1 Denunciar post Postado Abril 20, 2015 Beleza Alaerte. Mudei para PDO e funcionou legal o insert. Com o wampserver 2.5 muda alguma coisa em relação ao mysql, msqli ou PDO ? Esta versão somente aceita PDO e msqli ? Valeu. Compartilhar este post Link para o post Compartilhar em outros sites
Alaerte Gabriel 662 Denunciar post Postado Abril 20, 2015 Preste atenção na versão do PHP, a classe está disponível desde a versão 5. Mais para ser sincero, eu nunca utilizei qualquer tipo de pacote pré-configurado para servidor. Compartilhar este post Link para o post Compartilhar em outros sites
dr.x 1 Denunciar post Postado Abril 20, 2015 Vamos dizer que eu queira somente PDO. Então eu tenho que desabilitat no php.config os pacotes mysql e mysqli ? E em caso contrário, eu queira trabalhar somente com mysql, então eu desabilito os dois: mysqli e pdo ? É que sou novo em php. Estou migrando de desktop para web e as concepções são bem diferentes, porém a lógica não. Compartilhar este post Link para o post Compartilhar em outros sites
Alaerte Gabriel 662 Denunciar post Postado Abril 21, 2015 Macacos me chicoteiem. NÃO FAÇA ISSO ! pelo amor de Deus. Cara sugiro você estudar muuuuuito a linguagem e "abstrai" essa ideia de sua mente, isola, queima, fora de possibilidade. As extensões MySQL_* estão depreciadas e você só poderá usar mysqli ou PDO. Compartilhar este post Link para o post Compartilhar em outros sites