Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Jak sprawdzic tablice files
Forum PHP.pl > Forum > Przedszkole
eminiasty
Przesylam przez formularz pole typu=file. Mam problem z sprawdzeniem czy jest cos przeslane czy nie na zasadzie:
  1. if(...)
  2. {
  3. }
  4. else
  5. {
  6. }


probowalem tez var_dump($_FILES['name']),echo,print_r...
ale zawsze jakies bledy
Ktos poleci jakis sposob prosty?
Ew poda jakis przyklad?
Star
Wystarczy
  1. if( $_FILES )
  2. {
  3. //Twój kod
  4. }


Jeśli to nie działa, to pokaz html'owy kod od formularza
eminiasty
  1. <div class="col-xs-12 col-sm-8">
  2. <label class="napki">Dodaj obrazek:</label>
  3. <input id="upload" name="file_news[]" type="file" class="file" multiple=true>
  4. <input name="max_file_size" type="hidden" value="1048576" />
  5. </div>
  6. ';


Klikam wyslij w formularzu

  1. var_export($_FILES);


i FILES jest puste ?o co chodzi, o co moze chodzi?


dalej cos takiego chcialem o ile by dzialalo przeslanie, lecz tu jakis zonk

  1. if ( isset( $_FILES["file_news"] ) && !empty( $_FILES["file_news"]["name"] ) ) {
  2. echo 'No upload';
  3. }
  4. else
  5. {
  6. echo 'sssss';
  7. }

franki01
Dodaj atrybut enctype do tagu <form>, tak jak poniżej:
Kod
<form enctype="multipart/form-data">

i będzie wysyłać plik.
eminiasty
Mam to dodane tylko poprostu nie zamieszczalem calosci formularza.
  1. <form method="POST" action="mod.php?s=news&a=goedit&id='.$row['news_id'].'" role="form" enctype="multipart/form-data">

Inne pomysly?
Star
A w tym pliku mod.php próbowałes, na samym początku pliku, wrzucić print_r($_FILES); ?
Formularz wygląda ok, więc powinno normalnie przesyłać
eminiasty
array() .. pusta tablica wszedzie..


probuje cos takiego np , pusto
  1. if (isset($_FILES['file_news']) && !empty(!$_FILES['file_news']))
  2. {
  3. foreach ($_FILES['file_news']['name'] as $filename) {
  4. echo $filename . "<br/>";
  5. }


Rozwiazalem poprzedni problem, brakowalo jakiejs pierdzielonej kreski, przez przypadek mi sie musiala skasowac i grzebalem w kodzie pol nocy przez to.

Ale inny haczyk teraz:

  1. var_dump($_FILES['file_news']['name']);
  2. if (!empty($_FILES['file_news'])) {
  3. foreach ($_FILES['file_news']['name'] as $filename) {
  4. echo $filename . "<br/>";
  5. }
  6. }
  7. else{
  8. echo 'aaaaa';
  9. }


Dwa przypadki:

1. wysylam obrazek
  1. array(1) { [0]=> string(10) "images.jpg" } images.jpg

2. nie wysylam obrazka
  1. array(1) { [0]=> string(0) "" }


Dlaczego nie zwraca tego co jest w else czyli tego "aaaaaaaaaa"?

  1. if (empty($_FILES['file_news']['name'])) {
  2. echo "ma zawrtosc";
  3. }
  4. else{
  5. echo 'jest pusta';
  6. }


zawsze zwraca else -jest pusta.. chodz przesyla obrazek , jakas podpowiedz?
franki01
Tablica nie jest pusta, ponieważ zawiera 1 element - pusty string. Zamiast:
Kod
if (!empty($_FILES['file_news'])) {

możesz spróbować:
Kod
if (!empty(array_filter($_FILES['file_news']['name']))) {

array_filter wyrzuci ten pusty string.
eminiasty
Pomoglo.
czyli "" jest liczone jako czesc stringu w tablicy?
trueblue
http://stackoverflow.com/a/12538850/5889778
IAmBoskiM
is_uploaded_file
eminiasty
Zapytam o jeszcze jedno nie tworzac nowego tematu odnosnie formularza

Zalozmy ze przesylam cos takiego:
  1. <form method="POST" action="admin.php?s=categories&a=add" role="form">...



Czy cos w ten sposob tez nie powinno zadzialac?
  1. <form method="POST" action="admin.php" role="form">
  2. <input type="hidden" name="s" value="categories">
  3. <input type="hidden" name="a" value="add">...


W admin.php jest:

  1. if(isset($_POST['s'])){ $s = preg_replace('#\W#', '', $_POST['s']); }
  2. elseif( isset($_GET['s'])){ $s = preg_replace('#\W#', '', $_GET['s']); }
  3.  
  4. if(isset($s)){
  5. switch ($s) {
  6. case "categories":
  7. include("include/categories.php");
  8. break;
  9. ...
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.