Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Funkcja isset
Forum PHP.pl > Forum > Przedszkole
VonPiter
Witam
Dopiero zaczynam zabawe z PHP i niestety mam maly problem, a mianowicie.
Mam skrypt ktory pakuje zawartosc katalogu db pod nazwa data+godzina.zip i umieszcza ten plik w katalogu kopia_bazy. Tu dziala wszystko 
ok. problem jest prz rozpakowywaniu pliku. Odczytywana jest zawartosc katalogu
kopia_bazy i wyswietlana jest na ekranie zawartosc tego katalogu. Docelowo mialo
byc tak, ze po kliknieciu na danym pliku, rozpakowywany jest on w katalogu db. 
No wlasnie tyle, ze nie zabardzo moge sobie z tym poradzic. Pliki na ekranie
wyswietlane sa jako linki, nazwa pliku przekazywana jest w zmiennej $file. Link
wyglada tak  /?id=recover&&file=20.12.2007__21:30.zip
Nie bardzo rozumiem dzialanie instrukcji isset. Jak napisze cos takiego if (isset($file)) { .....}
to zawartos pomiedzy nawiasami powinna sie wykonac jesli $file bedzie TRUE. W moim
przypadku to nie dziala i nie zabardzo wiem dlaczego. 
Bardzo prosze o pomoc.

oto kod o ktorym pisze.

  1. <html>
  2. <head>
  3. <title>System Archiwizacji</title>
  4. </head>
  5.  <body>
  6. <a href='<? echo "$PHP_SELF?id=save"; ?>'> Archiwizuj</a><br>
  7. <a href='<? echo "$PHP_SELF?id=recover"; ?>'> Odtwórz</a><br>
  8.  
  9. <?
  10. $file = ''; 
  11.  
  12. include_once('pclzip.lib.php');
  13.  
  14. if($_GET['id']=="save"){
  15. $filename = date("d.m.Y__H:i") . ".zip" ;
  16. $archive = new PclZip("kopia_bazy/" . $filename);
  17. $v_list = $archive->create('db');
  18. if ($v_list == 0) {
  19. die("Error : ".$archive->errorInfo(true));
  20. }
  21. echo "<br>\n Archiwizacja dokonana <br>";
  22. } 
  23.  
  24.  
  25.  
  26. if ($_GET['id']=="recover"){ 
  27. $dir= opendir("./kopia_bazy"); 
  28. echo "<table align='center' valign='top' cellpadding=5 cellspacing=5>"; 
  29. echo "Wybierz okres z jakiego chcesz przywrócic dane<br><br>\n";
  30.  while ($file_name = readdir($dir)) {
  31. if (($file_name!=".") && ($file_name!="..")) { 
  32. echo "<a href='$PHP_SELF?id=recover&&file=$file_name'> $file_name </a><br>\n"; 
  33. }
  34. }
  35.  
  36. if(isset($file)) { 
  37.  
  38. function myPreExtractCallBack($p_event, &$p_header){
  39. $info = pathinfo($p_header['filename']);
  40. if (file_exists($p_header['filename'])) {
  41. echo $p_header['filename']."<BR>";
  42. if (is_dir($p_header['filename'])){
  43. }else{
  44. unlink($p_header['filename']);
  45. }
  46. }
  47. return 1;
  48. }
  49. $archive = new PclZip("kopia_bazy/" . $file_name);
  50. $list = $archive->extract(PCLZIP_OPT_PATH, '',
  51. PCLZIP_CB_PRE_EXTRACT, 'myPreExtractCallBack');
  52.  
  53. echo "Dane przywrócone! <br>";
  54.  
  55. } 
  56. }
  57. ?>
  58. </body>
  59. </html>
  60.  
nevt
przecież na początku skryptu masz : $file = '';
i nigdzie dalej juz nie zmieniasz tej zmiennej, więc isset($file) zawsze jest TRUE,
poza tym w linijce
  1. <?php
  2. echo "<a href='$PHP_SELF?id=recover&&file=$file_name'> $file_name </a><br>\n";
  3. ?>
jest powtórzony &... powinno obyć ...recover&file...
Cysiaczek
Popraw proszę tytuł topiku na zgodny z zasadami forum Przedszkole i dodaj bbcode
VonPiter
Cytat(nevt @ 21.12.2007, 00:27:11 ) *
przecież na początku skryptu masz : $file = '';
i nigdzie dalej juz nie zmieniasz tej zmiennej, więc isset($file) zawsze jest TRUE,
poza tym w linijce
  1. <?php
  2. echo &#092;"<A href="$PHP_SELF?id=recover&&file=$file_name"> $file_name 
  3. &#092;n\";
  4. ?>
jest powtórzony &... powinno obyć ...recover&file...


wywalilem: $file = ''; i usunolem jedno $ i... jest tosamo :-(
nevt
oj kolego VonPiter - widzę z tego, że przerabiasz czyjś skrypt (albo jakiś przykład z tutoriala) i kompletnie nie kojarzysz co i jak... piszesz, że jesteś początkujący w PHP - więc zacznij od podstaw... poczytaj manuala PHP - poświęć te dwa-trzy dni żeby zapoznać się ze składnią i podstawową funkcjonalnością języka, przejżyj dostępne biblioteki i funkcje...

skoro wprowadziłeś już te wcześniejsze zmiany, to zrób jeszcze jedną:
  1. <?php
  2. //zamiast
  3. if(isset($file))
  4. {
  5. // ... twój kod ...
  6. }
  7.  
  8. //napisz
  9. if(isset($_GET['file']))
  10. {
  11. $file = $_GET['file'];
  12. // ... twój kod ...
  13. }
  14. ?>

powodzenia.
VonPiter
Dzieki dziala.
Tak jak napisalem jestem poczatkujacy. Oczywiscie czytam manuala, ale nie zawsze wszystko rozumiem. Dzieki dobrym ludziom takim jak Ty, laik jest w stanie zrozumiec pewne sprawy szybciej, wprowadzony na odpowiedni tor myslenia. Nie przecze, ze jak czlowiek sam posiedzi , pokombinuje i wymysli to zapamieta na zawsze, ale niestety czasami, a w szczegolnosci poczatkujacy , potrzebuje pomocy.

Jeszcze raz dziekuje.
Pozdrawiam
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.