Insert image database

0

Good friends, I have a small problem inserting image into the database

function apresenta_formulario() {
    if (isset($_GET['id_publicidade'])){

    $ligacao = mysqli_connect("localhost", "root", "", "publicidades");
    if (mysqli_connect_errno()) {
        echo "Erro na liga��o MySQL: " . mysqli_connect_error();
    }

    $sql = "select * from publicidade where id_publicidade = '" . $_GET['id_publicidade'] . "'";

    $resultado = mysqli_query($ligacao, $sql);

    $registo = mysqli_fetch_assoc($resultado);

    $descricao=$registo['descricao'];

    ?>
    <form  name="upload_imagem" method="post" enctype="multipart/form-data"  action="<?php echo $_SERVER['PHP_SELF']; ?>">
        <p>Alterar Publicidade nº <?php echo $_GET["id_publicidade"]; ?> </p>
        <p>Nome da publicidade <input type="text" name="nome" size="50" value="<?php echo $registo["nome"]; ?>"></p>
        <label for="file">Ficheiro:</label>
        <input type="file" name="file"/>
        <br>
        <p>Categoria <input type="text" name="categoria" size="50" value="<?php echo $registo["categoria"]; ?>"></p>
        <p>Visualizações <input type="text" name="visualizacoes" size="50" value="<?php echo $registo["visualizacoes"]; ?>"></p>
        <p>Estado <input type="text" name="estado" size="50" value="<?php echo $registo["estado"]; ?>"></p>
        <p>Coordenada X <br><input type="text" name="x" size="50" id="CorX" value="<?php echo $registo["x"]; ?>"></p>
        <p>Coordenada Y <br><input type="text" name="y" size="50" id="CorY" value="<?php echo $registo["y"]; ?>"></p>
        <p><input type="submit" name="alterar"></p>
        <p> <input type="reset" name="reset"></p>
        <input name="id_publicidade" value="<?php echo $_GET["id_publicidade"]; ?>" type="hidden">
    </form>
    <p id="registo" style="height: 400px"></p>
    <?php
    mysqli_close($ligacao);

    }
    else{
    header("Location: listar.php");
    }
}

// fun��o respons�vel pelo processamento do formul�rio (tudo c�gido PHP)
function processa_formulario() {
    define ("MAX_SIZE","1000");

//Função que devolve a extensão de um ficheiro
function getExtension($str) 
{
    $i = strrpos($str,".");
    if (!$i) 
    { 
        return ""; 
    }
    $l = strlen($str) - $i;
    $ext = substr($str,$i+1,$l);
    return $ext;
}

    $nome = $_POST['nome'];
    $categoria=$_POST['categoria'];
    $visualizacoes = $_POST['visualizacoes'];
    $estado=$_POST['estado'];
    $x=$_POST['x'];
    $y=$_POST['y'];
    $image = $_FILES['file']['name'];   
    $codigo = $_POST["id_publicidade"];
    //Verifica se existe alguma imagem para ser importada
    if($image)//Existe uma imagem para ser importada
    {
       //Retira os elementos "/"
       $filename = stripslashes($_FILES['file']['name']);
       //Verifica qual a extensão do ficheiro
       $extension = getExtension($filename);
       //Coloca todos os caracteres da extensão com letra minuscula
       $extension = strtolower($extension);
      //Verifica os formatos de imagem que podem ser importados
      if (($extension != "jpg") && ($extension != "jpeg") && ($extension != "gif"))//Formato diferente dos permitidos 
      {
          //print error message
           echo "<strong>Imagem:</strong> Este formato não pode ser importado! Utilize o formato jpg ou gif";
      }
      else//Formato permitido
      {
          //Verifica qual o tamanho da imagem seleccionada
          $size=filesize($_FILES['file']['tmp_name']);
          //Verifica se o tamanho é superior a 100kb
          if ($size > MAX_SIZE*1024)//tamanho superior
          {
             echo 'A imagem não pode exceder o tamanho de '. MAX_SIZE .'kb';
          }
          else//tamanho inferior
          {
             //Gera um nome para a imagem
             $image_name=time().'.'.$extension;

             $img=$image_name;

             if (move_uploaded_file($_FILES['file']['tmp_name'], "imagens/".$image_name)) {

                $ligacao = mysqli_connect("localhost","root","","publicidades");
                if (mysqli_connect_errno()) {
                    echo "Erro na ligação MySQL: " . mysqli_connect_error();
                }
                echo $nome;
                $sql = "update publicidade set id_publicidade='".$codigo."', nome='".$nome."', descricao='".$image_name."', categoria='".$categoria."', estado='".$estado."', visualizacoes ='".$visualizacoes."', x= '".$x."' , y='".$y."' where id_publicidade = '".$codigo."' ";
                $resultado = mysqli_query($ligacao, $sql);

                if($resultado)
                {
                    $id_imagem = mysqli_insert_id($ligacao);
                    echo "Editado com sucesso";

                }
                else
                {
                    echo "Não foi possível efectuar o upload da imagem (nome para a base de dados)";
                }
             }
           }
       }
    }
    else//Não existe nenhuma imagem para ser importada 
    {
        $sql5 = "update publicidade set id_publicidade='".$codigo."', nome='".$nome."', estado='".$estado."', visualizacoes ='".$visualizacoes."', x= '".$x."' , y='".$y."' where id_publicidade = '".$codigo."' ";
                $resultado = mysqli_query($ligacao, $sql5);

    }
    mysqli_close($ligacao);

Well, the problem is the following, if I want to change an advertisement, if I change the image and change the various fields, the program works fine, but if my goal is just to change the fields without moving the image, what happens is which in addition to creating repeated records in the database, it does not change anything and I do not know why.

    
asked by anonymous 19.04.2015 / 00:20

1 answer

-1

You're doing it this way:

if($image)

Note that the variable is not being checked correctly and will therefore enter the code snippet. You need to check if it is going empty or not. Try to do as follows:

if($image != ''){
  .......

or if you prefer:

 if(empty($image)){
  .......
    
22.04.2015 / 14:50