Avatar billede weblance Nybegynder
09. juni 2007 - 00:38 Der er 23 kommentarer og
2 løsninger

Kan dette ikke lade sige gøre?

Har en formular, hvor jeg skal indtaste et filnavn, som vha. php skal slette filen. Men jeg vil gerne blive sendt tilbage til formularsiden med besken om at det var ok eller om der var fejl. Har prøvet at taste lidt men er meget ny i php . . . og det virkede selvfølgelig ikke.

Formularen:

<?
if(isset($_GET['sent']) && $_GET['sent'] == "OK") {
echo "<div style='color:red;font-weight:bold'>Filen er nu slettet</div><br>";
}
if(isset($_GET['sent']) && $_GET['sent'] == "FALSE") {
echo "<div style='color:red;font-weight:bold'>Filen kunne ikke slettes. Prøv igen.</div><br>";
}
else {
?>
</div></td>
    </tr>
   
    <tr>
      <td height="350" colspan="3" align="center" valign="top" bgcolor="#eef1e7" class="td_back"><p class="style2">Skriv navnet p&aring; filen der skal slettes: </p>
      <form action="slet.php" method="POST">
        <p>
          <input name="sletfilen" type="text" class="textfelt" id="sletfilen" size="50" />
          </p>
        <p><br />
            <input type="submit" value="Slet filen" class="knap" />
            <input type="hidden" name="retPage" value="<?=$_SERVER["PHP_SELF"]?>">
                </p>
      </form> <?
}
?>

Filen slet.php:

<?php
  $file_delete = "../images/banner/" . addslashes($_POST['sletfilen']);
 
  if (unlink($file_delete)) {
      Header("Location: ".$_POST["retPage"]."?sent=OK");
  } else {
      Header("Location: ".$_POST["retPage"]."?sent=FALSE");
  }
 
?>
Avatar billede steen-h Mester
09. juni 2007 - 08:52 #1
Du må ikke sende en Header efter at du har skrevet til skærm.
Jeg tror du skal bruge Java Script

<script language='javascript'>
      self.location.href = "<?php echo ".$_POST["retPage"]."?sent=OK";
?>";
    </script>
Avatar billede steen-h Mester
09. juni 2007 - 08:58 #2
<?php
  $file_delete = "../images/banner/" . addslashes($_POST['sletfilen']);
 
  if (unlink($file_delete)) {
    $sent = "OK";
  } else {
      $sent = "FALSE";
  }
?>

<script language='javascript'>
  self.location.href = "<?php echo $_POST["retPage"]."?sent=".$sent;?>";
</script>
Avatar billede jakobdo Ekspert
09. juni 2007 - 09:40 #3
Jeg ville dog sikre min navnet på filen via: basename()
Avatar billede weblance Nybegynder
09. juni 2007 - 13:41 #4
<?php
  $file_delete = "../images/banner/" . addslashes($_POST['sletfilen']);
 
  if (unlink($file_delete)) {
    $sent = "OK";
  } else {
      $sent = "FALSE";
  }
?>

<script language='javascript'>
  self.location.href = "<?php echo $_POST["retPage"]."?sent=".$sent;?>";
</script>

Giver kun en blank skærm...
Avatar billede steen-h Mester
10. juni 2007 - 07:39 #5
Hvad står der i adressefeltet når du har den blanke skærm ?
Avatar billede weblance Nybegynder
10. juni 2007 - 10:29 #6
I adressefeltet står der:

http://www.mitdomæne.dk/banner/slet.php?sent=FALSE

eller

http://www.mitdomæne.dk/banner/slet.php?sent=OK

ellers er der bare blank skærm . . . men sletningen bliver udført godt nok.
Avatar billede weblance Nybegynder
10. juni 2007 - 10:54 #7
Nå, nu fandt jeg fejlen . . . i formualern hvor der står

<input type="hidden" name="retPage" value="<?=$_SERVER["PHP_SELF"]?>">

er der lige pludselig kommet til at stå:

<input type="hidden" name="retPage" value="<?=$_SERVER["../PHP_SELF"]?>">

Jeg fjernede ../ og nu virker det.

Tak for hjælpen steen-h. Send lige et svar så du kan få point :)
Avatar billede weblance Nybegynder
10. juni 2007 - 14:20 #8
Lige et lille tillægsspørgsmål:

Jeg har lavet lidt om på siden, så der er et tekstfelt i formularen hvor man får en liste over hvilke filer der er i biblioteket hvor man kan slette filer, sådan:

<textarea name="textarea" cols="47" rows="5" style="padding-left:10px" class="textfelt"><?

$path = "/stien til/html/images/banner";

$dir_handle = @opendir($path) or die("Kan ikke åbne $path");

while ($file = readdir($dir_handle))
{
  if($file!="." && $file!=".." && $file!="banner_120x146a.txt" && $file!="banner_120x146b.txt" && $file!="banner_120x146c.txt" && $file!="banner_120x146d.txt" && $file!="banner_468x60.txt")
      echo "$file" . "\n";
}

closedir($dir_handle);

?>
          </textarea>

Kan det ikke lade sig gøre at man klikker på en af filerne i <textarea> og navnet automatisk så bliver skrevet i input feltet (hvor navnet på den fil der skal slettes skal skrives hvorefter den slettes ved tryk på submit knappen)?
Avatar billede weblance Nybegynder
10. juni 2007 - 14:24 #9
Jeg tænker på at man evt. kan lave et value="" i inputfeltet med en variabel der bliver sat ved valg af en fil i textarea...

Kan man ikke gøre dette i php? Jeg er desværre så meget nybegynder at jeg ikke aner hvor jeg skal starte og hvordan jeg skal kringle den.

På forhånd tak for hjælpen!
Avatar billede steen-h Mester
10. juni 2007 - 18:53 #10
Hvis du skifter følgende

echo "$file" . "\n";

med

echo "$file" .
"-<a href=\".$_POST["retPage"]."?slet=".$file\">Slet</a>\n";

så får du et slette link efter fil navnet.

Så skal du have sat det ind i dit inputfelt med
<input name="sletfilen" type="text" class="textfelt" id="sletfilen" size="50" value="<?php echo $_GET['slet']; ?>/>

Det kan også gøres med Java Script, så er det ikke nødvendigt med en reload.
Avatar billede steen-h Mester
10. juni 2007 - 18:54 #11
Der var en fejl

<input name="sletfilen" type="text" class="textfelt" id="sletfilen" size="50" value="<?php echo $_GET['slet']; ?>"/>
Avatar billede weblance Nybegynder
10. juni 2007 - 19:49 #12
Der er stadig en fejl . . . har lavet ændringerne, men siden er bare blank så snart den loades.
Avatar billede jakobdo Ekspert
10. juni 2007 - 20:00 #13
Smid lige din fulde kode herind.
Der må være en fejl et sted.
Avatar billede weblance Nybegynder
10. juni 2007 - 20:34 #14
<form action="slet.php" method="POST">
        <p>
          <input name="sletfilen" type="text" class="textfelt" id="sletfilen" size="50" value="<?php echo $_GET['slet']; ?>"/>
        </p>
        <p><img src="../images/tom.gif" width="10" height="10" /><br />
            <input type="submit" value="Slet filen" class="knap" />
            <input type="hidden" name="retPage" value="<?=$_SERVER["PHP_SELF"]?>">
          </p>
          <p class="style2">Filer i bannerbiblioteket: </p>
        <p>
          <textarea name="textarea" cols="47" rows="5" style="padding-left:10px" class="textfelt"><?

$path = "/denfuldesti/html/images/banner";

$dir_handle = @opendir($path) or die("Kan ikke åbne $path");

while ($file = readdir($dir_handle))
{
  if($file!="." && $file!=".." && $file!="banner_120x146a.txt" && $file!="banner_120x146b.txt" && $file!="banner_120x146c.txt" && $file!="banner_120x146d.txt" && $file!="banner_468x60.txt")
      echo "$file" .
"-<a href=\".$_POST["retPage"]."?slet=".$file\">Slet</a>\n";
}


closedir($dir_handle);

?>
          </textarea>
        </p>
      </form>
Avatar billede jakobdo Ekspert
10. juni 2007 - 20:53 #15
Sådan:

<?php
//http://www.eksperten.dk/spm/782378
?>
<form action="slet.php" method="POST">
    <p>
        <input name="sletfilen" type="text" class="textfelt" id="sletfilen" size="50" value="<?php echo $_GET['slet']; ?>"/>
    </p>
    <p><img src="../images/tom.gif" width="10" height="10" /><br />
        <input type="submit" value="Slet filen" class="knap" />
        <input type="hidden" name="retPage" value="<?=$_SERVER["PHP_SELF"]?>">
    </p>
    <p class="style2">Filer i bannerbiblioteket: </p>
    <p>
        <textarea name="textarea" cols="47" rows="5" style="padding-left:10px" class="textfelt">
        <?
            $path = "/denfuldesti/html/images/banner";

            $dir_handle = @opendir($path) or die("Kan ikke åbne $path");

            while ($file = readdir($dir_handle))
            {
              if($file!="." && $file!=".." && $file!="banner_120x146a.txt" && $file!="banner_120x146b.txt" && $file!="banner_120x146c.txt" && $file!="banner_120x146d.txt" && $file!="banner_468x60.txt")
              echo $file . '-<a href="'.$_POST['retPage'].'?slet='.$file.'">Slet</a>'."\r\n";
            }
            closedir($dir_handle);
        ?>
        </textarea>
    </p>
</form>
Avatar billede weblance Nybegynder
10. juni 2007 - 21:04 #16
Ja, det giver bare noget ubrugelig tekst i textarea:

sidebanner.gif-<a href="?slet=sidebanner.gif">Slet</a>
topbanner.gif-<a href="?slet=topbanner.gif">Slet</a>
weblance.gif-<a href="?slet=weblance.gif">Slet</a>
solbergs.jpg-<a href="?slet=solbergs.jpg">Slet</a>
Avatar billede jakobdo Ekspert
10. juni 2007 - 21:10 #17
Det er jo koden du selv har lavet!
Jeg rettede den bare så det virkede.
Avatar billede weblance Nybegynder
10. juni 2007 - 21:19 #18
Teksten er ikke "ubrugelig" - den er bare formateret forkert. Problemet består jo nok bare i at et <textarea> giver et output i "rå" tekst, men det jeg skal bruge er den "formaterede" html kode.

Har lige prøvet at smide scriptet i en tabelcelle, og her virker det fint.

Kan det ikke lade sig gøre med et <textarea>, eller skal jeg bare acceptere at bruge en tabelcelle i stedet?
Avatar billede weblance Nybegynder
10. juni 2007 - 22:40 #19
Nå, pyt med det.

Det er jo strengt taget ikke nødvendigt med et <textarea>, og det var jo kun for et syns skyld. Så i stedet har jeg lavet det som en tabel, hvor der kun vises filnavnene som link:

<table width="263"border="0" cellpadding="0" cellspacing="0" style="border: 1px solid #1088ff; background:#FFFFFF;">
          <tr>
            <td valign="top"><div align="left"
            style="width:221px;
            height:75px;
            font-size: 10pt;
            overflow:auto;
            SCROLLBAR-FACE-COLOR: #ffffff;
            SCROLLBAR-HIGHLIGHT-COLOR: #ffffff;
            SCROLLBAR-SHADOW-COLOR: #ffffff;
            SCROLLBAR-3DLIGHT-COLOR: #ffffFf;
            SCROLLBAR-ARROW-COLOR: #1088ff;
            SCROLLBAR-TRACK-COLOR: #ffffff;
            SCROLLBAR-DARKSHADOW-COLOR: #ffffff;
            padding-top:2px;
            padding-left:5px;
            padding-bottom:2px;">
              <?
            $path = "/home/e-smith/files/ibays/faeroerne.dk/html/images/banner";

            $dir_handle = @opendir($path) or die("Kan ikke &aring;bne $path");

            while ($file = readdir($dir_handle))
            {
              if($file!="." && $file!=".." && $file!="banner_120x146a.txt" && $file!="banner_120x146b.txt" && $file!="banner_120x146c.txt" && $file!="banner_120x146d.txt" && $file!="banner_468x60.txt")
              echo '<a href="'.$_POST['retPage'].'?slet='.$file.'">'.$file.'</a><br/>';
            }
            closedir($dir_handle);
        ?>
            </span></div></td>
          </tr>
        </table>

... og det kan jo laves så det ser ud som tekstfeltet.
Avatar billede jakobdo Ekspert
11. juni 2007 - 07:52 #20
Hvad vil du med textarea?
Avatar billede steen-h Mester
12. juni 2007 - 17:33 #21
Det var godt du hjalp færdig jakobdo, jeg tillader mig at lægge et svar med jeg syntes vi skal dele point.
Avatar billede jakobdo Ekspert
12. juni 2007 - 17:53 #22
Svar!
Avatar billede weblance Nybegynder
12. juni 2007 - 18:07 #23
Jamen I får lov til at dele . . . og begge to et STORT tak!

/Carl
Avatar billede jakobdo Ekspert
12. juni 2007 - 18:49 #24
Takker for point.
Avatar billede steen-h Mester
13. juni 2007 - 05:09 #25
Ja, jeg siger også tak.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester