lordphate Posted February 13, 2007 Share Posted February 13, 2007 Okay so i'm trying to call a function from a form... Basically i'm trying to display a photo, and have a text box under it saying "edit caption here" , i wrote a edit_caption function and when they click "edit caption" button, it updates the caption.... this is what i have [code=php:0] <?php include ("../inc/config.inc.php"); include ("../inc/globals.inc.php"); switch ($_GET[action]) { case 'edit': edit_caption(); break; case 'delete': delete_photo(); break; } $result_array = array(); $counter = 0; $cid = (int)($_GET['cid']); $pid = (int)($_GET['pid']); if( empty($cid) && empty($pid) ) { $number_of_categories_in_row = 4; $result = mysql_query( "SELECT c.category_id,c.category_name,COUNT(photo_id) FROM gallery_category as c LEFT JOIN gallery_photos as p ON p.photo_category = c.category_id GROUP BY c.category_id" ); while( $row = mysql_fetch_array( $result ) ) { $result_array[] = "<a href='edit.php?cid=".$row[0]."'>".$row[1]."</a> "."(".$row[2].")"; } mysql_free_result( $result ); $result_final = "<tr>\n"; foreach($result_array as $category_link) { if($counter == $number_of_categories_in_row) { $counter = 1; $result_final .= "\n</tr>\n<tr>\n"; } else $counter++; $result_final .= "\t<td>".$category_link."</td>\n"; } if($counter) { if($number_of_categories_in_row-$counter) $result_final .= "\t<td colspan='".($number_of_categories_in_row-$counter)."'> </td>\n"; $result_final .= "</tr>"; } } else if( $cid && empty( $pid ) ) { $number_of_thumbs_in_row = 5; $result = mysql_query( "SELECT photo_id,photo_caption,photo_filename FROM gallery_photos//// WHERE photo_category='".addslashes($cid)."'" ); $nr = mysql_num_rows( $result ); if( empty( $nr ) ) { $result_final = "\t<tr><td>No Category found</td></tr>\n"; } else { while( $row = mysql_fetch_array( $result ) ) { $result_array[] = "<a href='edit.php?cid=$cid&pid=".$row[0]."'><img src='".$images_dir."/tb_".$row[2]."' border='0' alt='".$row[1]."' /></a>"; } mysql_free_result( $result ); $result_final = "<tr>\n"; foreach($result_array as $thumbnail_link) { if($counter == $number_of_thumbs_in_row) { $counter = 1; $result_final .= "\n</tr>\n<tr>\n"; } else $counter++; $result_final .= "\t<td>".$thumbnail_link."</td>\n"; } if($counter) { if($number_of_photos_in_row-$counter) $result_final .= "\t<td colspan='".($number_of_photos_in_row-$counter)."'> </td>\n"; $result_final .= "</tr>"; } } } else if( $pid ) { $result = mysql_query( "SELECT photo_caption,photo_filename FROM gallery_photos WHERE photo_id='".addslashes($pid)."'" ); list($photo_caption, $photo_filename) = mysql_fetch_array( $result ); $nr = mysql_num_rows( $result ); mysql_free_result( $result ); if( empty( $nr ) ) { $result_final = "\t<tr><td>No Photo found</td></tr>\n"; } else { $result = mysql_query( "SELECT category_name FROM gallery_category WHERE category_id='".addslashes($cid)."'" ); list($category_name) = mysql_fetch_array( $result ); mysql_free_result( $result ); $result_final .= "<tr>\n\t<td> <a href='edit.php'>Categories</a> > <a href='edit.php?cid=$cid'>$category_name</a></td>\n</tr>\n"; $result_final .= "<tr>\n\t<td align='center'> <br /> <img src='".$images_dir."/".$photo_filename."' border='0' alt='".$photo_caption."' /> <br /> $photo_caption <br><br><form name='option' action='edit.php' method='get'> <textarea name='caption' cols='30' rows='8'></textarea><br> <input type=button value='Edit Caption' name='edit'><br> <input type=button value='Delete Photo' name='delete'><br> </td> </tr>"; } } ?> <html> <head> <title>Edit Photo</title> </head> <body> <table width='100%' border='0' align='center' style='width: 100%;'> <?php echo $result_final ?> </table> </body> </html> [/code] Quote Link to comment https://forums.phpfreaks.com/topic/38263-figuring-out-functions/ Share on other sites More sharing options...
fert Posted February 13, 2007 Share Posted February 13, 2007 so, what's your question? Quote Link to comment https://forums.phpfreaks.com/topic/38263-figuring-out-functions/#findComment-183322 Share on other sites More sharing options...
lordphate Posted February 13, 2007 Author Share Posted February 13, 2007 When i hit the button "edit caption" it doesn't do anything...is there a reason for this? What am i doing wrong? Quote Link to comment https://forums.phpfreaks.com/topic/38263-figuring-out-functions/#findComment-183324 Share on other sites More sharing options...
Lodar Posted February 13, 2007 Share Posted February 13, 2007 From what I can see, your switch statement is looking for the a variable called action, looking through your code there is no var passed back to the script called that. In the $result_final where you build the form to submit, you have the buttons named edit and delete, but not action. I would change the name of the buttons to action and then change either the case in the switch to be the same as the value in the button. Or you could change the value part of the buttons to match what you have in the switch. So as an example if you keep the switch statement the same then you would change your submit buttons to the below <input type="submit" name="action" value="Edit"> <input type="submit" name="action" value="Delete"> Try those suggestions and see how you get on. Quote Link to comment https://forums.phpfreaks.com/topic/38263-figuring-out-functions/#findComment-183394 Share on other sites More sharing options...
lordphate Posted February 13, 2007 Author Share Posted February 13, 2007 Okay it is now submitting but not changing the caption edit.php?caption=sdg&action=Edit is the url given, here is my globals.inc.php <?php function edit_caption( $photo_id, $new_caption, $new_category ) { mysql_query( "UPDATE gallery_photo SET photo_caption='".addslashes( $new_caption )."', photo_category='".addslashes( $new_category )."' WHERE photo_id='".addslashes( $photo_id )."'" ); } //edit_caption( PHOTO_ID, “New Caption”, NEW_CATEGORY_ID );// function delete_photo($photo_id) { $result = mysql_query(" SELECT photo_filename FROM gallery_photo WHERE photo_id = '" . addslashes($photo_id) . "' "); list($filename) = mysql_fetch_array($result); mysql_free_result($result); unlink($images_dir . '/' . $filename); mysql_query(" DELETE FROM gallery_photo WHERE photo_id='" . addslashes($photo_id) . "' "); } //delete_photo(PHOTO_ID);// function add_category( $category_name ) { mysql_query( "INSERT INTO gallery_category(`category_name`) VALUES('".addslashes( $category_name )."' )" ); } //add_category( “Category Name” );// function edit_category( $category_id, $new_name ) { mysql_query( "UPDATE gallery_category SET category_name='".addslashes( $new_name )."' WHERE category_id='".addslashes( $category_id )."'" ); } //edit_category( CATEGORY_ID, “New Name” );// function delete_category( $category_id ) { global $images_dir; $result = mysql_query( "SELECT photo_filename FROM gallery_photo WHERE photo_category='".addslashes( $category_id )."'" ); while( $row = @mysql_fetch_array( $result )) { unlink($images_dir."/".$row[0]); } mysql_query( "DELETE FROM gallery_photo WHERE photo_category='".addslashes( $category_id )."'" ); mysql_query( "DELETE FROM gallery_category WHERE category_id='".addslashes( $category_id )."'" ); } //delete_category( CATEGORY_ID );// ?> Quote Link to comment https://forums.phpfreaks.com/topic/38263-figuring-out-functions/#findComment-183819 Share on other sites More sharing options...
Lodar Posted February 13, 2007 Share Posted February 13, 2007 In the code you listed below your edit_caption function is not receiving any parameters, but your include file lists parameters to that function. Try passing across the relevant fields from the form to the function, if you have not already seen and corrected that. Okay so i'm trying to call a function from a form... Basically i'm trying to display a photo, and have a text box under it saying "edit caption here" , i wrote a edit_caption function and when they click "edit caption" button, it updates the caption.... this is what i have [code=php:0] <?php include ("../inc/config.inc.php"); include ("../inc/globals.inc.php"); switch ($_GET[action]) { case 'edit': edit_caption(); break; case 'delete': delete_photo(); break; } $result_array = array(); $counter = 0; $cid = (int)($_GET['cid']); $pid = (int)($_GET['pid']); if( empty($cid) && empty($pid) ) { $number_of_categories_in_row = 4; $result = mysql_query( "SELECT c.category_id,c.category_name,COUNT(photo_id) FROM gallery_category as c LEFT JOIN gallery_photos as p ON p.photo_category = c.category_id GROUP BY c.category_id" ); while( $row = mysql_fetch_array( $result ) ) { $result_array[] = "<a href='edit.php?cid=".$row[0]."'>".$row[1]."</a> "."(".$row[2].")"; } mysql_free_result( $result ); $result_final = "<tr>\n"; foreach($result_array as $category_link) { if($counter == $number_of_categories_in_row) { $counter = 1; $result_final .= "\n</tr>\n<tr>\n"; } else $counter++; $result_final .= "\t<td>".$category_link."</td>\n"; } if($counter) { if($number_of_categories_in_row-$counter) $result_final .= "\t<td colspan='".($number_of_categories_in_row-$counter)."'> </td>\n"; $result_final .= "</tr>"; } } else if( $cid && empty( $pid ) ) { $number_of_thumbs_in_row = 5; $result = mysql_query( "SELECT photo_id,photo_caption,photo_filename FROM gallery_photos//// WHERE photo_category='".addslashes($cid)."'" ); $nr = mysql_num_rows( $result ); if( empty( $nr ) ) { $result_final = "\t<tr><td>No Category found</td></tr>\n"; } else { while( $row = mysql_fetch_array( $result ) ) { $result_array[] = "<a href='edit.php?cid=$cid&pid=".$row[0]."'><img src='".$images_dir."/tb_".$row[2]."' border='0' alt='".$row[1]."' /></a>"; } mysql_free_result( $result ); $result_final = "<tr>\n"; foreach($result_array as $thumbnail_link) { if($counter == $number_of_thumbs_in_row) { $counter = 1; $result_final .= "\n</tr>\n<tr>\n"; } else $counter++; $result_final .= "\t<td>".$thumbnail_link."</td>\n"; } if($counter) { if($number_of_photos_in_row-$counter) $result_final .= "\t<td colspan='".($number_of_photos_in_row-$counter)."'> </td>\n"; $result_final .= "</tr>"; } } } else if( $pid ) { $result = mysql_query( "SELECT photo_caption,photo_filename FROM gallery_photos WHERE photo_id='".addslashes($pid)."'" ); list($photo_caption, $photo_filename) = mysql_fetch_array( $result ); $nr = mysql_num_rows( $result ); mysql_free_result( $result ); if( empty( $nr ) ) { $result_final = "\t<tr><td>No Photo found</td></tr>\n"; } else { $result = mysql_query( "SELECT category_name FROM gallery_category WHERE category_id='".addslashes($cid)."'" ); list($category_name) = mysql_fetch_array( $result ); mysql_free_result( $result ); $result_final .= "<tr>\n\t<td> <a href='edit.php'>Categories</a> > <a href='edit.php?cid=$cid'>$category_name</a></td>\n</tr>\n"; $result_final .= "<tr>\n\t<td align='center'> <br /> <img src='".$images_dir."/".$photo_filename."' border='0' alt='".$photo_caption."' /> <br /> $photo_caption <br><br><form name='option' action='edit.php' method='get'> <textarea name='caption' cols='30' rows='8'></textarea><br> <input type=button value='Edit Caption' name='edit'><br> <input type=button value='Delete Photo' name='delete'><br> </td> </tr>"; } } ?> <html> <head> <title>Edit Photo</title> </head> <body> <table width='100%' border='0' align='center' style='width: 100%;'> <?php echo $result_final ?> </table> </body> </html> [/code] Quote Link to comment https://forums.phpfreaks.com/topic/38263-figuring-out-functions/#findComment-183840 Share on other sites More sharing options...
sasa Posted February 13, 2007 Share Posted February 13, 2007 edit != Edit Quote Link to comment https://forums.phpfreaks.com/topic/38263-figuring-out-functions/#findComment-183842 Share on other sites More sharing options...
lordphate Posted February 13, 2007 Author Share Posted February 13, 2007 case 'Edit': edit_caption($pid, $caption, $cid); break; $cid = (int)($_GET['cid']); $pid = (int)($_GET['pid']); $caption= ($_GET['caption']); function edit_caption( $pid, $caption, $cid ) { mysql_query( "UPDATE gallery_photo SET photo_caption='".addslashes( $caption )."', photo_category='".addslashes( $cid )."' WHERE photo_id='".addslashes( $pid )."'" ); } Still not working correctly, it is going back to the main page like it WOULD work Quote Link to comment https://forums.phpfreaks.com/topic/38263-figuring-out-functions/#findComment-184054 Share on other sites More sharing options...
trq Posted February 13, 2007 Share Posted February 13, 2007 Try putting a die() statement within the function to see why its failing. mysql_query( "UPDATE gallery_photo SET photo_caption='".addslashes( $caption )."', photo_category='".addslashes( $cid )."' WHERE photo_id='".addslashes( $pid )."'" ) or die(mysql_error()); Also... whats with all the unneeded brackets? $cid = (int) $_GET['cid']; $pid = (int) $_GET['pid']; $caption = $_GET['caption']; Quote Link to comment https://forums.phpfreaks.com/topic/38263-figuring-out-functions/#findComment-184063 Share on other sites More sharing options...
lordphate Posted February 14, 2007 Author Share Posted February 14, 2007 I am getting 0 errors when i do insert the die statement... I think it's because it's not passing along the cid and pid statements.. how do i make cid and pid still in the URL for the $_GET command? Here is the regular URL to view the photo: edit.php?cid=1&pid=9 here's what i get when i hit the edit button: edit.php?caption=fSAF&action=Edit Shouldn't i have: edit.php?cid=1&pic=9&caption=fSAF&action=Edit ??? Quote Link to comment https://forums.phpfreaks.com/topic/38263-figuring-out-functions/#findComment-184109 Share on other sites More sharing options...
Lodar Posted February 14, 2007 Share Posted February 14, 2007 In your form you could try adding 2 hidden input fields called cid and pid, that way when the form is sent you can then retrieve them as your other vars from the form. You would need to populate the value columns of the hidden field with the correct values, add the below before the buttons and especially before the end form tag <input type='hidden' name='cid' value='$cid'><input type='hidden' name='pid' value='$pid'> Quote Link to comment https://forums.phpfreaks.com/topic/38263-figuring-out-functions/#findComment-184422 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.