Foreach

iolke

Новичок
здравствуйте
Такая проблема - дважды вставляет последний элемент
подскажите ошибку,

Код:
fforeach($_FILES['photo']['name'] as $k=>$f) {
    if (!$_FILES['photo']['error'][$k]) {
        if (is_uploaded_file($_FILES['photo']['tmp_name'][$k])) {

            $file_name = $_FILES['photo']['name'][$k];
            $ext= stristr($file_name, '.');
            if (!in_array($ext, $ext_array))
            {
                puterror("расширение ложное");
                exit();
            }

            $file_type = $_FILES['photo']['type'][$k];
            if (!in_array($file_type,$img_array))
                {
                    puterror("Тип файла ложный");
                    exit();
                }

            if($_FILES["photo"]["size"][$k]>1024*3*1024)
                {
                   puterror("размер превышает 3 мб");
                    exit();
                }



            if (move_uploaded_file($_FILES['photo']['tmp_name'][$k], "../".$dir . $_FILES['photo']['name'][$k])) {
               // echo '<p>Файл: '.$_FILES['photo']['name'][$k].' загружен.</p>';
                unlink($_FILES['photo']['tmp_name'][$k]);
                  
                  chmod("".$dir, 0644);
            }
        }

    }

        $query3 = "INSERT INTO catphoto VALUES (
                    NULL,
                    '$id_flow',
                    '".$dir.$_FILES['photo']['name'][$k]."')";
 

iolke

Новичок
Именно Задваивает в базе последнюю фотку, например выбираетесь фото1, фото2, фото3 => в базе Вставляется(ссылка на) Фото1, фото2, фото3, фото3
 

iolke

Новичок
Можно делать update и insert обрабатывая одну форму одним обработчиком?
 

Фанат

oncle terrible
Команда форума
Ну ты бы хоть целиком свой код привел, а не какой-то огрызок
 

iolke

Новичок
я не понимаю тебя :(
Вы юлой пользуетесь? Добавляете продукт например, потом захотите его редактировать, зайдёте в форму редактирования и вот тут меня интересует как это сделано - фотки добавляете , страница не рефрешится , а только фотки обнавляются.

Например вы что то исправили, но не нажали далее,и стали фотки добавлять/удалять, фото изменяются а ваши исправления висят ждут пока вы продолжите

как это сделано?
 

iolke

Новичок
Ну ты бы хоть целиком свой код привел, а не какой-то огрызок
Код примитивный, подскажите мне логику???

форма в которой 10 полей из них 2 поля мультик фото - мне нужно эти поля фото не обновлять, а инсетить (так это фото) , если в поле9 вставляется фото, нужно дабивить ее к уже имеющимся

а остальные 8 полей мне нужно апдейтить

причём ситуация может быть такая - 1)когда внесены изменения в простые поля и не внесены в поля фото
2) изменения внесены только в поля фото, и не внесены в другие девять полей
3) поменялось все поля

как это лучше сделать? Разбить на 2 формы и все обработать поотдельности ? Худшее для меня!!
В одной форме можно? Какие тогда условия порядок выполнения?
 

iolke

Новичок
Это рабочий вариант, Не ОЬГРВЗОК

РАБОТАЕТ НЕ ПРАВИЛЬНО, а именно добавляет фото - плохо проверяет первое empty


Код:
<?php
  if (!empty($_FILES['photo']['tmp_name'])) {


    $dir = "../files/".date("YmdHis",time());

    foreach($_FILES['photo']['name'] as $k=>$f) {
    if (!$_FILES['photo']['error'][$k]) {
        if (is_uploaded_file($_FILES['photo']['tmp_name'][$k])) {




            if (move_uploaded_file($_FILES['photo']['tmp_name'][$k], "../".$dir . $_FILES['photo']['name'][$k])) {
              
                unlink($_FILES['photo']['tmp_name'][$k]);
                  
                  chmod("".$dir, 0644);
            }
        }

    }

        $query3 = "INSERT INTO catphoto VALUES (
                    NULL,
                    '$id_flow',
                    '".$dir.$_FILES['photo']['name'][$k]."')";

   }
           if(mysql_query($query3)) {
        $big = "";
 
  if (!empty($_FILES['foto']['tmp_name']))
  {
    $query = "SELECT foto, id_flowers FROM flowers
              WHERE id_flowers=".$_POST['id_flowers'];
    $pct = mysql_query($query);
    if(!$pct) links($_POST['id_catalog'],
                    "Ошибка обращения к базе данных");
    if(mysql_num_rows($pct)>0)
    {
      $photo = mysql_fetch_array($pct);
        
      if(file_exists("../../files/".$photo['foto']) && $photo['foto'] != "-")
         @unlink("../../files/".$photo['foto']);
    }

    $big = "foto = '-',";
  }

 
  if (!empty($_FILES['foto']['tmp_name']))
  {
    
    $file_name = $_FILES['foto']['name'];

    
    $ext = stristr($file_name, '.');

    
    $image = "../files/".date("YmdHis",time())."$ext";

    
    if (copy($_FILES['foto']['tmp_name'],"../".$image))
    {
      
      unlink($_FILES['foto']['tmp_name']);
 
      chmod("../".$image, 0644);
      $big = " , foto = '$image'";
    }

  }



$query2 = "UPDATE flowers SET  name = '".$_POST["name"]."',
                              description = '".$_POST["description"]."',
                              color = '".$_POST["color"]."',
                              size = '".$_POST["size"]."',
                              lenght = '".$_POST["lenght"]."',
                              type = '".$_POST["type"]."',
                              status = '".$_POST["status"]."',
                              min_account = '".$_POST["min_account"]."',
                              quantity = '".$_POST["quantity"]."'
                              $big
        WHERE id_flowers=".$_POST["id_flowers"];

if(mysql_query($query2)) {
             echo "<HTML><HEAD>
                  <META HTTP-EQUIV='Refresh' CONTENT='0; URL=index.php?id_catalog=".$_POST['id_catalog']."'>
                  </HEAD></HTML>";
          } else puterror("Ошибка при обновлении продукции");


      



 }  else {



  $big4 = "";
 
  if (!empty($_FILES['foto']['tmp_name']))
  {
    $query4 = "SELECT foto, id_flowers FROM flowers
              WHERE id_flowers=".$_POST['id_flowers'];
    $pct4 = mysql_query($query4);
    if(!$pct4) links($_POST['id_catalog'],
                    "Ошибка обращения к базе данных");
    if(mysql_num_rows($pct4)>0)
    {
      $photo4 = mysql_fetch_array($pct4);
        
      if(file_exists("../../files/".$photo4['foto']) && $photo4['foto'] != "-")
         @unlink("../../files/".$photo4['foto']);
    }

    $big4 = "foto = '-',";
  }

 
  if (!empty($_FILES['foto']['tmp_name']))
  {
    
    $ext_array2 = array(".jpeg", ".jpg", ".gif", ".png", ".tiff");

    
    $file_name2 = $_FILES['foto']['name'];

    
    $ext2 = stristr($file_name2, '.');

    
    $image4 = "../files/".date("YmdHis",time())."$ext2";

    
    if (copy($_FILES['foto']['tmp_name'],"../".$image4))
    {
      
      unlink($_FILES['foto']['tmp_name']);
    
      chmod("../".$image4, 0644);
      $big4 = " , foto = '$image4'";
    }

  }



$query5 = "UPDATE flowers SET  name = '".$_POST["name"]."',
                              description = '".$_POST["description"]."',
                              color = '".$_POST["color"]."',
                              size = '".$_POST["size"]."',
                              lenght = '".$_POST["lenght"]."',
                              type = '".$_POST["type"]."',
                              status = '".$_POST["status"]."',
                              min_account = '".$_POST["min_account"]."',
                              quantity = '".$_POST["quantity"]."'
                              $big4
        WHERE id_flowers=".$_POST["id_flowers"];

if(mysql_query($query5)) {
             echo "<HTML><HEAD>
                  <META HTTP-EQUIV='Refresh' CONTENT='0; URL=index.php?id_catalog=".$_POST['id_catalog']."'>
                  </HEAD></HTML>";
          } else puterror("Ошибка при добавлении продукции");


 }


?>
 

iolke

Новичок
Должен делать так , если поле фото 2 не пусто , то insert это поле + update, а иначе только update
 

iolke

Новичок
Инсетит даже если его поле пусто, какую то ../files/20191030115117 без расширения и вапще не знаю что
 

iolke

Новичок
Ошибка в этой проверке- if (!empty($_FILES['photo']['tmp_name']))

даже если файл не загружен,пишет в базу файл с именем дата/время

Почему то не корректно работает, может быть дело в настройках временной папки???
 
Сверху