I am puzzled. Error on one site, no error on the other

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Problem Situation

I have two web sites on the same shared host. They share code for the control panel. When executed for one site I get a warning (reproducible always), but on the other there is no warning.

One my home server, set up in the same way, I do not get a warning for either site.

The warning is from this code:

if ( in_array( $keys, $photo_ids ) )

*Warning*: in_array() expects parameter 2 to be array, null given in */home/rois3324/include/cpprocessforms.php* on line *203*

Steps

1) Photos are transferred to incoming directory using ftp.
2) Photo data is imported into database and files moved to web site's file system
3) Photos are linked to a "category" by
    i) Specifying photos to consider by entering filespec using wildcards
    ii) User presented with photos
iii) User selects photos to be added to category and clicks process button
    iv) Form returns array of photo_ids (key in database table)
v) Form processor creates entry in "link" table that links category_id to photo_id
    vi) A check is made to detect and reject when the link already exists

This is where the error occurs

I have looked at the code, but I am at a total loss to figure out why I have trouble on one site and not the other, even though they are using the code. And my home development system has no problems.

I can't play trial and error on the development system.

Anyone have any ideas?

This is the code where the warning is triggered:

function linkphotos( $dbh, $x ) {

  global $thumbsdirectory;

  $ret_str = "";
  $cat_id = $x['category'];
  $photos = $x['list'];
  $sql0 = "SELECT photo_filename FROM photographs WHERE photo_id = :id";
  $sql1 = "SELECT photo_id FROM gallery_photos WHERE photo_category = :id";
  $sql2= "INSERT INTO gallery_photos VALUES ( :id, :photo_id, :order )";

  $stmt = $dbh->prepare($sql0);
  try {
      foreach( $photos as $keys=> $on) {
      $stmt->bindValue(':id', $keys);
      $stmt->execute();
      $row = $stmt->fetch(PDO::FETCH_ASSOC);
      $filenames[$keys] = $thumbsdirectory . "/" . $row['photo_filename'];
     }
  } catch (PDOException $e) {
    return 'Error selecting existing file names: ' . $e->getMessage();
  }

  $stmt = $dbh->prepare($sql1);
  try {
      $stmt->bindValue(':id', $cat_id);
      $stmt->execute();
      while ( list( $id ) = $stmt->fetch(PDO::FETCH_NUM)) {
        $photo_ids[] = $id;
      }
    } catch (PDOException $e) {
    return 'Error selecting existing photos: ' . $e->getMessage();
  }

  $stmt = $dbh->prepare($sql2);
  try {
      $stmt->bindValue(':id', $cat_id);
      foreach( $photos as $keys=> $on) {
$ret_str .= htmlimage($filenames[$keys], $filenames[$keys] ) . "<br />";
        if ( in_array( $keys, $photo_ids ) ) { <<<<<<<<warning raised here
            $ret_str .= "  Duplicate. Already in Category.<br />";
        } else {
          $stmt->bindValue(':photo_id', $keys);
          $stmt->bindValue(':order', $keys);
          $stmt->execute();
          $ret_str .= "  Added to Category.<br />";
        }
      }
  } catch (PDOException $e) {
    return 'Error inserting new photos: ' . $e->getMessage();
  }

  return $ret_str;
}

--
Stephen


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux