Jump to content

File Field get image [resolvido]


Big-D
 Share

Recommended Posts

Boas!

Eu tenho o seguinte código:

<input type="file" name="imagem" src='<?php echo 'images/thumbs/'.$rows['imagem']?>'/>

O que eu pretendia com este código era no file field ele chamar o caminho mais o nome da imagem associada a um id, porque senão cada vez que eu editar um produto por exemplo eu tenho de voltar sempre a meter a imagem.

Sugestões?

Link to comment
Share on other sites

suponho que o que guardas na base de dados é o caminho da imagem certo?

supondo que estou certo quando actualizas o produto a imagem continua na mesma:

por exemplo se tiveres a tablea produtos:

id, nome, descricao, imagem

quando actualizares o produto fazes:

UPDATE produtos SET nome='$nome', descricao='$descricao' WHERE id=$id

desta forma nao mexes no campo imagem e nao precisas de nenhum campo imagem na form...

no caso de quereres actualizar tb a imgem verificas so se o campo está vazio, se estiver usas este update senao incluis o update da imagem...

EDIT: se por algum motivo isto nao for viavel para ti podes sempre fazer alteração da imagem separadamente....

Link to comment
Share on other sites

Ora, eu fiz o seguinte:

if (empty($_POST['imagem'])) {

//Writes the information to the database
mysql_query("UPDATE receitas SET descricao = '$descricao', visivel = '$visivel' WHERE idreceitas = '$id'") or die ('ERRO' .mysql_error());

echo "<script>alert('Editado com sucesso!'); window.location=\"mostrarreceitas.php\"</script>";

}
if(!empty($_POST['imagem'])){
mysql_query("UPDATE receitas SET descricao = '$descricao', imagem = '$pic', visivel = '$visivel' WHERE idreceitas = '$id'") or die ('ERRO' .mysql_error());

echo "<script>alert('Editado com sucesso!'); window.location=\"mostrarreceitas.php\"</script>";

if(move_uploaded_file($_FILES['imagem']['tmp_name'], $target)){

//Tells you if its all ok
echo "The file ". basename( $_FILES['imagem']['name']). " has been uploaded, and your information has been added to the directory";
}
	 }
}

contudo, ele funciona em parte mas quando faço o update com imagem ele insere-a na pasta thums mas continua a mostrar a imagem antiga.

Link to comment
Share on other sites

se ao imprimir a variavel nao mostra nada é porque nao estas a passar bem o caminho da imagem ou podes estar a substituir o valor da variavel sem dares conta, nao posso dizer com certeza sem ver o codigo que tens para passar o caminho....

ou provavelmente pode faltar-te isto no formulario de edição:

enctype="multipart/form-data"

Link to comment
Share on other sites

O caminho da imagem esta a ser passado bem pois ele adiciona nas pastas a nova imagem, contudo nao a aplica no update ficando com a imagem anterior.

E não falta o enctype no form.

<?php 
$pic =($_FILES['imagem']['name']);
$visivel = empty($_POST['checkbox'])?0:1;

// If the button of form is clicked then we will insert all the stuff in our DataBase
if ($_POST['upload']) {
if(preg_match('/[.](jpg)|(gif)|(png)$/', $_FILES['imagem']['name'])) {  
  
        $filename = $pic;  
        $source = $_FILES['imagem']['tmp_name'];  
        $target = $path_to_image_directory . $filename;  
  
        move_uploaded_file($source, $target);  
  
        createThumbnail($filename);  
    }  


//This is the directory where images will be saved

// Here we verify that requireds textfields aren't emptys
if (empty($_POST['descricao'])) {

// If they're empty, then we put a message to alert the user	
	echo "<script>alert('Por favor preencha todos os campos obrigatórios(*)'); window.location=\"editarnoticias.php?id=$id\"</script>";
						// Verifying if exists user or not
	 }else{
//Writes the information to the database
mysql_query("UPDATE noticias SET descricao = '$descricao', imagem = '$pic', visivel = '$visivel' WHERE idnoticias = '$id'") or die ('ERRO' .mysql_error());

echo "<script>alert('Editado com sucesso!'); window.location=\"mostrarnoticias.php\"</script>";
	 if(move_uploaded_file($_FILES['imagem']['tmp_name'], $target)){

//Tells you if its all ok
echo "The file ". basename( $_FILES['imagem']['name']). " has been uploaded, and your information has been added to the directory";

}
else {

//Gives and error if its not
echo "Sorry, there was a problem uploading your file.";
}
	 }
}

?>

neste código esta a pagina de edição.

Link to comment
Share on other sites

coloca no update $filename em vez de $pic

pelo que vi deviam ter o mesmo valor e ao enviares $filename para o createThumbnail() ele adiciona a imagem ou seja $filename tem o nome da imagem por isso se o usares na actualização nao deves ter problemas...

nao percebo porque usas a variavel $pic se a seguir usas uma com outro nome sempre com o mesmo valor, tens uma declaração de uma segunda variavel desnecessáriamente...

a nao ser que me esteja a falhar qualquer coisa...

faz um echo da variavel $filename e ve o que aparece...

Link to comment
Share on other sites

tenta fazer o upload mas em vez de ter o nome original o ficheiro ter o nome da imagem que ja la estava antes, assim substitui a que tinhas, poupas espaço no servidor porque vais ter sempre apenas uma e nao tens de estar a apagar imagens, isto claro no caso de so ter uma imagem... mas se a impressao das variaveis nao apresentao nada é normal que nao faça nada...

tens de ver porque é que a variavel está vazia

Link to comment
Share on other sites

Config2.php

<?php $final_width_of_image = 200;  
$final_height_of_image = 200;
$path_to_image_directory = 'images/banners/fullsized/';  
$path_to_thumbs_directory = 'images/banners/mediumsize/';?>

Function2.php

<?php function createThumbnail2($filename2) {  
  
    require 'config2.php';  
  
    if(preg_match('/[.](jpg)$/', $filename2)) {  
        $im = imagecreatefromjpeg($path_to_image_directory . $filename2);  
    } else if (preg_match('/[.](gif)$/', $filename2)) {  
        $im = imagecreatefromgif($path_to_image_directory . $filename2);  
    } else if (preg_match('/[.](png)$/', $filename2)) {  
        $im = imagecreatefrompng($path_to_image_directory . $filename2);  
    }  
  
    $ox = imagesx($im);  
    $oy = imagesy($im);  
  
    $nx = $final_width_of_image;  
    $ny = $final_height_of_image;  
  
    $nm = imagecreatetruecolor($nx, $ny);  
  
    imagecopyresized($nm, $im, 0,0,0,0,$nx,$ny,$ox,$oy);  
    
    if(!file_exists($path_to_thumbs_directory)) {  
      if(!mkdir($path_to_thumbs_directory)) {  
           die("There was a problem. Please try again!");  
      }  
       }  
  
    imagejpeg($nm, $path_to_thumbs_directory . $filename2);  
}  ?>

Editar

<?php

include ("connection.inc");
	// obtemos o número do ID
	$id = $_GET['id']; 

// Vamos buscar o user que queremos pelo ID
$makequery = mysql_query("SELECT * FROM imagens WHERE idimagem = '$id'") or die ('Erro ao obter o ID <br />' .mysql_error());
$check = mysql_num_rows($makequery);
$rows= mysql_fetch_array($makequery);

// Caso o botão edit não seja pressionado
if (!$_POST['upload']) {

    // Se não houver resultados:
    if ($check < 1) {
        echo 'The user with the id <b>'.$id.'</b> does not exist!';
    }
    else {
}
}
        // Mostramos o form
        ?>
        <div id="apDiv3"></div>
<div id="apDiv2"><h2>Editar Notícias</h2></div>
<div id="apDiv1" style="border:groove; width:350px">
  <form action="" method="post" name="form1"  enctype="multipart/form-data">
      <p>Thumbnail(*):
        <input type='image' name='file' id='imageField' src='<?php echo 'images/banners/mediumsize/'.$rows['imagem']?>' />
       
          <input type="file" name="imagem"/>
          <br />
          <br />
          <select name="url">
          <option value="s-produtos-infonoticias.php">Informação Notícias</option>
          <option value="s-produtos-inforeceitas.php">Informação Receitas</option>
        </select>
      </p>
      <p>Banner1
        <input name="checkbox3" type="checkbox" id="checkbox" value="<?php echo $rows['idimagem'];?>" <?php if($rows['Banner1'] == '3') echo 'checked = "checked"';?> />
        Banner2
        <input name="checkbox4" type="checkbox" id="checkbox" value="<?php echo $rows['idimagem'];?>" <?php if($rows['Banner2'] == '4') echo 'checked = "checked"';?> />
        Banner3
        <input name="checkbox5" type="checkbox" id="checkbox" value="<?php echo $rows['idimagem'];?>" <?php if($rows['Banner3'] == '5') echo 'checked = "checked"';?> />
      </p>
      <p>Visivel:
        <input type="checkbox" name="checkbox" value="<?php echo $rows['idimagem'];?>" <?php if($rows['visivel'] == '1') echo 'checked = "checked"';?>/>
      </p>
      <p>
        <input TYPE="submit" name="upload" title="Add data to the Database" value="Editar"/>
      </p>
</form>
  <?php 
require 'config2.php';  
require 'functions2.php';

//This gets all the other information from the form
$imagem = $rows['imagem'];
$pic =($_FILES['imagem']['name']);
$visivel = empty($_POST['checkbox'])?0:1;
$Banner1 = empty($_POST['checkbox3'])?0:3;
$Banner2 = empty($_POST['checkbox4'])?0:4;
$Banner3 = empty($_POST['checkbox5'])?0:5;


// If the button of form is clicked then we will insert all the stuff in our DataBase
if ($_POST['upload']) {
if(preg_match('/[.](jpg)|(gif)|(png)$/', $_FILES['imagem']['name'])) {  
  
        $filename2 = $pic;  
        $source = $_FILES['imagem']['tmp_name'];  
        $target = $path_to_image_directory . $filename2;  
  
        move_uploaded_file($source, $target);  
  
        createThumbnail2($filename2);  
    }  


if(!empty($_POST['imagem'])){
mysql_query("UPDATE imagens SET imagem = '$filename2', visivel = '$visivel', url = '$url', Banner1 = '$Banner1', Banner2 = '$Banner2', Banner3 = '$Banner3' WHERE idimagem = '$id'") or die ('ERRO' .mysql_error());

echo "<script>alert('Editado com sucesso!'); window.location=\"mostrarimagens.php\"</script>";

if(move_uploaded_file($_FILES['imagem']['tmp_name'], $target)){

//Tells you if its all ok
echo "The file ". basename( $_FILES['imagem']['name']). " has been uploaded, and your information has been added to the directory";
}
	 }
if (empty($_POST['imagem'])) {
//Writes the information to the database
mysql_query("UPDATE imagens SET visivel = '$visivel', url = '$url', Banner1 = '$Banner1', Banner2 = '$Banner2', Banner3 = '$Banner3' WHERE idimagem = '$id'") or die ('ERRO' .mysql_error());

echo "<script>alert('Editado com sucesso!'); window.location=\"mostrarimagens.php\"</script>";

}
}	
?>

Este é o código que tenho para fazer a edição de imagem.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.