IN BRIEF:
A user edits the contents of a number of textboxes and textareas in a form, adds a few photos and then saves the page. The page is displayed in a larger template where the photos are used.
THE PROBLEM:
Deleting existing photos with the DELETE hyperlinks on the page does not work. It's also not allowing them to ADD photos to the page.
THE MYSTERY:
I experimented with deleting the photos that appear on a clients page from the specified image directory and they were no longer displayed on the form. This is good because I then tried adding photos to that directory to see if they showed up in the form and they did. They also display properly on the template page. All is well.. almost. For some reason the author of the page put the DELETE and ADD photos buttons there but they don't work.
Could someone look at this code and tell me where it goes south?
Code: Select all
<?
($id && !$action)?($action = "Update"):($action = "Add");
?>
<body bgcolor="#FFFFFF"><div align="center">
<form action="houses.php" method="post" enctype="multipart/form-data">
<b><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Please submit
the House details below.</font></b><br>
<br>
<table width="400" border="0" cellpadding="3" cellspacing="0">
<input type="hidden" name="id" value="<?=$rowї"id"]?>">
<tr>
<td align="right"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">House</font></td>
<td>
<input name="house" value="<?=$rowї"house"]?>" size="35" maxlength="55">
</td>
</tr>
<tr>
<td align="right"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Member</font></td>
<td>
<input name="member" value="<?=$rowї"member"]?>" size="35" maxlength="44">
</td>
</tr>
<tr>
<td align="right"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Director</font></td>
<td>
<input name="director" value="<?=$rowї"director"]?>" size="35" maxlength="55">
</td>
</tr>
<tr>
<td align="right"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Address</font></td>
<td>
<textarea name="address" cols="35" rows="3"><?=$rowї"address"]?></textarea>
</tr>
<tr>
<td align="right"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Phone</font></td>
<td>
<input name="phone" value="<?=$rowї"phone"]?>" size="25" maxlength="25">
</td>
</tr>
<tr>
<td align="right"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Email</font></td>
<td>
<input name="email" value="<?=$rowї"email"]?>" size="35" maxlength="55">
</td>
</tr>
<tr>
<td align="right"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Location</font></td>
<td>
<textarea name="location" cols="35" rows="3"><?=$rowї"location"]?></textarea>
</td>
</tr>
<tr>
<td align="right"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">URL</font></td>
<td>
<input name="url" value="<?=$rowї"url"]?>" size="35" maxlength="55">
</td>
</tr>
<tr>
<td align="right"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Background</font></td>
<td>
<textarea name="background" cols="35" rows="3"><?=$rowї"background"]?></textarea>
</td>
</tr>
<tr>
<td align="right"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Description</font></td>
<td>
<textarea name="description" cols="35" rows="3"><?=$rowї"description"]?></textarea>
</td>
</tr>
<tr>
<td align="right"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">House
Size</font></td>
<td>
<input name="house_size" value="<?=$rowї"house_size"]?>" size="35" maxlength="55">
</td>
</tr>
<tr>
<td align="right"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Facilites</font></td>
<td>
<textarea name="facilities" cols="35" rows="3"><?=$rowї"facilities"]?></textarea>
</td>
</tr>
<tr>
<td align="right"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Staff</font></td>
<td>
<textarea name="staff" cols="35" rows="3"><?=$rowї"staff"]?></textarea>
</td>
</tr>
<tr>
<td align="right"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Video
Link</font></td>
<td>
<input name="video_link" value="<?=$rowї"video_link"]?>" size="35">
</td>
</tr>
<!-- <tr>
<td align="right"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Reservations</font></td>
<td>
<textarea name="reservations" cols="35" rows="3"><?=$rowї"reservations"]?></textarea>
</td>
</tr>-->
<input type="hidden" name="reservations" value="">
<tr>
<td align="right"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Reservations
Phone</font></td>
<td>
<input name="reservation_phone" value="<?=$rowї"reservation_phone"]?>" size="35">
</td>
</tr>
<tr>
<td align="right"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Reservations
Email</font></td>
<td>
<input name="reservation_email" value="<?=$rowї"reservation_email"]?>" size="35">
</td>
</tr>
<?
if(!$id){
$this->filefields(7);
} else {
?>
<tr>
<td colspan="2" width="100%"><br><center>
<table width="100%">
<?
$this->displaypics($rowї"house"], $rowї"id"]);
?>
</table><br>
</td>
</tr>
<?
}
?>
<br>
</table>
<center>
<input type="submit" name="action" value="<?=$action?>">
</center>
</form>
</div>
<center>
<a href="houses.php?action=view"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Back
to Admin</font></a>
</center>The form calls this page as well. It has more functions listed in it.
Code: Select all
<?
require("Template_class.php");
class houses extends Template{
function houses(){
$this->Template("localhost", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx", "xxxxxxxx");
}
function addhouse($vars, $files){
$folder = $varsї"house"];
foreach($vars as $key => $val) $argstr .= ""$val",";
$argstr = $this->FixString($argstr);
eval("\$this->SubmitInfo(".$argstr.");");
$this->addpictures($folder, $files);
}
function addpictures($folder, $files){
foreach($files as $file => $var){
if($varї"tmp_name"] != "none") ($argstr .= """.$varї"tmp_name"]."","".$varї"name"]."",");
}
$argstr = $this->FixString($argstr);
if(strlen($argstr) > 1) eval("\$this->SavePictures("".$folder."",".$argstr.");");
}
function deletepicture($file){
if(file_exists($file)) unlink($file);
}
function viewhouses(){
$q = "SELECT id, house, director FROM $this->table";
$r = $this->ExecuteQuery($q);
?><body bgcolor="#EEEEEE">
<table width="540" border="0" cellspacing="1" cellpadding="3" align="center">
<tr align="center">
<td width="195" bgcolor="#E7D6AD"><b><font face="Verdana, Arial, Helvetica, sans-serif" size="3">Tools</font></b></td>
<td width="164" bgcolor="#E7D6AD"><b><font face="Verdana, Arial, Helvetica, sans-serif" size="3">House</font></b></td>
<td width="163" bgcolor="#E7D6AD"><b><font face="Verdana, Arial, Helvetica, sans-serif" size="3">Director</font></b></td>
</tr>
<?
while($row = $this->HashQuery($r)){
?>
<tr>
<td width="195" bgcolor="#FAF3DC" align="center">
<a href="template.php?id=<?=$rowї"id"]?>"><img src="images/buttons_03.gif" width="52" height="15" hspace="2" border="0"></a>
<a href="?action=edit&id=<?=$rowї"id"]?>"><img src="images/buttons_05.gif" width="52" height="15" hspace="2" border="0"></a>
<a href="?action=delete&id=<?=$rowї"id"]?>&folder=<?=urlencode($rowї"house"])?>"><img src="images/buttons_07.gif" width="52" height="15" hspace="2" border="0"></a>
</td>
<td width="164" bgcolor="#FAF3DC"><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><?=$rowї"house"]?></font></td>
<td width="163" bgcolor="#FAF3DC"><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><?=$rowї"director"]?></font></td>
</tr>
<?
}
$this->ReleaseResult($r);
?>
<tr>
<tr align="center">
<td colspan="3"><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><a href="?action=New"><br>
Add a House</a> | <a href="/index.php">Home Page</a></font></td>
</tr>
</table>
<?
}
function viewdetail(){
}
function displaypics($folder, $id){
$farray = $this->GetPictures($folder);
($farray == "Error")?($count = 0):($count = count($farray));
echo "<tr><center>";
for($i = 0; $i < $count; $i++){
?>
<td align="center">
<font face="verdana"><img src="<?=$folder."/".$farrayї$i]?>" width="100" height="100"><br><a href="?action=delpic&id=<?=$id?>&file=<?=urlencode($folder."/".$farrayї$i])?>">Delete</a>
</td>
<?
if($i==3) echo "</tr><tr>";
}
echo "</tr>";
$this->filefields(7 - $count);
}
function filefields($max){
for($i = 1; $i <= $max; $i++){
?>
<tr>
<td><font face="verdana">Picture<?=$i?></td><td><input type="file" name="f_pic<?=$i?>"></td>
</tr>
<?
}
}
function doform($id){
if($id){
$q = "SELECT * FROM $this->table WHERE id='$id'";
$r = $this->ExecuteQuery($q);
$row = $this->HashQuery($r);
$this->ReleaseResult($r);
if(!$row){
$action = "Add";
$rowї"id"] = $id;
}
}
include("form.php");
}
}
if(!$action) ($action = "view");
unset($HTTP_POST_VARSї"action"]);
$h = new houses();
//include("../members/header.php");
switch($action){
case "Add":
$h->addhouse($HTTP_POST_VARS, $HTTP_POST_FILES);
$h->viewhouses();
break;
case "delete":
$h->Delete($id, $folder);
$h->viewhouses();
break;
case "Update":
$h->Update($id, $HTTP_POST_VARS);
$h->addpictures($house, $HTTP_POST_FILES);
$h->doform($id);
break;
case "view":
$h->viewhouses();
break;
case "delpic":
$h->deletepicture($file);
$h->doform($id);
break;
case "New":
$h->doform(null);
break;
case "edit":
$h->doform($id);
break;
case "detail":
$h->viewdetail();
break;
}
$h->Destroy();
//include("../members/footer.php");
?>Thanks for whatever help you can offer.
Dave