Ir para conteúdo

Arquivado

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

danny.j

inserir várias imagens no mesmo record de um banco de dados mysql

Recommended Posts

Bom Dia. Desculpe-me, mas sou novo no php Preciso inserir várias imagens no mesmo registro de um db mysql. Meu código php me faz inserir apenas uma imagem para cada registro. Como posso modificar isso ????? Por favor me ajude Obrigado. Aqui está o meu código

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
29 minutos atrás, danny.j disse:

Preciso inserir várias imagens no mesmo registro de um db mysql

Nesse caso utilize os colchetes do HTML - []

 

Ex:

<form method="post" action="upload_files.php" enctype="multipart/form-data">  
  <h3>Arquivos:</h3>
  <input type="file" name="arquivo[]" /><br>
  <input type="file" name="arquivo[]" /><br>
  <input type="file" name="arquivo[]" /><br>
  <input type="file" name="arquivo[]" /><br>
  <input type="file" name="arquivo[]" /><br>
</form>

 

30 minutos atrás, danny.j disse:

no mesmo registro de um db

Seria qual caso?

Um usuário pode ter varias fotos?

Só vincular então a tabela 

'imagens' x usuário 

 

Ex:

 

Usuário: (id, nome)

1 - Maria

2 - João

3 - Roberto

 

Imagens: (id, usuario_id, nome_file, path)

Imagens: (id, usuario_id, nome_file, path)

1, 1, casa_campo.jpg, uploads/casa_campo.jpg
2, 1, casa_campo2.jpg, uploads/casa_campo2.jpg
3, 1, casa_praia.jpg, uploads/casa_praia.jpg

/* Ou seja 3 fotos do usuario maria */

4, 2, casa_sp.jpg, uploads/casa_sp.jpg
5, 2, casa_sp2.jpg, uploads/casa_sp2.jpg

/* Agora 2 fotos do usuario João */

Acho q deu pra pegar a ideia neh?

 

 

e no 'upload_files.php' fica algo +/- assim:

<?php
if($_POST){	
	
	####Dentro do $_FILES vem essa galera:
	# name
	# type
	# tmp_name
	# error
	# size
	
	$uploads_dir = 'uploads';
	
	for($i = 0; $i < count($_FILES['arquivo']); $i++){
		if ($_FILES['arquivo']['error'][$i] == UPLOAD_ERR_OK) {			
			
			$name 		 = $_FILES['arquivo']['name'][$i];
			$tmp_name 	 = $_FILES['arquivo']['tmp_name'][$i];			
			
			move_uploaded_file($tmp_name, "{$uploads_dir}/{$name}");			
		}
		
	}
}

 

 

Enfim, é um exemplo...

Veja se consegue prosseguir.

Compartilhar este post


Link para o post
Compartilhar em outros sites

muito obrigado pela resposta. aqui o meu codigo.....

<?php

	error_reporting( ~E_NOTICE ); // avoid notice
	
	require_once 'dbconfig.php';
	
	if(isset($_POST['btnsave']))
	{
		$userprice = $_POST['user_price'];// user name
		$useraddress = $_POST['user_address'];// user email
		$userdesc = $_POST['user_desc'];
		$imgFile = $_FILES['user_image']['name'];
		$tmp_dir = $_FILES['user_image']['tmp_name'];
		$imgSize = $_FILES['user_image']['size'];
		
			$upload_dir = 'user_images/'; // upload directory	
			$imgExt = strtolower(pathinfo($imgFile,PATHINFO_EXTENSION)); // get image extension
			// valid image extensions
			$valid_extensions = array('', 'jpeg', 'jpg', 'png', 'gif'); // valid extension		
			// rename uploading image
			$userpic = rand(1000,1000000).".".$imgExt;		
			// allow valid image file formats
			if(in_array($imgExt, $valid_extensions)){			
				// Check file size '5MB'
				if($imgSize  < 5000000)				{
					move_uploaded_file($tmp_dir,$upload_dir.$userpic);
				}
		
				else{
					$errMSG = "Sorry, your file is too large.";
				}
			}
			else{
				$errMSG = "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";		
			}
			
		}
		

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
if(!isset($errMSG))
		{
			$stmt = $DB_con->prepare('INSERT INTO tbl_users(userPrice,userAddress,userDesc,userPic) VALUES(:uprice, :uaddress, :udesc ,:upic)');
			$stmt->bindParam(':uprice',$userprice);
			$stmt->bindParam(':uaddress',$useraddress);
			$stmt->bindParam(':udesc',$userdesc);
			$stmt->bindParam(':upic',$userpic);
		
			if($stmt->execute())
			{
				$successMSG = "new record succesfully inserted ...";
				header("refresh:5;index.php"); // redirects image view page after 5 seconds.
			}
			else
			{
				$errMSG = "error while inserting....";
			}
		}
	
?>
<body>

 

<div class="container">
  

<form method="post" enctype="multipart/form-data" class="form-horizontal">
	    
	<table class="table table-bordered table-responsive">
	
    <tr>
    	<td><label class="control-label">Userprice.</label></td>
        <td><input class="form-control" type="text" name="user_price" placeholder="Enter price" value="<?php echo $userprice; ?>" /></td>
    </tr>
    
    <tr>
    	<td><label class="control-label">useraddress.</label></td>
        <td><input class="form-control" type="text" name="user_address" placeholder="Your address" value="<?php echo $useraddress; ?>" /></td>
    </tr>
    
    <tr>
    	<td><label class="control-label">userdesc.</label></td>
        <td><input class="form-control" type="text" name="user_desc" placeholder="Your description" value="<?php echo $userdesc; ?>" /></td>
    </tr>
    <tr>
    	<td><label class="control-label">Profile Img.</label></td>
        <td><input class="input-group" type="file" name="user_image" accept="image/*" value="<?php echo $userpic; ?>" /></td>
    </tr>
    
    <tr>
    	<td><label class="control-label">Profile Img.</label></td>
        <td><input class="input-group" type="file" name="user_image1" accept="image/*" value="<?php echo $userpic1; ?>" /></td>
    </tr>
    <tr>
        <td colspan="2"><button type="submit" name="btnsave" class="btn btn-default">
        <span class="glyphicon glyphicon-save"></span>   save
        </button>
        </td>
    </tr>
    
    </table>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
55 minutos atrás, danny.j disse:

 



 

 

 

Desculpe, mas sou novo no fórum e php. na verdade eu estou bloquado, e eu preciso de alguém me ajuda  a avançar

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você simplesmente pode salvar apenas o path das imagens no BD e depois no momento de exibi-las, percorrer o path e filtrar apenas as imagens pela extensão delas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Concordo com o Osmar,
Se você está travado, tenta fazer o mais simples.

 

Já conseguiu fazer um simples Upload (ignorando tudo de usuário/Banco/Etc) ?

 

Exemplo simples:

 

index.html:

<!DOCTYPE HTML>
<html lang="pt_BR">
<head>
	<meta charset="UTF-8">
	<title></title>
</head>
<body>

<form method="post" action="upload_files.php" enctype="multipart/form-data">  
  
  <h3>Foto do Usuario:</h3>
  <input type="file" name="arquivo" /><br>  
  
  <input type="submit" value="Enviar" />
</form>


</body>
</html>

 

upload_files.php:

<?php

$uploads_dir = 'uploads';

//Verifica se existe a pasta, se não existir cria a mesma
if(!file_exists($uploads_dir)) {
	mkdir($uploads_dir);
}

//Verifica se o arquivo possui algum erro, 
if ($_FILES['arquivo']['error'] !== UPLOAD_ERR_OK) {	
	die('Ocorreu um erro' . $_FILES['arquivo']['error']);
}

$name 		 = $_FILES['arquivo']['name'];
$tmp_name 	 = $_FILES['arquivo']['tmp_name'];
move_uploaded_file($tmp_name, "{$uploads_dir}/{$name}");

 

 

 

--------------------------- 

 

Após isso, você pode simplesmente vincular o caminho da path da imagem na tabela usuário.

CREATE TABLE usuario(
	 id				int(8) primary key auto_increment
	,nome			varchar(50) not null
	,path_image		varchar(200)
);

 

ai no path_image por exemplo ficaria o conteúdo:

$path_image = "{$uploads_dir}/{$name}";

Saca?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa, esquenta não.
O importante é ir progredindo.

Eu normalmente quando pego algo muito complexo, tento fazer as menores partes de forma mais precisa (dividir pra conquistar)

 

Ex do seu caso mesmo:
O objetivo é fazer um Upload de imagens com cadastro de banco, animação ao terminar, opção de editar, etc etc etc

Se dividir tudo em pequenas tarefas... fica mais fácil saca? 
- Fazer uma animação de confirmação

- Criação do banco

- Inserir um Usuário 

- Upload de Imagem

- Atualizar o registro 'Imagem' da tabela usuário 

-Atualizar o usuário (editar)

 

E assim por diante....

Bons estudos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por gersonab
      Boa noite a todos, gostaria da ajuda de vcs, tenho um loop while dentro de uma janela modal, eu preciso q este seja dividido em duas colunas, pois esta ficando um pouco extenso, este lista opções que tenho no BD, fazendo os checkbox.
      estrutura .
      <div class="row"> <div class="col-md-12 ml-auto"> <label for="recipient-name" class="col-form-label">Opções:</label> <?php $curc4 = $pdo->query("SELECT * FROM opcoes ORDER BY opcao asc"); while ($lic4 = $curc4->fetch(PDO::FETCH_ASSOC)) { ?> <div class="checkbox-dark m-squar"> <input type="checkbox" name="opcao[]" id="opcao" value="<?php echo $lic4['opcao']; ?>"> <label class="mt-0" ><?php echo $lic4['opcao']; ?></label> </div> <?php } ?> </div> </div> no momento com 22 itens cadastrados, gostaria de mostrar duas colunas de 11 itens, desde já agradeço.
    • Por gersonab
      Boa tarde.
      estou com dificuldades para formar uma lógica, tenho um sistema onde faço o cadastro de parcelas conforme pedido pelo cliente, até aí sem problema, só que, só que se na hora o cliente resolver fazer à vista , eu não consigo editar, pois o número de parcelas seriam 0.
      <?php if(($parcpg === 0 ) || ( $parcpg === '')){ // caso não tenha parcela $valorparcelado = 0; } elseif (($jurospg === 0) || ($jurospg === '')){ // caso não tenha juros $valorparcelado = $valent / $parcpg; // caso parcela seja 0 ou nula dá erro aqui } else { $jurospg1 = $jurospg / 100; $nump = ($parcpg * 30); $nump4 = $nump + 30; $nump2 = $nump4 / 2; $nump22 = ($jurospg1 / 30) * $nump2; $valormedio = $nump22 * $valent; $valente = $valent + $valormedio; $valorparcelado = $valente / $parcpg;// caso parcela seja 0 ou nula dá erro aqui } ?> o erro só ocorre na edição.
       
    • Por gersonab
      Boa tarde
      tenho uma tabela com alguns itens e seus respectivos valores, preciso atualizar esses valores caso necessite.
      tipo:
      id - tip - descricao - valor
      1 -  1   - descrição - 2,00
      2 -  1   - descrição -12,00
      3 -  1   - descrição - 22,00
      4 -  2   - descrição - 2,00
      5 -  2   - descrição - 2,00
      6 -  2   - descrição - 2,00
       
      o  que eu quero fazer é atualizar conforme o tip , por exemplo , atualizar os valores do tip = 1 em 15%, assim ele atualizaria todos do tip 1 em 15%
    • Por gersonab
      utilizo um script para fazer upload de vários arquivos, só que agora foi solicitado para zipar o mesmo ao fazer o upload, pra ser sincero ja verifiquei vários tutoriais e não estou conseguindo.
      segue o script do upload funcionando sem o zip
       
      <?php if (!isset($_SESSION)) session_start(); require_once('config.php'); error_reporting(E_ALL ^ E_NOTICE ^ E_DEPRECATED); $idpr=$_POST['idpr']; $fotoprof=$_POST['fotoprof']; $foproc=$_POST['foproc']; $diretorio = "../files/"; $arquivo = $_FILES['foto']; for ($controle = 0; $controle < count($arquivo['name']); $controle++){ $nome = ($idpr."-P-".$arquivo['name'][$controle]); $values .= " ('{$nome}', '{$fotoprof}', '{$idpr}'),"; $destino = $diretorio."/".$idpr."-P-".$arquivo['name'][$controle]; move_uploaded_file($arquivo['tmp_name'][$controle], $destino); } $values=substr($values, 0, -1); $sql_fotos = "INSERT INTO fotos ( foto, fotoprof, fotoidpr ) VALUES $values"; //executa a query $executa = mysqli_query($con,$sql_fotos); ?> desde já agradeço qq ajuda.
    • Por Ross Risso
      Tenho uma tabela pedidos com o campo forma de pagamento -  formpag - ele é uma combox que o usuário escolhe se o pagamento vai ser em dinheiro ou ou depósito em banco, na hora de criar o pedido.
      Nessa tabela também existe o campo total. O que necessito é buscar em uma consulta o total de todos os pedidos e mostrar separadamente na mesma consulta o total em dinheiro e em depósito.
      $qr="SELECT dataped, formpag, total  FROM tblpedidos  GROUP BY MONTH(dataped)"; $sqli=mysqli_query($conn,$qr); while($ln = mysqli_fetch_assoc($sqli)){} Como faço para obter a soma de "total" quando? Exemplo:
      JANEIRO  quando formpag for dinheiro - total em dinheido - quando formpag for depósito - total em depósito.
      JANEIRO total em dinheiro $ 100,00 - total em depósito $ 50,00. E assim por diante: FEVEREIRO, MARÇO e etc.
      espero ter sido claro. Agradeço a atenção de todos.
×

Informação importante

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