Autor Zpráva
HGD
Profil
poraďte prosím, jestli to nějak vůbec jde... ?
když kliknu na odkaz s názvem složky, aby se mi ve vedlejší buňce vypsali soubory, a pak dál bych chtěl, když kliknu na soubor, aby se vypsali detaily o něm
Bubák
Profil
JS nemůže pracovat se soubory (s výjimkou cookies, ale to ti nepomůže).
HGD
Profil
tak mi poradte jak to mam spáchat, přes PHP to zvládnu, ale to je mi jakssi prd platný, myslel sem nějak data z JS dostat do toho PHP kodu, ale to taky newim
Nox
Profil
Možná přes AJAX, ale to nevim, jinak tam PHP bude muset být, možná zkusit iframe v kombinace i get v url
HGD
Profil
no přes ten AJAX by to šlo, zkoušim se to po netu "naučit" kde se dá, čet sem nějaký články, ale sem z toho blbej :(

Nejspíš už dokážu odeslat scriptu název adresáře kterej chci pročíst, ale nevim kam dál

Poraďte někdo pls
peta
Profil
HGD
jednoduchy ajax jde resit pres tag script asi takto
<script src='mujajax.php?a=1&b=2&c=3'></script>
HGD
Profil
eee? tos mi zamotal hlavu uplně :)
HGD
Profil
já bych rači chtěl pochopit ten AJAX, hodim sem script, ale je 99,9% blbě, ale logiku už i chápu :)

function odeslatHTTP(method,url){
  var httpRequest;

  if (window.XMLHttpRequest) { // Mozilla, Safari, Opera, Konqueror, ...
    httpRequest = new XMLHttpRequest();
    if(http_zadost.overrideMimeType){
      http_zadost.overrideMimeType('text/xml');
    }
  } else if (window.ActiveXObject) { // Internet Explorer
    httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
  }
  
  httpRequest.open(method,url,true);
  httpRequest.onreadystatechange = function (){vyberFolder(httpRequest)};
  httpRequest.send(null);
};

function vyberFolder(httpRequest){
  if(httpRequest.readyState == 4){
  // - odpověd přijata vpořádku
    if(httpRequest.status == 200){
    // - vše v pořádku
      if (!odeslatHTTP('GET', 'strukture.php?folder='+slozka)) {
        return false;
      }
      document.getElementById('files').inerHTML +'ahojky'; // výpis souborů ze složky
    }else{
    // - stránka nenalezena, popř. jiná chyba
        alert("Chyba pri nacitani stanky"+ httpRequest.status +":"+ httpRequest.statusText);
     }
  }else{
   // - nepřipravená odpoved
   }
};


strukture.php
<?php
  header("Content-Type: text/xml");
echo "<folder>";
$adresar=opendir("../../image/".$_GET[folder]);
   while ($img=readdir($adresar)){
    if($img=="." || $img==".." || $img=="Thumbs.db")continue;
//    $typ=explode(".",$img);
     echo '<soubor id="'.$img.'"><a href="">'.$img.'</a></soubor>';
   }
    echo "<odpoved id='pocet$row[id]'>$row[pocet]</odpoved>\n";
mysql_free_result($result);
echo "</folder>";
?>
Matty
Profil
HGD
Tak mě napadá, je to možná složité řešení, ale přes PHP si nejdřív zjistit podrobnosti všech souborů ve složkách a pak je nějak přenést do JS.
Leo
Profil
"Tak mě napadá, je to možná složité řešení, ale přes PHP si nejdřív zjistit podrobnosti všech souborů ve složkách a pak je nějak přenést do JS."

A co si myslite, ze dela ten Ajax? Leo
peta
Profil
HGD
:) o to mi slo
<script src='mujajax.php?a=1&b=2&c=3'></script>
to je jednoduchy priklad ajax reseni pres SCRIPT tag metodou GET. Chybi script, ktery prida so stranky novy tag SCRIPT se zadanym SRC.

odeslatHTTP('GET', 'strukture.php?folder='+slozka)
To je uplne totez, metoda GET, zpusob pres httpRequest

viz Leo
ajax dela to, ze
- prida do stranky objekt
- nastavi na nem URL na ten php soubor
- objekt necha odeslat skryte
- pak prevezme obsah php souboru a zpracuje bud jako text nebo XML
Tobe v tom scriptu schazi cast, kdy nactes data z toho php souboru, cast, kde je data = (request).textResponse nebo xmlResponse
v pripade textResponse se to da vypsat primo alertem
data = req.textResponse;
alert(data)

kdyz das do www prohlizece primy odkaz na
http ://.../strukture.php
, tak se ti vypise presne to, co dostane ten ajax.
HGD
Profil
můžete na to někdo pls kouknout, co je tam špatně? já to tady látam jak můžu a nefunguje, ale newim jestli mam špatně odeslání nebo příjem ze serveru

strukture.php
<?php
  header("Content-Type: text/xml");
echo "<folder>";
$adresar=opendir("../../image/".$_GET[folder]);
   while ($img=readdir($adresar)){
    if($img=="." || $img==".." || $img=="Thumbs.db")continue;
//    $typ=explode(".",$img);
     echo '<soubor id="'.$img.'"><a href="">'.$img.'</a></soubor>';
   }
echo "</folder>";
?>


"AJAX"
function odeslatHTTP(method,url){
  var httpRequest;

  if (window.XMLHttpRequest) { // Mozilla, Safari, Opera, Konqueror, ...
    httpRequest = new XMLHttpRequest();
    if(httpRequest.overrideMimeType){
       httpRequest.overrideMimeType('text/xml');
    }
  } else if (window.ActiveXObject) { // Internet Explorer
    httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
  }
  
  httpRequest.open(method,url,true);
  httpRequest.onreadystatechange = function (){vyberFolder(httpRequest)};
  httpRequest.send(null);
};

function vyberFolder(httpRequest){
  if(httpRequest.readyState == 4){
  // - odpověd přijata vpořádku
    if(httpRequest.status == 200){
    // - vše v pořádku
      odeslatHTTP('GET', 'strukture.php?folder='+slozka);

      var files = httpRequest.responseXML.getElementsByTagName('soubor');
      for (var i=0; i < files.length; i++) {
       document.getElementById('vypis_souboru').innerHTML = files[i].firstChild.data+'<br>';
      }
    }else{
    // - stránka nenalezena, popř. jiná chyba
        alert("Chyba pri nacitani stanky"+ httpRequest.status +":"+ httpRequest.statusText);
     }
  }else{
   // - nepřipravená odpoved
   }
};


výpis adresářů-odkazy
<a onClick="vyberFolder(\''.$slozka[$a].'\')">'.$slozka[$a].'</a>
HGD
Profil
tak už to i funguje, ale mam takovej problémek, že chci vypsat všechny ty soubory do jedný buňky, ale jak je tam to: document.getElementById('vypis_souboru').innerHTML, tak se vypíše jen jeden soubor vždycky, resp. nejspíš ten poslední vypsanej z cyklu a nevim jak tam vždycky jeden nechat a další jen přidat

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: