Autor Zpráva
holi
Profil *
Dobrý den,

předem se omlouvám, vím, že je toho tady spoustu. Vím to, protože poslední dva dny to tu prohledávám nic méně aji google, ale nenašel sem vysvětlení na mé úrovni. Takže vás prosím můžete mi to nějak polopatě vysvětlit ?
Tedy k scriptu(předem upozornuji že toho bude v zaheslované administraci, stránky jsou zatím ve fázy začínání co se PHP týče):
<? 
$projekty = dir("galerie/projekty/thumb");
echo "Soubory ve složce projekty:<br>\n"; 
while($soubor=$projekty->read()) { 
  if ($soubor=="." || $soubor=="..") continue; 
  echo "<a href=\"galerie/projekty/thumb/$soubor\">".$soubor."</a><input type=\"submit\" name=\"smazat\" Value=\"Smazat\"><br>\n";
  unlink("galerie/projekty/thumb".$soubor);
  header('location: index.php?page=gallery_uploader');}
} 
$projekty->close();
$foto = dir("galerie/foto/thumb");
echo "Soubory ve složce foto:<br>\n"; 
while($soubor2=$foto->read()) { 
  if ($soubor2=="." || $soubor2=="..") continue; 
  echo "<a href=\"galerie/foto/thumb/$soubor2\">".$soubor2."</a><br>\n"; 
} 
$foto->close();
?> 

Vyzkoušel jsem všechny možné způsoby ale už nevím jak na to.

Děkuji předem za odpověď.
Joker
Profil
holi:
Vím to, protože poslední dva dny to tu prohledávám nic méně aji google, ale nenašel sem vysvětlení na mé úrovni. Takže vás prosím můžete mi to nějak polopatě vysvětlit ?
Z toho příspěvku nějak vypadlo to nejpodstatnější, a sice co vlastně máme vysvětlit.

Tedy, jak zní dotaz?
holi
Profil *
Omg sem vůl ... no jak je možné si všimnou z kódu, vypisuji adresáře a každý soubor je vlastně odkaz na sama sebe a k tomu je přiděláno tlačítko smazat, a já chci prostě a jednoduše aby to tlačítko fungovalo, našel jsem možnost využití GET ale totálně nechápu jak to funguje(Vím jak funguje GET, ale nechápu to použití v tomto případě) Vyzkoušel jsem hodně metod jak to smazat pomocí GET a kdo ví čeho, ale jediného úspěchu jsem dosáhl a to že se mi po stisknuti jakéhokoliv tlačítka smazat se smazal poslední soubor, což nechci . :)
xmark
Profil
holi:
A od výše uvedeného skriptu si slibuješ co? Nějak nechápu, jak můžeš mít pod sebou tlačítko a vzápětí unlink.
Potřebuješ dvě věci:
1. výpis souborů, kde zobrazíš jejich názvy a u každého budeš mít tlačítko
2. skript, který tím tlačítkem vyvoláš a který smaže daný soubor.

Všechna tlačítka budou samozřejmě mířit na jeden mazací skript. O který soubor jde, musíš rozlišit nějakým parametrem tlačítka nebo inputem typu hidden.
holi
Profil *
ano ten unlink je jen zbytek mých pokusu samozřejmě že si od toho nic neslibuji. Děkuji za odpověď a budu trochu otravný, mohl by jste sem dát názornou ukázku? ... Výpis souboru mám i s tlačítkem ale co musím udělat proto aby se mi poslalo jméno souboru a smazalo to když sem to zkoušel přes get tak mi to dosazovalo např background.jpg.php not found.
xmark
Profil
..
while($soubor=$projekty->read()) { 
  if ($soubor=="." || $soubor=="..") continue; 
  echo $soubor;
  echo "<form action='smazani.php'>";
  echo "<input type='hidden' name='jmeno' value='".$soubor."'>";
  echo "<input type='submit' name='smazat' value='Smazat'>";
  echo "</form>";
  echo "<br>";
} 
..


v souboru smazani.php:


<?php

$fn = $_GET['jmeno'];
// doplnit k názvu souboru cestu 

if ( /* ošetření rizik a existence souboru*/  ) {
  unlink ($fn);
}

header('location: index.php?page=gallery_uploader');}  
?>


Principielně asi takto.
holi
Profil
Stále nefunguje při smazání souboru mě to přesměruje na hlavní stránku(ochrana proti naštení neexistujícího php souboru pomoci get) s touto adresou:
"index.php?jmeno=background.jpg&smazat=Smazat" . A soubor se přitom nesmaže.
Soubor gallery_uploader.php:

$projekty = dir("galerie/projekty/thumb");
echo "Soubory ve složce projekty:<br>\n"; 
while($soubor=$projekty->read()) { 
  if ($soubor=="." || $soubor=="..") continue; 
  echo $soubor;
  echo "<form action='delete.php'>";
  echo "<input type='hidden' name='jmeno' value='".$soubor."'>";
  echo "<input type='submit' name='smazat' value='Smazat'>";
  echo "</form>";
  echo "<br>";
} 


Soubor delete.php:
<?php
$name = $_GET['jmeno'];

if (file_exists("galerie/projekty/thumb".$name) && file_exists("galerie/projekty/thumb".$name)) {
  unlink ("galerie/projekty/thumb".$name);
  unlink ("galerie/projekty/large".$name);
  echo "<center>Obrázek ".$name." byl smazán.<br>Budete automaticky přesměrováni zpět.</center>";
  sleep(5);
  header('location: index.php?page=gallery_uploader');
}
else {
  echo "<center>Smazání obrázku ".$name." se nezdařilo.<br>Budete automaticky přesměrováni zpět.<center>";
  header('location: index.php?page=gallery_uploader');
}  
?>
Taps
Profil
holi:
nechybí ti tam lomítka ?
$projekty = dir("galerie/projekty/thumb");
echo "Soubory ve složce projekty:<br>\n"; 
while($soubor=$projekty->read()) { 
  if ($soubor=="." || $soubor=="..") continue; 
  echo $soubor;
  echo "<form action='delete.php' method='post'>";
  echo "<input type='hidden' name='jmeno' value='".$soubor."'>";
  echo "<input type='submit' name='smazat' value='Smazat'>";
  echo "</form>";
  echo "<br>";
} 

<?php
$name = $_POST['jmeno'];

if (file_exists("galerie/projekty/thumb/".$name) && file_exists("galerie/projekty/thumb/".$name)) {
  unlink ("galerie/projekty/thumb".$name);
  unlink ("galerie/projekty/large/".$name);
  echo "<center>Obrázek ".$name." byl smazán.<br>Budete automaticky přesměrováni zpět.</center>";
  sleep(5);
  header('location: index.php?page=gallery_uploader');
}
else {
  echo "<center>Smazání obrázku ".$name." se nezdařilo.<br>Budete automaticky přesměrováni zpět.<center>";
  header('location: index.php?page=gallery_uploader');
}  
?>
holi
Profil
Mockrát děkuji všem, vše funguje jen se chci zeptat po provedění smazání mám automatické přesměrování jenže to vyhazuje tuto chybu a ic se neprovede
Upozornění : Nelze změnit informace v záhlaví - záhlaví již poslal (produkce začala v C: \ www \ tomasholan.eu \ delete.php: 7) v C: \ www \ tomasholan.eu \ delete.php on line 9
zápis přesměrování je výše v kódu provedený přes header
Taps
Profil
holi:
před header nesmí být žádný výstup. Konkrétně ve tvém případě ve skriptu máš umístěné echo. V rámci testování zkus řádky, kde máš echo zakomentovat a uvidíš zda skript bude fungovat v pořádku.
holi
Profil
ano funguje to, ale nedá se to nějak udělat aby se to tam vypsalo byl tam sleep(5) a potom přesměrování ?
Taps
Profil
holi:
ještě je varianta danou hlášku uložit do session a pak ji vypsat na stránce, kam je uživatel přesměrován
viz http://php.vrana.cz/informovani-uzivatele-o-vysledku-operace.php
holi
Profil
Vy jste kouzelník to je to nejlepší řešiný s ohledem na vzhled stránky a funkčnost ... moc krát děkuji.

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