• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

edit multi input file

Object Storage Arubacloud
+1 głos
360 wizyt
pytanie zadane 8 czerwca 2022 w PHP przez gatka84 Bywalec (2,150 p.)

Witam dzięki pomocy VBService udało się stworzyć unset multi input file + Delete multi file i teraz chciałabym do tego wykonać update i kod działa ale tylko po części tzn jeśli zmieniam dane typu text jest ok natomiast mam problem przy file. Jeśli chce tylko jeden edytować obraz to ten jeden zmieni, a resztę wykasuje a powinnien podmienić na $old_filename i utknęłam prosiła bym o pomoc.

<form action="code.php" method="POST" enctype="multipart/form-data">
<div class="col-md-6 mb-3">
<label for="">Name</label>
<input type="text" name="name" class="form-control" max="30" value="<?= $post_row['name'] ?>">
                            </div>
<div class="col-md-3 mb-3">
 <label for="">Zdjęcie 1</label>
<input type="hidden" name="old_image1" value="<?= $post_row['image1'] ?>" />
<input type="file" name="image[]" class="form-control" accept=".png, .jpeg, .jpg, .webp">
                            </div>
 <div class="col-md-1 mb-3 text-center">
<img src="../files/sklep/<?= $post_row['image1'] ?>" width="100px" height="100px" />
                            </div>

  <div class="col-md-3 mb-3">
<label for="">Zdjęcie 2 na strone sklepu</label>
 <input type="hidden" name="old_image2" value="<?= $post_row['image2'] ?>" />
 <input type="file" name="image[]" class="form-control" accept=".png, .jpeg, .jpg, .webp">
                            </div>
<div class="col-md-1 mb-3 text-center">
<img src="../files/sklep/<?= $post_row['image2'] ?>" width="100px" height="100px" />
                            </div>
</form>

następnie w code.php

if(isset($_POST['post_update']))
{
    $post_id = $_POST['post_id'];
    $name = $_POST['name'];    
    $location = "../files/sklep/";

    $old_filename1 = $_POST['old_image1'];
    $image1 = $_FILES['image']['name'][0];
    $image_tmp1 = $_FILES['image']['tmp_name'][0];

    $old_filename2 = $_POST['old_image2'];
    $image2 = $_FILES['image']['name'][1];
    $image_tmp2 = $_FILES['image']['tmp_name'][1];  

    $update_filename1 = "";
    $update_filename2 = "";

    if($image1 || $image2)
    {
        //Rename this file
        $filename1 = hrtime(true) . '.' . pathinfo($image1, PATHINFO_EXTENSION);        
        $update_filename1 = $filename1;
        $filename2 = hrtime(true) . '.' . pathinfo($image2, PATHINFO_EXTENSION);        
        $update_filename2 = $filename2;
    }
    else
    {
        $update_filename1 = $old_filename1;
        $update_filename2 = $old_filename2;
    }
    $query = "UPDATE `post` SET  name='$name',image1='$update_filename1',image2='$update_filename2',WHERE id='$post_id' ";
    $query_run = mysqli_query($con, $query);
    if($query_run)
    {
        if($image1 || $image2 )
        {
            if(file_exists($location .$old_filename1))
            {
               unlink($location .$old_filename1); 
            }
            move_uploaded_file($image_tmp1, $location .$update_filename1);
            if(file_exists($location .$old_filename2))
            {
               unlink($location .$old_filename2); 
            }           
        }        
        $_SESSION['message'] = "Edycja powiodła się";
        header('location: post-view.php');
        exit(0);
    }
    else
    {
        $_SESSION['message'] = "Coś poszło nie tak!";
        header('location: post-edit.php?id='.$post_id);
        exit(0);
    }
}

i przypuszczam, że coś jest nie tak z podmianą pliku gdzie kasuje stary i wstawia nowy lub podstawia stary i o ile działa to na jednym pliku to przy dwóch i więcej już nie, ew może powinno się to inaczej robić będę wdzięczna za wskazówki i podpowiedzi

4 odpowiedzi

+1 głos
odpowiedź 19 czerwca 2022 przez VBService Ekspert (253,300 p.)
wybrane 19 czerwca 2022 przez gatka84
 
Najlepsza

Podczas "wykonywania" update-tu danych może zajść taka sytuacja w momencie wysłania formularza, że

  • nie zostały wysłane żadne dane (pusty formularz)
  • zostały podane wszystkie pola
  • zostały podane wybrane pola

proponuję w oparciu o to co "przyszło" z formularza budować dynamicznie zapytanie sql-owe, a mianowicie ten "kawałek"

pomiędzy UPDATE ... SET  a WHERE ... na podstawie tablicy

 

przykład - Twój kod nieco zmodyfikowany (ważne: image[] => image1, image2)

<form action="code.php" method="POST" enctype="multipart/form-data">
  <div class="col-md-6 mb-3">
    <label for="name">Name</label>
    <input type="text" id="name" name="name" class="form-control" max="30" value="<?= $post_row['name'] ?>" />
  </div>

  <div class="col-md-3 mb-3">
    <label for="image1">Zdjęcie 1 na stronę sklepu</label>
    <input type="hidden" name="old_image1" value="<?= $post_row['image1'] ?>" />
    <input type="file" id="image1" name="image1" class="form-control" accept=".png, .jpeg, .jpg, .webp" />
  </div>
  <div class="col-md-1 mb-3 text-center">
    <img src="../files/sklep/<?= $post_row['image1'] ?>" width="100px" height="100px" />
  </div>

  <div class="col-md-3 mb-3">
    <label for="image2">Zdjęcie 2 na stronę sklepu</label>
    <input type="hidden" name="old_image2" value="<?= $post_row['image2'] ?>" />
    <input type="file" id="image2" name="image2" class="form-control" accept=".png, .jpeg, .jpg, .webp" />
  </div>
  <div class="col-md-1 mb-3 text-center">
    <img src="../files/sklep/<?= $post_row['image2'] ?>" width="100px" height="100px" />
  </div>

  <input type="submit" name="post_update" value="Zapisz" />
</form>
if(isset($_POST['post_update']))
{
    //var_dump($_POST, $_FILES);    
    $post_id = $_POST['post_id'];

    $location = '../files/sklep/';
    $sql_set = []; // inicjujemy pustą tablicę

    $name = $_POST['name'] ?? null;
    if ($name)
    {
        $sql_set[] = "name='$name'"; // dodajemy wpis do tablicy - pole dla zapytania sql
    }

    $image1 = $_FILES['image1']['name'] ?? null;
    if ($image1)
    {
        $old_image1 = $_POST['old_image1'];
        if (file_exists($location.$old_image1))
        {
            unlink($location.$old_image1); 
        }

        if (in_array($_FILES['image1']['type'], ['image/png', 'image/jpeg', 'image/jpg', 'image/webp']))
        {
            $update_image1 = hrtime(true).'.'.pathinfo($image1, PATHINFO_EXTENSION);
            move_uploaded_file($_FILES['image1']['tmp_name'], $location.$update_image1);

            $sql_set[] = "image1='$update_image1'"; // dodajemy wpis do tablicy - pole dla zapytania sql
        }
    }
    
    $image2 = $_FILES['image2']['name'] ?? null;
    if ($image2)
    {
        $old_image2 = $_POST['old_image2'];
        if (file_exists($location.$old_image2))
        {
            unlink($location.$old_image2); 
        }

        if (in_array($_FILES['image2']['type'], ['image/png', 'image/jpeg', 'image/jpg', 'image/webp']))
        {
            $update_image2 = hrtime(true).'.'.pathinfo($image2, PATHINFO_EXTENSION);
            move_uploaded_file($_FILES['image2']['tmp_name'], $location.$update_image2);

            $sql_set[] = "image2='$update_image2'"; // dodajemy wpis do tablicy - pole dla zapytania sql
        }
    }

    if ($sql_set) // tablica zawiera dane, tworzymy zapytanie
    {
        $query = 'UPDATE `post` SET '.join(', ', $sql_set)." WHERE id='$post_id'";
        //var_dump($query);

        if ($query_run = mysqli_query($con, $query))
        {
            $_SESSION['message'] = 'Edycja danych powiodła się';
            header('location: post-view.php');
            exit(0);
        }
        else
        {
            $_SESSION['message'] = 'Uaktualnienie danych nie powiodło się!';
            header('location: post-edit.php?id='.$post_id);
            exit(0);
        }
    }
    else
    {
        $_SESSION['message'] = 'Formularz nie zawiera danych do uaktualnienia!'; // został przesłany pusty formularz, nic nie update-ujemy
        header('location: post-edit.php?id='.$post_id);
        exit(0);
    }
}

?>

 

php dopuszcza taki zapis

$sql_set = [];

tworzymy pustą tablicę bez podawania jej rozmiaru

 

$sql_set[] = "jakieś dane";

tworzymy wpis do tablicy na pierwszym wolnym indeksie

 

$sql_set = [];

// ... kod

$sql_set[] = "jakieś dane"; // pierwsze przypisanie, więc indeks nadany to 0


// ... kod


$sql_set[] = "kolejne jakieś dane"; // kolejne przypisanie, w tym przypadku indeks nadany to 1

 

 

 

P.S  Plus podgląd wybranego obrazka  smiley

<form action="code.php" id="post_edit" method="POST" enctype="multipart/form-data">
  <div class="col-md-6 mb-3">
    <label for="name">Name</label>
    <input type="text" id="name" name="name" class="form-control" max="30" value="<?= $post_row['name'] ?>" />
  </div>

  <div class="col-md-3 mb-3">
    <label for="image1">Zdjęcie 1 na stronę sklepu</label>
    <input type="hidden" name="old_image1" value="<?= $post_row['image1'] ?>" />
    <input type="file" id="image1" name="image1" class="form-control" accept="image/png, image/jpeg, image/jpg, image/webp" />
  </div>
  <div class="col-md-1 mb-3 text-center">
    <label for="view_old_image1">Obecne zdjęcie</label>
    <img src="../files/sklep/<?= $post_row['image1'] ?>" id="view_old_image1" width="100px" height="100px" />

    <label for="view_new_image1">Nowe zdjęcie</label>
    <img src="data:image/gif;base64,R0lGODlhAQABAAAAACwAAAAAAQABAAA=" id="view_new_image1" width="100px" height="100px" />
  </div>

  <div class="col-md-3 mb-3">
    <label for="image2">Zdjęcie 2 na stronę sklepu</label>
    <input type="hidden" name="old_image2" value="<?= $post_row['image2'] ?>" />
    <input type="file" id="image2" name="image2" class="form-control" accept="image/png, image/jpeg, image/jpg, image/webp" />
  </div>
  <div class="col-md-1 mb-3 text-center">
    <label for="view_old_image2">Obecne zdjęcie</label>
    <img src="../files/sklep/<?= $post_row['image2'] ?>" id="view_old_image2" width="100px" height="100px" />

    <label for="view_new_image2">Nowe zdjęcie</label>
    <img  src="data:image/gif;base64,R0lGODlhAQABAAAAACwAAAAAAQABAAA=" id="view_new_image2" width="100px" height="100px" />
  </div>

  <input type="submit" name="post_update" value="Zapisz" />
</form>
<style>
  form#post_edit img[src^="data:"] {
    box-shadow: inset 0 0 0 1px rgba(0,0,0,0.2);
  }
  form#post_edit img:not([src^="data:"]) {
    cursor: zoom-in;
    transition: transform 0.4s 0.2s;
  }
  form#post_edit img:not([src^="data:"]):hover {
    transform: scale(2);
  }
</style>
<script>
  window.onload = newImagePreview;

  function newImagePreview()
  {
    const EMPTY_SRC = "data:image/gif;base64,R0lGODlhAQABAAAAACwAAAAAAQABAAA="
    const form_post_edit = document.querySelector('form#post_edit');
    form_post_edit.onchange = newImageShow;

    function newImageShow(e)
    { 
      if (e.target.nodeName == 'INPUT' && e.target.type == 'file')
      {
        const img_view_new = form_post_edit.querySelector('img#view_new_' + e.target.id); 
        try
        {  
          const file = e.target.files[0];
          if (['image/png', 'image/jpeg', 'image/jpg', 'image/webp'].includes(file.type))
          {
             img_view_new.src = URL.createObjectURL(file);
          }
        }
        catch(err)
        {
          img_view_new.src = EMPTY_SRC;
        }
      }
    }
  }
</script>

 

1
komentarz 19 czerwca 2022 przez gatka84 Bywalec (2,150 p.)

Dziękuję bardzo dokładnie tego szukałam, a nigdzie nie znalazłam takiego rozwiązania z wykorzystaniem $sql_set[] przetestowałam z nawet 7 image i działa bez problemu. Dzięki takiemu rozwiązaniu daje mi bardzo duże możliwości modyfikacji i znowu się wiele nauczyłam laugh

Dziękuje również za dodatek ale przyznam się myślałam, że znam już dobrze css i html ale nie spotkałam się dotąd z takim zapisem

form#post_edit img[src^="data:"] {
    box-shadow: inset 0 0 0 1px rgba(0,0,0,0.2);
  }

w sumie to nawet nie wiedziałam, że można to tak zapisać

komentarz 20 czerwca 2022 przez VBService Ekspert (253,300 p.)
komentarz 20 czerwca 2022 przez gatka84 Bywalec (2,150 p.)

@VBService, w sumie jeszcze nie bardzo wiem jak

$sql_set[]

można wykorzystać przy type="checkbox" tzn wprowadziłam dodatkowo

<div class="col-md-6 mb-3 mt-4 justify-content-center d-flex">
         <div class="form-check form-switch">
          <input class="form-check-input " type="checkbox" name="status" <?= $post_row['status'] == '1' ? 'checked' : '' ?> width="70px" height="70px" />
           <label for="">Status <-- Po zaznaczeniu Post zostanie ukryty</label> <br>
            <label for="">Zaznaczony-->Ukryty <br>Odznaczony-->Widoczny</label>
       </div>
 </div>

i miałam przy update jednego image

$status = $_POST['status'] == true ? '1' : '0';

natomiast przy

$sql_set[]

kombinuje i nic z tego - nie chce przekazać w/w zapis tzn 0 dla widoczny i 1 dla ukryty.

Przy takim

$status = $_POST['status'] == true ? '1' : '0'; 
    if ($status)
    {
        $sql_set[] = "status='$status'";
    }

tylko zmieni z 0 na 1 ale nie działa w drugą stronę kiedy jest już 1 to nie zmieni na 0

komentarz 20 czerwca 2022 przez gatka84 Bywalec (2,150 p.)

 już doszłam do tego zrobiłam tak

$status = $_POST['status'] == true ? '1' : '0';
        $sql_set[] = "status='$status'";

bez if i działa :) mam nadzieje, że tak jest porwanie

komentarz 20 czerwca 2022 przez VBService Ekspert (253,300 p.)

Ten zapis

$status = $_POST['status'] == true ? '1' : '0';

jest sam w sobie zapisem stanu 1 - True, 0 - False

użycie if-a w tym przypadku ma sens tylko dla

$status = $_POST['status'] == true ? '1' : '0'; 
if ($status)
{
     $sql_set[] = "status='1'";
}
else
{
     $sql_set[] = "status='0'";
}

 

ten zapis 

if ($status) { ... }

jest równoznaczny temu

if ($status == true) { ... }

 

więc ten zapis

$status = $_POST['status'] == true ? '1' : '0'; 
if ($status)
{
     $sql_set[] = "status='1'";
}
else
{
     $sql_set[] = "status='0'";
}

można zamienić na ten

$status = $_POST['status'] == true ? '1' : '0';
$sql_set[] = "status='$status'";

 

1
komentarz 21 czerwca 2022 przez gatka84 Bywalec (2,150 p.)
Dziękuje za wyjaśnienie teraz dokładnie wiem dlaczego tak można zapisać i dokładnie co z czego wynika.
komentarz 22 czerwca 2022 przez VBService Ekspert (253,300 p.)

BTW,  smiley

$status = $_POST['status'] == true ? '1' : '0';

 zrobiłam tak ... bez if i działa

ten zapis to jest swego rodzaju if nazywa się ternary operator

+1 głos
odpowiedź 13 czerwca 2022 przez gatka84 Bywalec (2,150 p.)
Dziękuję za informację i podpowiedź
–1 głos
odpowiedź 8 czerwca 2022 przez doublechess Obywatel (1,300 p.)
edycja 10 czerwca 2022 przez doublechess
Multi wybieranie plików z dysku, to "tablica".

Rozpisz to sobie korzystając z print_r lub var_dump.

Patrz, print_r($_FILES); lub print_r($_FILES["image"]);.

Koniecznie, sprawdź:

https://www.php.net/manual/en/function.print-r.php
komentarz 10 czerwca 2022 przez gatka84 Bywalec (2,150 p.)

sprawdziłam var_dump( $_FILES ), var_dump($update_filename1, $update_filename2) i podaje poprawnie tak jak przy "add image multi" mam problem i nie bardzo wiem jak to ugryźć tzn, żeby nic nie robił kiedy plik nie zostanie wybrany, a ten który zostanie wybrany ma zostać zastąpiony. Obecnie mam tak

if(isset($_POST['post_update']))
{
    $post_id = $_POST['post_id'];
    $name = $_POST['name'];
$location = "../files/sklep/";

    $old_filename1 = $_POST['old_image1'];
    $image1 = $_FILES['image']['name'][0];
    $image_tmp1 = $_FILES['image']['tmp_name'][0];
    $update_filename1 = "";

    $old_filename2 = $_POST['old_image2'];
    $image2 = $_FILES['image']['name'][1];
    $image_tmp2 = $_FILES['image']['tmp_name'][1];
    $update_filename2 = "";
}

i jeśli tylko jeden z dwóch chce zmienić to przy

 var_dump($_FILES);
array(1) { ["image"]=> array(5) { ["name"]=> array(3) { [0]=> string(0) "" [1]=> string(8) "Fees.png" [2]=> string(0) "" } ["type"]=> array(3) { [0]=> string(0) "" [1]=> string(9) "image/png" [2]=> string(0) "" } ["tmp_name"]=> array(3) { [0]=> string(0) "" [1]=> string(24) "C:\xampp\tmp\php2D31.tmp" [2]=> string(0) "" } ["error"]=> array(3) { [0]=> int(4) [1]=> int(0) [2]=> int(4) } ["size"]=> array(3) { [0]=> int(0) [1]=> int(113222) [2]=> int(0) } } } 

i podaje dane do tego co zmieniłam w update w tym przypadku image2 natomiast image1  pozostaje bez zmian i nie wiem jak funkcje w php ułożyć, żeby zmienił tylko to co zostało zmienione/dodane, obecnie dalej mam tak

 if($image1 || $image2) {
 $filename1 = hrtime(true) . '.' . pathinfo($image1, PATHINFO_EXTENSION);        
        $update_filename1 = $filename1;
        $filename2 = hrtime(true) . '.' . pathinfo($image2, PATHINFO_EXTENSION);        
        $update_filename2 = $filename2;
    }
    else
    {
        $update_filename1 = $old_filename1;
        $update_filename2 = $old_filename2;
}

I tu trochę się gubię bo z jednej strony pliki mają zmienianą nazwę na hrtime i tak ma obecnie plik dodany do bazy przy add jak również przy update, kiedy jeden jest zmieniany na drugi. W sieci jest bardzo mało o tym jak robić update kiedy jest kilka zdjęć w kilku kolumnach w jednym wierszu. Wzoruje się na tutorialu, w którym za każdym razem jest kasowy plik przy update i zastępowany przez update na nowy lub stary staje się nowym  tzn w

 <div class="col-md-5 mb-3">
                                <label for="">Zdjęcie na karte sklepu</label>
                                <input type="hidden" name="old_image1" value="<?= $post_row['image1'] ?>" />
                                <input type="file" name="image[]" class="form-control" accept=".png, .jpeg, .jpg, .webp">                                
                            </div

dane z bazy zapisane w bazie są przekazywane do $old_image1, a nowe do image[] i teraz po przesłaniu w POST

$old_filename1 = $_POST['old_image1'];
    $image1 = $_FILES['image']['name'][0];
    $image_tmp1 = $_FILES['image']['tmp_name'][0];
    $update_filename1 = "";

rozbiłam to przy odbiorze i dalej

if($image1 || $image2)

tu trochę utknęłam tzn przy jednym pliku zmienia sprawdza czy pusty, a przy dwóch i więcej schody bo jeśli zmienię jeden z dwóch to mi zmieni zawsze pierwszy, a drugi zostanie wykasowany, a powinien pozostać stary plik i jego nazwa w bazie i dalej zmiana nazwy jeśli nowy plik zostanie dodany, tylko przy więcej niż jednym chyba muszę zrobić pętlę? żeby sprawdził, który został zmieniony i ten zmieniony ma zostać, a stary wykasowany i zastąpiony nowym

 {
        //Rename this file
        $filename1 = hrtime(true) . '.' . pathinfo($image1, PATHINFO_EXTENSION);        
        $update_filename1 = $filename1;

        $filename2 = hrtime(true) . '.' . pathinfo($image2, PATHINFO_EXTENSION);        
        $update_filename2 = $filename2;
}

i dalej

else
    {
        $update_filename1 = $old_filename1;
        $update_filename2 = $old_filename2;
}

a na stepie

$query = "UPDATE `post` SET....

i po update bazy 

 if($query_run)
     {
     if($image1 || $image2 ){
 if(file_exists($location .$old_filename1))
            {
                unlink($location .$old_filename1); 
             }
     move_uploaded_file($image_tmp1, $location .$update_filename1);

   if(file_exists($location .$old_filename2))
    {
    unlink($location .$old_filename2); 
    }
   move_uploaded_file($image_tmp2,$location .$update_filename2);
}

i nie wiem czy w moim przypadku tak powinno się to robić czy jednak inaczej jak pisałam wcześniej jest mało tutorialii w sieci jak to wygląda przy update multi image mysqli, będę bardzo wdzięczna za podpowiedzi i pomoc na moim przykładzie lub nakierowanie jak to powinno się robić

–2 głosów
odpowiedź 10 czerwca 2022 przez doublechess Obywatel (1,300 p.)
edycja 10 czerwca 2022 przez doublechess

Prosiłaś mnie o naprowadzenie oraz abym Ci wytłumaczył.

<body style="background:grey;">



<form action="" method="POST" enctype="multipart/form-data">
  <input type="file" name="f1[]"/>
  <input type="file" name="f1[]"/>
  <input type="file" name="f1[]"/>
  <input type="submit" name="append_file1"/>
</form>


<form action="" method="POST" enctype="multipart/form-data">
  <input type="number" name="f2"/>
  <input type="submit" name="delete_file2"/>
</form>


<?php
$f1 = isset($_FILES['f1']) ? $_FILES['f1'] : [];

echo '<pre>';

define('NAME','name');
define('TMP_NAME','tmp_name');

if(isset($_POST['append_file1'])) {
  for($i=0;$i<count($f1[NAME]);$i++){
    if(!file_exists($f1[NAME][$i])) {
      move_uploaded_file($f1[TMP_NAME][$i],$f1[NAME][$i]);
    }
  }
}


$scanned = scandir('C:/xampp/htdocs/gatka94/');


for($i=0;$i<count($scanned);$i++) {
  if(!file_exists($scanned[$i])) {
    continue;
  } else {
    echo $i . ' ' . $scanned[$i] . '<br/>';
  }
  
}


if(isset($_POST['delete_file2']) && !empty($_POST['f2']) && isset($_POST['f2']) && $_POST['f2']<count($scanned) && file_exists($scanned[$_POST['f2']])) {
  unlink($scanned[$_POST['f2']]);
  echo 'Success';
} else {
  echo 'Failure';
}



?>
</body>

Takie coś:

if(isset($_POST["append_file1"])) {//...

Ten zapis oznacza... Jeśli ten formularz zostanie wysłany, to zrób to i to. Tam jest napisane, wyślij zapytanie; gdy wyślesz formularz, czyli klikniesz ustawi tam wartość logiczną true.

Są dwa formularze.

if(isset($_POST["append_file1"])) {//...
if(isset($_POST["delete_file2"])) {//...

Będzie tak.

true
false

Lub tak.

false
true
komentarz 10 czerwca 2022 przez gatka84 Bywalec (2,150 p.)

Dziękuje za odpowiedź dokładnie przeanalizuje i postaram się to zastosować do mojego kodu i mam pytanie bo nie spotkałam się z takim zapisem

define('NAME','name');
define('TMP_NAME','tmp_name');

tzn nie spotkałam się z define czy to jest tak samo jak

    
    $image1 = $_FILES['image']['name'][0];
    $image_tmp1 = $_FILES['image']['tmp_name'][0];

a ten zapis

if(isset($_POST['append_file1'])) {
  for($i=0;$i<count($f1[NAME]);$i++){
    if(!file_exists($f1[NAME][$i])) {
      move_uploaded_file($f1[TMP_NAME][$i],$f1[NAME][$i]);

a dokładnie ta linijka

for($i=0;$i<count($f1[NAME]);$i++){

przygotowuje rodzaj tablicy z $f1[NAME][0], $f1[NAME][1] itd?

komentarz 11 czerwca 2022 przez VBService Ekspert (253,300 p.)
edycja 11 czerwca 2022 przez VBService

define

define — Defines a named constant

w Twoim kodzie może to być np.

$location = "../files/sklep/";

i tak (przyjęło się zapisywanie nazw stałych z dużych liter)

define("LOCATION", "../files/sklep/");

przykładowe użycie

if (file_exists(LOCATION . $old_filename1)) { ...

[ EDIT ] czeski błąd, dzięki @doublechess, poprawione

nazw zmiennych

na 

nazw stałych

 

1
komentarz 11 czerwca 2022 przez doublechess Obywatel (1,300 p.)

define to stała, a nie zmienna.

for($i=0;$i<count($f1['name']);$i++){
$name = 'name';
define('NAME', 'name');

Podobne pytania

+1 głos
1 odpowiedź 271 wizyt
pytanie zadane 3 czerwca 2022 w PHP przez gatka84 Bywalec (2,150 p.)
0 głosów
1 odpowiedź 198 wizyt
pytanie zadane 7 maja 2017 w SQL, bazy danych przez Bartlomiej Bywalec (2,480 p.)
0 głosów
0 odpowiedzi 461 wizyt
pytanie zadane 27 grudnia 2016 w Systemy operacyjne, programy przez nicking Początkujący (260 p.)

92,568 zapytań

141,420 odpowiedzi

319,622 komentarzy

61,954 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...