« 1 2 »
Autor Zpráva
zdenek
Profil
ahoj, potřebuji vědět, jestli nějak jde prohledat počítač, abych našel jeden soubor.

například najít soubor neco.txt a zobrazit ho na stránce. předem děkuji.
Keeehi
Profil
zdenek:
Jestli myslíš u návštěvníkův počítač, tak to samozřejmě nejde.

Jestli myslíš server, tak začni v nejvyšší složce, ke které má PHP přístup a rekurzivně prohledávej podadresáře, zda se tam ten soubor vyskytuje. Pokud si nevíš s něčím rady, ptej se konkrétně. Celé řešení ti asi nikdo psát nebude.
Radovan789
Profil *
zdenek:
A pokud myslíš localhost tak to taky nejde (dřív to šlo). Jen root webu jde.
zdenek
Profil
ne, myslím svůj počítač. Keeehi díky za rychlou odpověď.
zdenek
Profil
chci to, že když někdo klikne na tlačítko PROHLEDAT, tak program začne hledat, a najde ten soubor.
Keeehi
Profil
Radovan789:
Já mám jako root disk C, což je celá polovina počítače :) (vynechám li externí harddisk)

zdenek:
To chápu, ale jestli chceš hotové řešení, tak se ho pokus vygooglit, nebo můžeš zadat práci do prací a zakázek.
zdenek
Profil
Keeehi:
To chápu, ale jestli chceš hotové řešení, tak se ho pokus vygooglit, nebo můžeš zadat práci do prací a zakázek.

ne, já bych chtěl jen vědět, jak na to. poté už to nějak "sesmolím" :-).
Keeehi
Profil
http://cs.wikipedia.org/wiki/Rekurze
http://cz.php.net/manual/en/function.glob.php
http://cz.php.net/manual/en/function.scandir.php
http://cz.php.net/manual/en/control-structures.foreach.php
zdenek
Profil
Keeehi:

dobře, možná jsem to trochu podcenil. prosím o malou radu. A předem promiň. :-)
zdenek
Profil
možná bych měl to trochu upřesnit, jde o to:

1) Uživatel zastrčí flashku se souborem (např.) vstup.txt
2) Stiskne tlačítko "PROHLEDAT"
3) Program najde soubor, vezme z něj data a zapíše do tabulky
4) Uživatel porovná věci v tabulce, s tím, co chtěl vidět a odhlásí se.

Víte někdo, jak to udělat?
WertriK
Profil
zdenek:
Nejdůležitější bude najít ten flash disk - po každé může mít jiné jméno a cestu.
http://stackoverflow.com/questions/642266/fetch-the-list-of-shared-drives-using-php-on-windows

Budu ti fandit.
Keeehi
Profil
zdenek:
Důležitá je ta část: Program najde soubor, vezme z něj data a zapíše do tabulky.
Jaký program, kde se vezme, jaká tabulka, kde je umístěná? Jak jsem psal výše, ten člověk s flashkou ji musel strkat do servru a navíc PHP by k ní musel mít přístup.

Nejjednodušší by bylo, kdyby ten uživatel měl trochu více práce. Místo na prohledat by klikl na odeslat a pře tím by normálně ten soubor sám našel (prostě normální upload).
zdenek
Profil
čím víc hledám, tím spíš si myslím, že to nejde. chtěl bych to udělat, s tou flashkou, ale asi to nejde. nevíte v jakém jiném jazyce, než v php to jde?? předem díky za odpověď.
zdenek
Profil
rozhodl jsem se, že to udělám trochu jinak, ale nefunguje mi tento kód. nevíte proč?

<?php
$odesli = $_POST[odesli];

if (isset($odesli)) {
  $soubor=$_POST[soubor];
	
if (!$ukazatel = fopen($soubor,r )) {
		echo "Soubor nelze otevrit.";
	}
	else {
		
		fpassthru($ukazatel);
		
	}
}

else {
	


?>



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
<head>
	<title>New document</title>
	<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
</head>
<body>

<form method=post ENCTYPE="multipart/form-data" action="<?echo $_SERVER["PHP_SELF"]?>>
<input type=file name=soubor>
<input type=submit name=odesli value=Odeslat>
</form>



</body>
</html>


<?php

}



?>
Keeehi
Profil
1) nepoužívej short open tags (místo <? použij <?php)
2) ř. 2,5 indexy polí si obal do uvozovek (") nebo do apostrofů ('). Takto to je bráno jako konstanta.
3) i když se formulář odesílá jako post, soubor není v poli $_POST, ale v poli $_FILES (On ani není přímo v tom poli. V tom poli je uložen jeho původní název, dočasný název, velikost, typ a "úspěšnost nahrání")

<?php
if(!empty($_POST["odesli"])){
    if ($_FILES["soubor"]["error"] == UPLOAD_ERR_OK) {
        $nahrat_do = '/slozka/pro/nahrani';
        $docasne_jmeno = $_FILES["soubor"]["tmp_name"];
        $puvodni_jmeno = $_FILES["soubor"]["name"];
        move_uploaded_file($docasne_jmeno, "$nahrat_do/$puvodni_jmeno");
    }
    else
        echo "Soubor se nepodařilo nahrát. ($_FILES[soubor][error])";
}
else {
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
<head>
    <title>New document</title>
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
</head>
<body>

<form method=post ENCTYPE="multipart/form-data" action="<?php echo $_SERVER["PHP_SELF"];?>>
<input type=file name=soubor>
<input type=submit name=odesli value=Odeslat>
</form>



</body>
</html><?php
}
?>
zdenek
Profil
tento kód nefunguje. pořád mi to podtrhává. nevím co s tím.
Keeehi
Profil
zdenek:
tento kód nefunguje. pořád mi to podtrhává. nevím co s tím.
To jsme se toho zase dozvěděli. Co se kde podtrhává? Chtělo by to více popsat, pokud to hlásí nějakou chybovou hlášku, tak ji napsat.

Na řádku 21 mi chyběl na konci středník, možná to je ta chyba.
zdenek
Profil
Keeehi:
Co se kde podtrhává?

<?php
!empty($_POST["odesli"]){
	if ($_FILES["soubor"]["error"] == UPLOAD_ERR_OK) {
		$nahrat_do = '/slozka/pro/nahrani';
		$docasne_jmeno = $_FILES["soubor"]["tmp_name"];
		$puvodni_jmeno = $_FILES["soubor"]["name"];
		move_uploaded_file($docasne_jmeno, "$nahrat_do/$puvodni_jmeno");
	}
	else
		echo "Soubor se nepodařilo nahrát. ($_FILES[soubor][error])";
}
else {


podtrhává se
!empty($_POST["odesli"]){
Keeehi
Profil
Jo, vypadlo mi tam if.
V [#15] jsem to už upravil.
zdenek
Profil
nechce se to tam nahrát. nevíš, čím to je?
Keeehi
Profil
zdenek:
A jak bych to měl asi vědět? Píše to nějakou chybovou hlášku? Nejde to odeslat? Soubor se nechce nahrát? Je moc možností, proč to nejde.

Zkus se podívat, jestli vůbec soubor přijde:
print_r($_FILES);
případně jestli nenastala nějaká chyba (ve výpisu hledej "error")

Za další bych zkusil ověřit zadanou cestu. Zkuste:
$nahrat_do = '.';
Soubor by se měl nahrát do té složky, kde je umístěný script.
zdenek
Profil
Keeehi:
Píše to nějakou chybovou hlášku?

ne nepíše. a to ostatní, nevím co znamená.
xmark
Profil
zdenek:
Od začátku se snažíš o něco dost podivného. Jestli správně čtu, neobjasnils, jestli chceš soubor nahrávat někam na svůj web na internetu, nebo ho chceš najít na lokálu.

Jestli ho chceš hledat u sebe na počítači, co s ním plánuješ dál? Nahrávání někam na web? Nepřipadá ti trochu zvláštní spouštět u sebe na počítači php jen proto, aby ti našlo soubor a někam poslalo? K čemu to je?
zdenek
Profil
xmark:

koukej, původní myšlenka byla, že uživatel na počítači, na kterém bude i ten php skript zastrčí flash disk do počítače a zmáčkne tlačítko PROHLEDAT. Poté php skript spustí vyhledávání, které najde soubor (ríkejme mu pokus.txt) Poté, co tento soubor najde, tak z něj vytáhne data, porovná je a zapíše do tabulky (později by tam byla i barevná odlišnost). Uživatel by si tato data prohlédl a stiskl tlačítko ZNIČIT. Poté by tento soubor byl odpojen, a uživatel by si mohl vzít svou flashku zpět. A já nevím, jak prohledat počítač, abych našel ten soubor pokus.txt. další problém bude vybrat tyto data z tabulky a zapsat je tam. nevím, jaký oddělovač použít.
xmark
Profil
zdenek:
Chceš prostě použít php k něčemu, k čemu se ani trochu nehodí. Doporučoval bych najít někoho, kdo ti to vyrobí v čemkoliv desktopovém.
zdenek
Profil
xmark:
Doporučoval bych najít někoho, kdo ti to vyrobí v čemkoliv desktopovém.

co je to v "něčem"?
nějakém jazyce?
a jakém?
Keeehi
Profil
zdenek:
Třeba C++
xmark
Profil
zdenek:

Nevím. Já jsem kdysi začal a skončil s Visual Basicem 6. Troufám si říct, že bych to v něm zvládl napsat za dvě hodiny, jedinou neznámou je to, čemu obecně říkáš "databáze". Resp. to, jestli by to sloužilo je té aplikaci.
zdenek
Profil
xmark, Keeehi:

šlo by to i v JAVĚ?
Keeehi
Profil
zdenek:
Ano.
« 1 2 »

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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

0