PHP program

I am having a problem with the program at line 79.  I am suspecting that I am missing an else.  I am working on a literal program from this book

http://books.google.com/books?id=yr02MM9UMA8C&pg=PT390&lpg=PT390&dq=$SongFile+%3D+fopen(+++++++++++++%22SongOrganizer/songs.txt%22,&source=bl&ots=kLi1Xwhh5C&sig=IEaOVy4Titxm79HWk9I2nq92NdY&hl=en&ei=jzfkTuXQIoXNtgeJ-_WUDg&sa=X&oi=book_result&ct=result&resnum=1&sqi=2&ved=0CB0Q6AEwAA#v=onepage&q=%24SongFile%20%3D%20fopen(%20%20%20%20%20%20%20%20%20%20%20%20%20%22SongOrganizer%2Fsongs.txt%22%2C&f=false

I can get the program to work with the song.txt without the SongOrganizer.  I do not know what the errors.  Can you help me?  

<!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">
<head>
<title>Song Organizer</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<h1>Song Organizer</h1>
<?php
if (isset($_GET ['action']))
{
      if ((file_exists("SongOrganizer/songs.txt")) && (filesize("SongOrganizer/songs.txt") > 0))
            {
                  $SongArray = file("SongOrganizer/songs.txt");
                  switch ($_GET['action'])
                  {
                        case 'Remove Duplicates';
                              $SongArray = array_unique(
                                    $SongArray);
                              $SongArray = array_values(
                                    $SongArray);
                              break;
                        case 'Sort Ascending';
                              sort($SongArray);
                              break;
                        case 'Shuffle';
                              shuffle($SongArray);
                              break;
                  }
                  if (count($SongArray)>0)
                  {
                        $NewSongs = implode($SongArray);
                        $SongStore = fopen("SongOrganizer/songs.txt","w+");
                        if ($SongStore === false)
                              echo "There was an error updating the song file. {$_GET['action']}\n";
                        else
                        {
                              fwrite($SongStore, $NewSongs);
                              fclose($SongStore);
                        }
                  }
                  else
                                    unlink("SongOrganizer/songs.txt");
            }
}
if (isset($_POST['submit']))
{
      $SongToAdd = stripslashes($_POST['SongName']) . "\n";
        $ExistingSongs = array();
      if (file_exists("SongOrganizer/songs.txt") && filesize("SongOrganizer/songs.txt") > 0)
            {
                  $ExistingSongs = file("SongOrganizer/songs.txt");
            }
if (in_array($SongToAdd, $ExistingSongs))
{
      echo "<p>The song you entered already exists!<br />\n";
      echo "Your song was not added to the lists.</p>";
}
else
{
      $SongFile = fopen(
            "SongOrganizer/songs.txt", "ab");
      if ($SongFile === false)
            echo "There was an error saving your message!\n";
      else
      {
            fwrite($SongFile, $SongToAdd);
            fclose($SongFile);
            echo "Your song has been added to the list.\n";
      }
}
if ((!file_exists("SongOrganizer/songs.txt"))
      || (filesize("SongOrganizer/songs.txt")
      == 0))
      echo "<p>There are no songs in the list.</p>\n";
}
// display songs
      $SongArray = file("SongOrganizer/songs.txt");
      echo "<table border=\"1\" width=\"100%\"
            style=\"background-color:lightgray\">\n";
      foreach ($SongArray as $Song)
      {
            echo "<tr>\n";
            echo "<td>" . htmlentities($Song) .
                  "</td>";
            echo "</tr>\n";
      }
      echo "</table>\n";

?>

<p>
<a href="SongOrganizer.php?action=Sort%20Ascending">Sort Song List</a><br />
<a href="SongOrganizer.php?action=Remove%20Duplicates">Remove Duplicate Song</a><br />
<a href="SongOrganizer.php?action=Shuffle">Randomize Song List</a><br />
</p>
<form action="SongOrganizer.php" method="post">
<p>Add a New Song</p>
<p>Song Name: <input type="text" name="SongName" /></p>
<p><input type="submit" name="submit" value="Add Song to List" />
<input type="reset" name"reset" value="Reset Song Name" /></p>
      </form>
                  
</body>
</html>


assaultkittyAsked:
Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

x
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

tcremelCommented:
yes before the line
// display songs

Open in new window

add a
else {

Open in new window


then add a } after the line
echo "</table>\n";

Open in new window

0
tcremelCommented:
I think the problem was in line because the file does not exist, but you try to open it !
0
Ray PaseurCommented:
You might want to reconsider your choice of books.  I notice that this one has only one review, and that is a big red flag.  On the first page I looked at, following the link posted with the question, I found a script that modified the underlying data model on the basis of a GET request.  There may be other things about the book that are good, but to me that is another, giant, red flag that screams "technically incompetent!"

Here is a book that I can recommend.  Very readable with good examples and a downloadable code library you can copy and modify for your own applications.  Now in its 4th printing, it has been a permanent part of my professional library since Version One.
http://www.sitepoint.com/books/phpmysql4/

To the instant case, you probably want to add error_reporting(E_ALL) to the top of your PHP script.  You also might want to have a default action path in the switch/case logic.  This instruction looks suspicious to me: $NewSongs = implode($SongArray);  See the man page here:
http://php.net/manual/en/function.implode.php

Implode() is one of those PHP functions that is left over from earlier, unsophisticated version of PHP.  If you're going to use it to turn an array of data strings into a single long string, you probably want to be using the "glue" argument.  For that you would probably want specify PHP_EOL (the standard end-of-line character).
0
CompTIA Network+

Prepare for the CompTIA Network+ exam by learning how to troubleshoot, configure, and manage both wired and wireless networks.

rinfoCommented:
Just put a curly bracket start after this line
if ((!file_exists("SongOrganizer/songs.txt"))
      || (filesize("SongOrganizer/songs.txt")
      == 0))
I have checked there is nothing wrong syntactically.
Script will run albeit not with desired results without the start curly bracket i have mentioned.
0
assaultkittyAuthor Commented:
Do I name the file SongOrganizer/song.txt?
results.docx
0
Dave BaldwinFixer of ProblemsCommented:
I just ran the code I gave you from your previous question on my WAMP system and it runs fine.  "SongOrganizer/songs.txt" means that you have a subdirectory in the directory where your PHP page is that is called "SongOrganizer" and that it has a file in it named "songs.txt".

So it would be "localhost/......./Chapter.06/Chapter/SongOrganizer/songs.txt"
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
PHP

From novice to tech pro — start learning today.