Unlink and variables

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Eric

    Unlink and variables

    Hello,

    I created a form to upload files. The formfield contents are stored as
    records in an Ascii file "data.dat"; for reasons I am not using a
    MySql database.
    The upoaded file itself is stored in a directory called "files".
    With an administration form I can read all contents of the data.dat
    file and select records to delete (one at a time).
    So far so good.

    Now in one of the record fields the uploaded filename is stored.
    To add some new functionality I will not only delete the record but
    also delete the specific file mentioned in the filename field.

    To realise this I use the standard PHP function unlink(). To extract
    the needed filename from the selected record I use the PHP function
    explode(); fields are seperated with "|".

    By using the explode() function I can select the wanted filename in
    this record with the correct array value.

    for($i=0;$i<siz eof($records);$ i++) //Part of code that writes all
    the records back to the data.dat file
    {
    if($i!=$id) //$id is the value of the choosen record to
    delete
    fwrite($file,$r ecords[$i]); //write unselected records to data.dat
    else // extract the wanted filename in specific record
    {
    $columns = explode("|",$re cords[$id]);
    //$filename = "TryMe.txt" ; //Alternative used for testing
    $filename = $columns[sizeof($columns )-1];
    echo "$filename" ; //echo to screen for testing
    if(unlink("../files/$filename"))
    echo "The file $filename is succesfully deleted";
    //echo to screen for testing
    }//else
    }//for

    Now the problem:

    Running this code -in the else loop- the unlink function generates
    an error. However the echo displays the correct filename on the
    screen.

    The oddest thing is when I seperately copy a testfile named TryMe.txt
    into the files directory and then run the same code using $filename =
    "TryMe.txt" instead of $filename = $columns[sizeof($columns )-1];
    things work fine. The result is that echo displays the correct
    filename and the
    file TryMe.Txt is deleted from the ../files directory!!

    (To activate code I then choose a random record to delete in the
    administration. )

    Summarized:
    $filename = "TryMe.txt" ; - unlink runs fine
    ref. screen output: echo, echo:
    =============== =============== =============== ==
    .../files/TryMe.txtThe file TryMe.txt is succesfully deleted
    =============== =============== =============== ==

    $filename = $columns[sizeof($columns )-1]; - unlink generates error.
    ref. screen output: echo, Warning:
    =============== =============== =============== ===
    .../files/10_16_40_boef.g if
    Warning: unlink() failed (Invalid argument) in c:\program
    files\....\admi n\delete_file_r ec.php on line 43
    =============== =============== =============== ====

    Is there anybody who can help me out and give me a clue??
    Thanks in advance.....
  • Pedro

    #2
    Re: Unlink and variables

    Eric wrote:[color=blue]
    > else // extract the wanted filename in specific record
    > {
    > $columns = explode("|",$re cords[$id]);
    > //$filename = "TryMe.txt" ; //Alternative used for testing
    > $filename = $columns[sizeof($columns )-1];[/color]
    [...][color=blue]
    > Is there anybody who can help me out and give me a clue??[/color]

    Maybe there's some extra characters in $filename.

    Try

    $filename = trim($filename) ;

    to remove unwanted spaces and/or newlines.


    HTH

    --
    I have a spam filter working.
    To mail me include "urkxvq" (with or without the quotes)
    in the subject line, or your mail will be ruthlessly discarded.

    Comment

    • Eric

      #3
      Re: Unlink and variables -problem solved

      Pedro <hexkid@hotpop. com> wrote in message news:<blc7nk$ae g10$1@ID-203069.news.uni-berlin.de>...[color=blue]
      > Eric wrote:[color=green]
      > > else // extract the wanted filename in specific record
      > > {
      > > $columns = explode("|",$re cords[$id]);
      > > //$filename = "TryMe.txt" ; //Alternative used for testing
      > > $filename = $columns[sizeof($columns )-1];[/color]
      > [...][color=green]
      > > Is there anybody who can help me out and give me a clue??[/color]
      >
      > Maybe there's some extra characters in $filename.
      >
      > Try
      >
      > $filename = trim($filename) ;
      >
      > to remove unwanted spaces and/or newlines.
      >[/color]
      Hello Pedro,

      Thanks for the advise. Solution works fine, problem solved!!

      Regards,
      Eric

      Comment

      Working...