• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

amanique

Upload de vários ficheiros num form com campos de texto

5 mensagens neste tópico

Meus amigos, esta é a minha primeira mensagem, espero que vocês me possam ajudar.

É o seguinte, estou a tentar fazer um formulário onde tenho vários campos de texto e seis campos para upload de imagens. O que eu quero parece simples, mas apesar de ter corrida a internet de ponta a ponta ninguém encontra a solução para este problema. Quero que para além do formulário enviar o texto para campos na minha bd, escreva o nome do caminho na bd para as fotos e que faça o upload das seis no mesmo form. Com uma imagem consigo, fazer upload só das seis imagens também, mas as duas coisas ao mesmo tempo, impossível. Quem me ajuda?

Heis o código da minha página inserirModelo.php:

<?php require_once('../Connections/ruisantos.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;

  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}
}

$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
  $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "Inserir")) {

$uploaddir = $_SERVER['DOCUMENT_ROOT']."/images/";
$uploadfile = $uploaddir.basename( $_FILES['foto1']['name']['foto2']['name']['foto3']['name']['foto4']['name']['foto5']['name']['foto6']['name']);


if(move_uploaded_file($_FILES['foto1']['tmp_name']['foto2']['tmp_name']['foto3']['tmp_name']['foto4']['tmp_name']['foto5']['tmp_name']['foto6']['tmp_name'], $uploadfile))
{


echo "Os ficheiros ". basename( $_FILES['foto1']['tmp_name']['foto2']['tmp_name']['foto3']['tmp_name']['foto4']['tmp_name']['foto5']['tmp_name']['foto6']['tmp_name']). " foram enviados com sucesso e a sua informação adicionada na base de dados";
}
else {


echo "Lamentamos, ocorreu um erro no envio dos seus dados.";
}

  $insertSQL = sprintf("INSERT INTO carro (Modelo, Ano, Kms, Combustivel, Cor, Potencia, Portas, Lugares, Garantia, Equipamento, Info, Obs, Preco, foto1, foto2, foto3, foto4, foto5, foto6) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)",
                       GetSQLValueString($_POST['Modelo'], "text"),
                       GetSQLValueString($_POST['Ano'], "int"),
                       GetSQLValueString($_POST['Kms'], "int"),
                       GetSQLValueString($_POST['Combustivel'], "text"),
                       GetSQLValueString($_POST['Cor'], "text"),
                       GetSQLValueString($_POST['Potencia'], "text"),
                       GetSQLValueString($_POST['Portas'], "text"),
                       GetSQLValueString($_POST['Lugares'], "text"),
                       GetSQLValueString($_POST['Garantia'], "text"),
                       GetSQLValueString($_POST['Equipamento'], "text"),
                       GetSQLValueString($_POST['Info'], "text"),
                       GetSQLValueString($_POST['Obs'], "text"),
                       GetSQLValueString($_POST['Preco'], "text"),
                       GetSQLValueString("images/".$_FILES["foto1"]["name"], "text"),
                       GetSQLValueString("images/".$_FILES["foto2"]["name"], "text"),
                       GetSQLValueString("images/".$_FILES["foto3"]["name"], "text"),
                       GetSQLValueString("images/".$_FILES["foto4"]["name"], "text"),
                       GetSQLValueString("images/".$_FILES["foto5"]["name"], "text"),
                       GetSQLValueString("images/".$_FILES["foto6"]["name"], "text"));

  mysql_select_db($database_ruisantos, $ruisantos);
  $Result1 = mysql_query($insertSQL, $ruisantos) or die(mysql_error());

  $insertGoTo = "listModelo.php";
  if (isset($_SERVER['QUERY_STRING'])) {
    $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
    $insertGoTo .= $_SERVER['QUERY_STRING'];
  }
  header(sprintf("Location: %s", $insertGoTo));
}

mysql_select_db($database_ruisantos, $ruisantos);
$query_Carro = "SELECT * FROM carro";
$Carro = mysql_query($query_Carro, $ruisantos) or die(mysql_error());
$row_Carro = mysql_fetch_assoc($Carro);
$totalRows_Carro = mysql_num_rows($Carro);
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>CarClass</title>
<style type="text/css">
<!--
.style1 {font-family: Arial, Helvetica, sans-serif}
.style3 {
font-family: Arial, Helvetica, sans-serif;
font-size: 18px;
}
.style4 {
font-size: 24px;
font-family: Arial, Helvetica, sans-serif;
}
-->
</style>
</head>

<body>
<form action="<?php echo $editFormAction; ?>" name="Inserir" method="POST" enctype="multipart/form-data">
<table width="650" border="0" align="center" cellpadding="0" cellspacing="0">
  <tr>
    <td colspan="3" align="center"><span class="style4">CarClass</span></td>
  </tr>
  <tr>
    <td colspan="3"> </td>
  </tr>
  <tr>
    <td colspan="3" align="center"><span class="style3">Inserir Novo Modelo</span></td>
  </tr>
  <tr>
    <td colspan="3"> </td>
  </tr>
  <tr>
    <td width="150" height="25" align="left" valign="middle"><span class="style1">Modelo</span></td>
    <td colspan="2">
      <input name="Modelo" type="text" id="Modelo" size="50" />    </td>
  </tr>
  <tr>
    <td width="150" height="25" align="left" valign="middle"><span class="style1">Ano</span></td>
    <td colspan="2"><input name="Ano" type="text" id="Ano" size="10" /></td>
  </tr>
  <tr>
    <td width="150" height="25" align="left" valign="middle"><span class="style1">Kms</span></td>
    <td colspan="2"><input name="Kms" type="text" id="Kms" size="50" /></td>
  </tr>
  <tr>
    <td width="150" height="25" align="left" valign="middle"><span class="style1">Combustível</span></td>
    <td colspan="2"><input name="Combustivel" type="text" id="Combustivel" size="50" /></td>
  </tr>
  <tr>
    <td width="150" height="25" align="left" valign="middle"><span class="style1">Cor</span></td>
    <td colspan="2"><input name="Cor" type="text" id="Cor" size="50" /></td>
  </tr>
  <tr>
    <td width="150" height="25" align="left" valign="middle"><span class="style1">Potência</span></td>
    <td colspan="2"><input name="Potencia" type="text" id="Potencia" size="50" /></td>
  </tr>
  <tr>
    <td width="150" height="25" align="left" valign="middle"><span class="style1">Portas</span></td>
    <td colspan="2"><input name="Portas" type="text" id="Portas" size="20" /></td>
  </tr>
  <tr>
    <td width="150" height="25" align="left" valign="middle"><span class="style1">Lugares</span></td>
    <td colspan="2"><input name="Lugares" type="text" id="Lugares" size="20" /></td>
  </tr>
  <tr>
    <td width="150" height="25" align="left" valign="middle"><span class="style1">Garantia</span></td>
    <td colspan="2"><input name="Garantia" type="text" id="Garantia" size="50" /></td>
  </tr>
  <tr>
    <td width="150" height="25" align="left" valign="middle"><span class="style1">Equipamento</span></td>
    <td colspan="2"><textarea name="Equipamento" id="Equipamento" cols="45" rows="5"></textarea></td>
  </tr>
  <tr>
    <td width="150" height="25" align="left" valign="middle"><span class="style1">Outras Informações</span></td>
    <td colspan="2"><textarea name="Info" id="Info" cols="45" rows="5"></textarea></td>
  </tr>
  <tr>
    <td width="150" height="25" align="left" valign="middle"><span class="style1">Observações</span></td>
    <td colspan="2"><textarea name="Obs" id="Obs" cols="45" rows="5"></textarea></td>
  </tr>
  <tr>
    <td height="25" align="left" valign="middle"><span class="style1">Preço</span></td>
    <td colspan="2"><input name="Preco" type="text" id="Preco" size="50" /></td>
  </tr>
  <tr>
    <td height="25" align="left" valign="middle"><span class="style1">foto1</span></td>
    <td colspan="2"><input type="hidden" name="MAX_FILE_SIZE" value="2000000"><input name="foto1" type="file" size="30"></td>
  </tr>
  <tr>
    <td height="25" align="left" valign="middle"><span class="style1">foto2</span></td>
    <td colspan="2"><input type="hidden" name="MAX_FILE_SIZE" value="2000000"><input name="foto2" type="file" size="30"></td>
  </tr>
  <tr>
    <td height="25" align="left" valign="middle"><span class="style1">foto3</span></td>
    <td colspan="2"><input type="hidden" name="MAX_FILE_SIZE" value="2000000"><input name="foto3" type="file" size="30"></td>
  </tr>
  <tr>
    <td height="25" align="left" valign="middle"><span class="style1">foto4</span></td>
    <td colspan="2"><input type="hidden" name="MAX_FILE_SIZE" value="2000000"><input name="foto4" type="file" size="30"></td>
  </tr>
  <tr>
    <td height="25" align="left" valign="middle"><span class="style1">foto5</span></td>
    <td colspan="2"><input type="hidden" name="MAX_FILE_SIZE" value="2000000"><input name="foto5" type="file" size="30"></td>
  </tr>
  <tr>
    <td width="150" height="25" align="left" valign="middle"><span class="style1">foto6</span></td>
    <td colspan="2"><input type="hidden" name="MAX_FILE_SIZE" value="2000000"><input name="foto6" type="file" size="30"></td>
  </tr>
  

  
  <tr>
    <td height="25" colspan="3" align="center" valign="middle"><input type="submit" name="Inserir" id="Inserir" value="Inserir" /></td>
  </tr>
</table>


<input type="hidden" name="MM_insert" value="Inserir" />
</form>
<div align="center">
<form name="voltar" id="voltar" action="backoffice.php" method="post">
<input type="submit" value="Voltar" name="voltar"/>
  </form>
</div>
</body>
</html>
<?php
mysql_free_result($Carro);
?>

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

deixa ver se eu percebi, tens 6 campos de texto com 6 campos de file. e queres que a cada um deles seja inserido na base de dados com o correspondente texto

html (so com dois para facilitar)

<form method="POST" enctype="multipart/form-data" action="up.php">
<input type="file" name="fl_1" /><br />
<input type="text" name="txt_1" /><br />
<input type="file" name="fl_2" /><br />
<input type="text" name="txt_3" /><br />
<input type=submit value="Upload"> to upload the file!
</form>

agora só o basico do php

<?php
if (count($_POST)>0){
    foreach ($_POST as $key=>$var){
        $destino = 'destino_img/'.$_FILES['fl_'.end(explode($key,'_'))]['name'];
        if (move_uploaded_file($_FILES['fl_'.end(explode($key,'_'))]['tmp_name'], $destino)){
            $q = 'INSERT INTO table (nome, link, descrição) VALUES (\''.$var.'\', \'http://www.teudominio.com/destino_img/'.$_FILES['fl_'.end(explode($key,'_'))]['name'].'\', \''.$_FILES['fl_'.end(explode($key,'_'))]['name'].'\')';
            mysql_query($q, $db_conn);
        }
    }
}
?>

espéro ter percebido bem

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

infopc obrigado pela tua resposta.

Penso que não seja bem isso. Mas não tenho a certeza, tens que me explicar como se eu fosse muito burro, porque nestas coisas chego à conclusão que sou mesmo. Mas vou aprendendo... graças a vocês.

Imagina, eu tenho um form para inserir um carro numa bd MySQL.

Tenho os seguintes campos idModelo, Modelo, Kms, Preço, etc... que são texto, e ainda no mesmo form tenho seis campos para fazer uploads de fotografias dos carros.

O upload das imagens tem que ser feito para a pasta images no servidor, primeira coisa.

Segundo, na bd vão ficar todos os campos de texto e nos campos das imagens (na mesma tabela da bd) o caminho de destino.

É isto, já tentei vários tutoriais, mas não há nenhum que me explique tudo junto. Há uns que fazem só uploads de várias imagens, e outros que fazem upload de campos de texto e apenas uma imagem. Eu preciso de uma mistura dos dois. Vê lá se és capaz. Desde já agradeço-te muito.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tentei desta forma agora e recebo Query was empty

<?php require_once('../Connections/ruisantos.php'); ?>
<?php
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  $theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}

$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
  $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}


if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "Inserir")) {

foreach ($_FILES["foto"]["error"] as $key => $error) {
if ($error == UPLOAD_ERR_OK) {
$tmp_name = $_FILES["foto"]["tmp_name"][$key];
$name = $_FILES["foto"]["name"][$key];
move_uploaded_file($tmp_name, "images/$name");
}
}

  $insertSQL = sprintf("INSERT INTO carro (Modelo, Ano, Kms, Combustivel, Cor, Potencia, Portas, Lugares, Garantia, Equipamento, Info, Obs, Preco, foto1, foto2, foto3, foto4, foto5, foto6) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)",
                       GetSQLValueString($_POST['Modelo'], "text"),
                       GetSQLValueString($_POST['Ano'], "int"),
                       GetSQLValueString($_POST['Kms'], "int"),
                       GetSQLValueString($_POST['Combustivel'], "text"),
                       GetSQLValueString($_POST['Cor'], "text"),
                       GetSQLValueString($_POST['Potencia'], "text"),
                       GetSQLValueString($_POST['Portas'], "text"),
                       GetSQLValueString($_POST['Lugares'], "text"),
                       GetSQLValueString($_POST['Garantia'], "text"),
                       GetSQLValueString($_POST['Equipamento'], "text"),
                       GetSQLValueString($_POST['Info'], "text"),
                       GetSQLValueString($_POST['Obs'], "text"),
                       GetSQLValueString($_POST['Preco'], "text"),
                       GetSQLValueString("images/".$_FILES["foto"]["name"][0], "text"),
				   GetSQLValueString("images/".$_FILES["foto"]["name"][1], "text"),
				   GetSQLValueString("images/".$_FILES["foto"]["name"][2], "text"),
				   GetSQLValueString("images/".$_FILES["foto"]["name"][3], "text"),
				   GetSQLValueString("images/".$_FILES["foto"]["name"][4], "text"),
				   GetSQLValueString("images/".$_FILES["foto"]["name"][5], "text"));

  mysql_select_db($database_ruisantos, $ruisantos);
  $Result1 = mysql_query($insertSQL, $ruisantos) or die(mysql_error());

  $insertGoTo = "listModelo.php";
  if (isset($_SERVER['QUERY_STRING'])) {
    $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
    $insertGoTo .= $_SERVER['QUERY_STRING'];
  }
  header(sprintf("Location: %s", $insertGoTo));
}

mysql_select_db($database_ruisantos, $ruisantos);
$query_Carro = "SELECT * FROM carro";
$Carro = mysql_query($query_Carro, $ruisantos) or die(mysql_error());
$row_Carro = mysql_fetch_assoc($Carro);
$totalRows_Carro = mysql_num_rows($Carro);
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>CarClass</title>
<style type="text/css">
<!--
.style1 {font-family: Arial, Helvetica, sans-serif}
.style3 {
font-family: Arial, Helvetica, sans-serif;
font-size: 18px;
}
.style4 {
font-size: 24px;
font-family: Arial, Helvetica, sans-serif;
}
-->
</style>
</head>

<body>
<form id="Inserir" name="Inserir" enctype="multipart/form-data" method="POST" action="<?php echo $editFormAction; ?>">
<table width="650" border="0" align="center" cellpadding="0" cellspacing="0">
  <tr>
    <td colspan="3" align="center"><span class="style4">CarClass</span></td>
  </tr>
  <tr>
    <td colspan="3"> </td>
  </tr>
  <tr>
    <td colspan="3" align="center"><span class="style3">Inserir Novo Modelo</span></td>
  </tr>
  <tr>
    <td colspan="3"> </td>
  </tr>
  <tr>
    <td width="150" height="25" align="left" valign="middle"><span class="style1">Modelo</span></td>
    <td colspan="2">
      <input name="Modelo" type="text" id="Modelo" size="50" />    </td>
  </tr>
  <tr>
    <td width="150" height="25" align="left" valign="middle"><span class="style1">Ano</span></td>
    <td colspan="2"><input name="Ano" type="text" id="Ano" size="10" /></td>
  </tr>
  <tr>
    <td width="150" height="25" align="left" valign="middle"><span class="style1">Kms</span></td>
    <td colspan="2"><input name="Kms" type="text" id="Kms" size="50" /></td>
  </tr>
  <tr>
    <td width="150" height="25" align="left" valign="middle"><span class="style1">Combustível</span></td>
    <td colspan="2"><input name="Combustivel" type="text" id="Combustivel" size="50" /></td>
  </tr>
  <tr>
    <td width="150" height="25" align="left" valign="middle"><span class="style1">Cor</span></td>
    <td colspan="2"><input name="Cor" type="text" id="Cor" size="50" /></td>
  </tr>
  <tr>
    <td width="150" height="25" align="left" valign="middle"><span class="style1">Potência</span></td>
    <td colspan="2"><input name="Potencia" type="text" id="Potencia" size="50" /></td>
  </tr>
  <tr>
    <td width="150" height="25" align="left" valign="middle"><span class="style1">Portas</span></td>
    <td colspan="2"><input name="Portas" type="text" id="Portas" size="20" /></td>
  </tr>
  <tr>
    <td width="150" height="25" align="left" valign="middle"><span class="style1">Lugares</span></td>
    <td colspan="2"><input name="Lugares" type="text" id="Lugares" size="20" /></td>
  </tr>
  <tr>
    <td width="150" height="25" align="left" valign="middle"><span class="style1">Garantia</span></td>
    <td colspan="2"><input name="Garantia" type="text" id="Garantia" size="50" /></td>
  </tr>
  <tr>
    <td width="150" height="25" align="left" valign="middle"><span class="style1">Equipamento</span></td>
    <td colspan="2"><textarea name="Equipamento" id="Equipamento" cols="45" rows="5"></textarea></td>
  </tr>
  <tr>
    <td width="150" height="25" align="left" valign="middle"><span class="style1">Outras Informações</span></td>
    <td colspan="2"><textarea name="Info" id="Info" cols="45" rows="5"></textarea></td>
  </tr>
  <tr>
    <td width="150" height="25" align="left" valign="middle"><span class="style1">Observações</span></td>
    <td colspan="2"><textarea name="Obs" id="Obs" cols="45" rows="5"></textarea></td>
  </tr>
  <tr>
    <td height="25" align="left" valign="middle"><span class="style1">Preço</span></td>
    <td colspan="2"><input name="Preco" type="text" id="Preco" size="50" /></td>
  </tr>
  <tr>
    <td height="25" align="left" valign="middle"><span class="style1">foto1</span></td>
    <td colspan="2"><input type="file" name="foto[]" /></td>
  </tr>
  <tr>
    <td height="25" align="left" valign="middle"><span class="style1">foto2</span></td>
    <td colspan="2"><input type="file" name="foto[]" /></td>
  </tr>
  <tr>
    <td height="25" align="left" valign="middle"><span class="style1">foto3</span></td>
    <td colspan="2"><input type="file" name="foto[]" /></td>
  </tr>
  <tr>
    <td height="25" align="left" valign="middle"><span class="style1">foto4</span></td>
    <td colspan="2"><input type="file" name="foto[]" /></td>
  </tr>
  <tr>
    <td height="25" align="left" valign="middle"><span class="style1">foto5</span></td>
    <td colspan="2"><input type="file" name="foto[]" /></td>
  </tr>
  <tr>
    <td width="150" height="25" align="left" valign="middle"><span class="style1">foto6</span></td>
    <td colspan="2"><input type="file" name="foto[]" /></td>
  </tr>
  

  
  <tr>
    <td height="25" colspan="3" align="center" valign="middle"><input type="submit" name="Inserir" id="Inserir" value="Inserir" /></td>
  </tr>
</table>


<input type="hidden" name="MM_insert" value="Inserir" />
</form>

<div align="center">
<form name="voltar" id="voltar" action="backoffice.php" method="post">
<input type="submit" value="Voltar" name="voltar"/>
  </form>
</div>
</body>
</html>
<?php
mysql_free_result($Carro);
?>

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ok já percebi o prob. No final da query só fica gravada uma imagem na base de dados certo? Neste caso o que deves fazer é criar uma tabela auxiliar par guardar as imagens numa relação 1 para n, procura isto no google vais ver como encontras varios resultados para o teu problema, se não quiseres uma tabela auxiliar vais ter que introduzir todas as imagens num so campo seja com um array serializado ou com uma tecnica implode explode.

Se estiveres com stresses manda um PM que eu qundo tiver uns minutos faço-te umas querys.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora