Curs Php-mysql

  • Dezarhivare archiva ZIP
  • Creare Archiva ZIP cu PHP

Aici gasiti functii utile care pot fi utilizate pentru Citire, Dezarhivare /Extragere si Creare Arhive ZIP cu PHP.
Pentru a dezarhiva si crea fisiere /arhive de tip ZIP in PHP, se foloseste clasa ZipArchive.

Citire date din arhiva ZIP

Functia urmatoare, readZipData(), returneaza un Array bidimensional cu date despre fisierele dintr-o arhiva ZIP (nume fisier, marime fisier (dezarhivat), marime arhivat).
<?php
// Functie pt Citire Archiva ZIP. Returneaza un Array bidimensional cu date despre fisierele din arhiva
function readZipData($zip_file) {
  // Curs PHP-MySQL - https://marplo.net/php-mysql/
  $zip_data = array();     // va stoca array-uri cu date pt fiecare fisier din $zip_file
  $zip = zip_open($zip_file);

  // daca $zip_file e deschis, parcurge arhiva
  if($zip) {
    while ($zip_entry = zip_read($zip)) {
      // adauga in $zip_data array cu date ale fiecarui fisier din archiva
      $zip_data[] = array(
        'name' =>zip_entry_name($zip_entry),
        'actual_filesize' => zip_entry_filesize($zip_entry),
        'compressed_size' => zip_entry_compressedsize($zip_entry)
      );
    }
    zip_close($zip);

    return $zip_data;
  }
  else  echo "Nu a putut sa deschuida: $zip_file";
}

  /* Exemplu */

// calea si numele arhivei ZIP
$zip_file = 'dir/fisier.zip';

// preia datele returnate de functia readZipData() pt $zip_file
$zip_data = readZipData($zip_file);

// afiseaza array-ul cu datele obtinute
echo '<pre>';
var_export($zip_data);
echo '</pre>';
?>
Exemplu va afisa un array similar cu acesta:
array (
  0 => 
  array (
    'name' => 'file1.txt',
    'actual_filesize' => 388984,
    'compressed_size' => 114339,
  ),
  1 => 
  array (
    'name' => 'image.jpg',
    'actual_filesize' => 16942,
    'compressed_size' => 16801,
  ),
  2 => 
  array (
    'name' => 'audio/music.mp3',
    'actual_filesize' => 16942,
    'compressed_size' => 16806,
  )
)
- "name" reprezinta calea si numele fisierului in arhiva.
- "actual_filesize" - marime fisier (dezarhivat).
- "compressed_size" - marime fisier arhivat.

Dezarhivare archiva ZIP

Functia urmatoare, extractZip(), dezarhiveaza /extrage fisierele dintr-o archiva ZIP. Primeste 2 argumente: adresa arhivei Zip care trebuie dezarhivata, si directorul de pe server in care vor fi extrase fisierele din arhiva.
Returneaza un Array cu numele fisierelor extrase, sau mesaj de eroare daca nu a putut sa deschida fisierul.

- Important: Daca lucrati pe sistem Linux, PHP trebuie sa aibe permisiuni CHMOD de scriere in directorul unde vor fi extrase fisierele.
<?php
// Functie pt Citire Archiva ZIP. Returneaza un Array cu numele fisierelor extrase, sau mesaj de eroare
// Primeste 2 argumente: adresa arhivei Zip ce trebuie dezarhivata, directorul unde vor fi extrase fisierele din arhiva
function extractZip($zip_file, $dir_extract) {
  // Curs PHP-MySQL - https://marplo.net/php-mysql/
  $re_arr = array();     // va stoca si returna numele fisierelor extrase

  // creaza obiect de lucru la clasa ZipArchive, si deschide $zip_file
  $zip = new ZipArchive();
  $res = $zip->open($zip_file);

  // daca $zip_file poate fi deschis
  if($res === TRUE) {
    // traverseaza index-ul cu numarul de fisiere din arhiva, adauga in array numele fisierelor
    for($i = 0; $i < $zip->numFiles; $i++) {
      $re_arr[] = $zip->getNameIndex($i);
    }

    // extrage fisierele
    $zip->extractTo($dir_extract);
    $zip->close();    

    return $re_arr;
  }
  else  echo "Nu a putut sa deschida $zip_file , cod: $res";
}

  /* Exemplu */

// adresa fisierului ZIP, si directorul de pe server unde sa extraga
$zip_file = 'dir/fisier.zip';
$dir_extract = 'dir_to_extract';

// dezarhiveaza $zip_file, preia si afiseaza array-ul cu numele fisierelor extrase
$files_zip = extractZip($zip_file, $dir_extract);
print_r($files_zip);
?>

Creare Archiva ZIP cu PHP

Functia createZip() prezentata aici poate fi utilizata pt a crea fisier /arhiva de tip ZIP cu PHP. Primeste doua argumente: un array cu adresa /numele fisierelor ce trebuie arhivate, calea si numele arhivei ZIP care va fi creata.
Returneaza True daca arhiva a fost creata, sau False.

- Important: Daca lucrati pe sistem Linux, PHP trebuie sa aibe permisiuni CHMOD de scriere in directorul unde trebuie creat fisierul /arhiva Zip.
<?php
// Functie pt Citire Archiva ZIP. Returneaza True in caz de succes, sau False
// Primeste doua argumente: array cu adresa /numele fisierelor ce trebuie arhivate,
// calea si numele arhivei ZIP care va fi creata
function createZip($files, $zip_file) {
  // Curs PHP-MySQL - https://marplo.net/php-mysql/
  // creaza obiect de lucru la clasa ZipArchive
  $zip = new ZipArchive;

  // daca $zip_file poate fi creat, traverseaza array-ul $files si adauga fiecare fisier in arhiva
  if($zip->open($zip_file, ZipArchive::CREATE) === TRUE) {
    foreach($files as $file){
      $zip->addFile($file);
    }
    $zip->close();
    return true;
  }
  else return false;
}

  /* Exemplu */

// Array cu calea-numele fisirelor care vor fi adaugate in arhiva ZIP
$files = array('file1.txt', 'image.jpg', 'audio.mp3');

// calea-numele fisierului Zip creat pe server
$zip_file = 'final.zip';

// apeleaza functia pt creare /adaugare fisiere in arhiva ZIP, returneaza mesaj de succes sau esec
if(createZip($files, $zip_file)) echo 'Fisierele au fost adaugate in: '. $zip_file;
else echo 'Nu a putut crea fisierul: '. $zip_file;
?>
Daca fisierul ZIP din $zip_file exista deja, fisierele vor fi adaugate alaturi de cele existente in arhiva.
Ca sa rescrieti fisierul / arhiva ZIP, inlocuiti in codul din functie: CREATE cu OVERWRITE .

• Daca doriti ca arhiva ZIP sa fie descarcata dupa ce a fost creata, utilizati acest cod:
// Aici se adauga codul pt creare arhiva ZIP

header('Content-type: application/zip');
header('Content-disposition: filename="'. $zip_file. '"');
header('Content-length:'. filesize($zip_file));
readfile($zip_file);
exit();

Un Test simplu in fiecare zi

HTML
CSS
JavaScript
PHP-MySQL
Engleza
Spaniola
Ce tag HTML5 este indicat sa contina meniul cu link-uri de navigare in site?
<section> <nav> <article>
<nav><ul>
 <li><a href="http://coursesweb.net/css/" title="CSS Course">CSS Course</a></li>
 <li><a href="http://www.marplo.net/jocuri/" title="Flash Games">Flash Games</a></li>
</ul></nav>
Ce proprietate CSS muta elementrul in dreapta sau stanga de la locul unde e?
text-align clear float
.some_class {
  width: 30%;
  float: left;
}
Clic pe metoda obiectului Math care rotunjeste numarul x descrescator la cel mai apropiat intreg.
Math.ceil(x) Math.abs(x) Math.floor(x)
var num = 12.34567;
num = Math.floor(num);
alert(num);       // 12
Indicati functia PHP care returneaza numarul de caractere dintr-un sir.
mb_strlen() count() stristr()
$str = "sir cu caractere utf-8 åèö";
$nrchr = mb_strlen($str);
echo $nrchr;        // 29
Clic pe raspunsul potrivit la intrebarea: "When it happened?".
On the 7th of July 1996 It is a quarter to 5. Nice weather.
When it happened? On the 8th of August 2001.
- Cand s-a intamplat? Pe 8 August 2001.
Indicati raspunsul potrivit la intrebarea: "¿Cuando sucedió?".
Hace buen tiempo. En el 8 de Agosto de 2001 Son las tres menos cuarto.
¿Cuando sucedió? En el 8 de Agosto de 2001.
- Cand s-a intamplat? Pe 8 August 2001.
Citire, Dezarhivare si Creare Arhive ZIP cu PHP

Last accessed pages

  1. Proprietati si Metode din obiectul document (216)
  2. Instructiuni conditionale if, else, switch (11770)
  3. Curs PHP MySQL, Tutoriale si Scripturi PHP (65576)
  4. Contor vizitatori si accesari (848)
  5. Download carti electronice si programe pentru Limba Engleza (28277)

Popular pages this month

  1. Cursuri si Tutoriale: Engleza, Spaniola, HTML, CSS, Php-Mysql, JavaScript, Ajax (2736)
  2. Curs HTML gratuit Tutoriale HTML5 (2181)
  3. Curs si Tutoriale JavaScript (1964)
  4. Curs PHP MySQL, Tutoriale si Scripturi PHP (1939)
  5. Curs CSS Online Tutoriale CSS3 (1846)