Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] wyświetlenie wielu plików i możliwość ich zaznaczenia mail
Forum PHP.pl > Forum > PHP
alogator
Witam exclamation.gif
Czy prosiłbym o pomoc ew. odwołanie do jakiejś literatury.
Mianowicie chciałbym wyświetlić zawartość folderu - czyli pliki w nim się znajdujące i mieć możliwość zaznaczenia tych ktore mi się podobają aby potem wysłać je jako załączniki w mailu.
jest w ogóle taka możliwość?
bigZbig
  1. <?php
  2. class DirList extends RecursiveDirectoryIterator
  3. {
  4.    private $_dirArray;
  5.  
  6.    public function __construct($path)
  7.    {
  8.        parent::__construct($path);
  9.        $this->_dirArray = new ArrayObject();
  10.        foreach($this as $_item)
  11.        {
  12.  
  13.            $this->_dirArray->append($_item);
  14.        }
  15.    }
  16.  
  17.    public function getIterator()
  18.    {
  19.        return $this->_dirArray->getIterator();
  20.    }
  21. }
  22. $_path = realpath('./'); /* ścieżka do katalogu z plikami */
  23. $_iterator = new DirList($_path);
  24. ?>
  25. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  26.  
  27. <html xmlns="http://www.w3.org/1999/xhtml" lang="pl">
  28.  
  29. <head>
  30.  
  31.    <title></title>
  32.  
  33.    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  34.  
  35. </head>
  36.  
  37. <body>
  38.  
  39.    <select name="files" multiple="multiple">
  40.    <?php
  41.        foreach ($_iterator->getIterator() as $_item) {
  42.            if (false === $_item->isFile()) {
  43.                continue;
  44.            }
  45.            echo '<option value="'.$_item->getPathname().'">'.$_item->getFilename().'</option>';
  46.        }
  47.    ?>
  48.    </select>
  49.  
  50. </body>
  51.  
  52. </html>
alogator
WOW exclamation.gif!
Dziękuje ogromnie bigZbig exclamation.gif
Podpowiedz mi jeszcze proszę jak teraz zaznaczone pliki przekazać do następnego okna żeby je "widział"
wookieb
Nie krzycz...
Wrzuć tego selecta w formularz i po wysłaniu formularza bedziesz widzial zaznaczone pliki.
alogator
czyli coś koło tego questionmark.gif :


  1. <form action="blebleble.php" method="post" enctype="multipart/form-data">
  2. Send these files:<br />
  3. <input name="formularz" type="file" /><br />
  4. <input type="submit" value="Send files" />
  5. </form>


z tym że tutaj gdzieś musze podpiąć wartości z tego poprzedniego wyniku
wookieb
No to wrzuć tam tego selecta...
alogator
ale w które miejsce? - sorki ale trochę nie bardzo sie znam
wookieb
To jak sie nie znasz to sie poducz bo jak narazie to widzę, że chcesz się wyręczyć innymi. Pomiedzy tagi form.
alogator
zrobiłem tak


formularz

  1. <html xmlns="http://www.w3.org/1999/xhtml" lang="pl">
  2.  
  3. <head>
  4.  
  5.   <title></title>
  6.  
  7.   <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  8.  
  9. </head>
  10.  
  11. <body>
  12. <form action="2.php" method="post">
  13.   <select name="files" multiple="multiple">
  14.   <?php
  15.       foreach ($_iterator->getIterator() as $_item) {
  16.           if (false === $_item->isFile()) {
  17.               continue;
  18.           }
  19.           echo '<option value="'.$_item->getPathname().'">'.$_item->getFilename().'</option>';
  20.       }
  21.   ?>
  22.   </select>
  23.  
  24.  
  25.  
  26.  
  27.  <input type="submit" value=" wyślij dane ">
  28. </form>
  29.  
  30.  
  31. </body>


i potem 2.php

  1. <?
  2.  
  3. $dzial = $_POST['files'];
  4. echo"$dzial";
  5.  
  6.  
  7. ?>


i wyrzuca mi tylko jedne z zaznaczonych plików sad.gif
nospor
nie: name="files"
a: name="files[]"
multiselect musi miec nazwe tablicowa.

nie:$dzial = $_POST['files'];
echo"$dzial";

a: print_r($_POST['files'])

tablicy echem nie wyswietlisz winksmiley.jpg
alogator
człowiek całe życie się uczy : )
już wyświetlił nazwy tych zaznaczonych w postaci

  1. Array ( [0] => /home/alogator/domains/alogator.eu/public_html/aaa/2.php [1] => /home/alogator/domains/alogator.eu/public_html/aaa/Behind.Enemy.Lines-Colombia[2009]DvDrip-aXX.txt )


dałoby się wstawić między nie <br> ?
nospor
$_POST['files'] to tablica.
Do iteracji po tablicy sluzy:
http://pl.php.net/manual/pl/control-structures.foreach.php
i rob co chcesz smile.gif
alogator
dokładnie tak smile.gif

  1. <?
  2. //print_r($_POST['files']);
  3.  
  4. $tab3 = $_POST['files'];
  5. ?>
  6.  
  7. <?php
  8. foreach ($tab3 as $klucz => $wartosc)
  9. {
  10. echo $wartosc.'<br> ';
  11. }
  12. ?>


i drukuje tak jak powinno : )

Proszę jeszcze o podpowiedź żeby teraz te ścieżki do zaznaczonych plików przekształcić na załączniki do maila.
znaloazłem coś takiego i sprawdziłem działa ale przy jednym załączniku robionym prosto z forma.
Pa jak już zrobię selecta i to wiele zaznaczę to lipa.

  1. <?php
  2. if ($_POST["ok"])
  3. {
  4. srand((double)microtime()*10000000);
  5. $znacznik = md5(uniqid(rand()));
  6.  
  7. ////////// USTAWIENIA //////////
  8. $odbiorca = 'alogator@gmail.com'; // Adres e-mail adresata
  9. $tytul = 'pliczki'; // Temat listu
  10. $message = 'ok'; // Komunikat
  11. $error = 'Wystąpił błąd podczas wysyłania formularza'; // Komunikat błędu
  12. //////////////////////////////
  13.  
  14. // Nagłówki
  15. $naglowki = "From: \n";
  16. $naglowki .= "MIME-Version: 1.0\n";
  17. $naglowki .= "Content-Type: multipart/mixed;\n";
  18. $naglowki .= "\tboundary=\"___$znacznik==\"";
  19.  
  20. // Treść listu
  21. $tresclistu .="Content-Type: text/plain; charset=\"iso-8859-2\"\n";
  22. $tresclistu .="Content-Transfer-Encoding: 8bit\n";
  23. $tresclistu .="\n";
  24.  
  25. // Załącznik
  26. $nazwa_tymczasowa = $_FILES["plik1"]["tmp_name"];
  27. $nazwa_pliku = $_FILES["plik1"]["name"];
  28.  
  29. if (is_uploaded_file($nazwa_tymczasowa))
  30. {
  31. $tresclistu .="--___$znacznik==\n";
  32. $tresclistu .="Content-Type: image/jpg\n";
  33. $tresclistu .="Content-Disposition: attachment;\n";
  34. $tresclistu .=" filename=\"$nazwa_pliku\"\n";
  35. $tresclistu .="Content-Transfer-Encoding: base64\n\n";
  36. $f = fopen($nazwa_tymczasowa, "rb");
  37. $dane = fread($f,filesize($nazwa_tymczasowa));
  38. fclose($f);
  39. $tresclistu .= chunk_split(base64_encode($dane));
  40. }
  41. // wysłanie listu
  42. if (mail($odbiorca,$tytul,$tresclistu,$naglowki))
  43. {
  44. print "".$message."";
  45. }
  46. else
  47. {
  48. print "".$error."";
  49. }
  50. }
  51. ?>


btw to z postu usera dave666
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.