Go Back   vb.org Archive > vBulletin 3 Discussion > vB3 General Discussions
  #1  
Old 04-23-2003, 09:08 PM
willms_jay willms_jay is offline
 
Join Date: Mar 2002
Posts: 22
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default Would this php code work to delete all orphaned attachments?

Would this php code work to delete all orphaned attachments? (eg. attachments who don't have a post that actually useses them? (don't ask why... seems like one of the hacks i installed keep the attachments from getting deleted if a thread gets deleted.

PHP Code:
<?
        echo "Jordan's fix the attachment table php script!<br><br>";
 $connection = mysql_connect("localhost", "sampleci_jordan", "****");
 if (!$connection) {
   echo "<p> An error occured while trying to access the database, please notify the webmaster for a quick solution.</p><br>";
   echo mysql_errno().": ".mysql_error()."<br>";
   exit();
 }

 $query = "SELECT attachmentid from attachment";
 $result = mysql_db_query("sampleci_samplecitynet", $query);
 if ($result) {
  $numOfRows = mysql_num_rows ($result);
                echo "Found " . $numOfRows . " attachments..<Br>";
  for ($i = 0; $i < $numOfRows; $i++){

   $attachmentid[$i] = mysql_result ($result, $i, "attachmentid");
  } // end for 
 } // end if

 echo "Checking to see if posts have these and then generating a list of those that don't<br><Br>";
 for ($i = 0; $i < count($attachmentid); $i++){
   $query = "SELECT attachmentid, postid FROM post WHERE attachmentid = " . $attachmentid[$i];
  $result = mysql_db_query("sampleci_samplecitynet", $query);
 
  if ($result) {
   // keepe the attachment
   $numOfRows = mysql_num_rows ($result);
   echo " Attachment id : " . $attachmentid[$i] . "<br>";
   if ($numOfRows == 0) {
                                // delete the attachment here!
    echo "Reject!<br>";
   }
   else {
    // don't do anything at all!
    echo "Keep!<br>";
   
   }
 
  } // end if
  else {
   // Delete the attachment!
   echo "No result set!";
  }
 } // end for
 

?>
what do you think? Is my logic correct?

..jordan
Reply With Quote
  #2  
Old 04-23-2003, 09:15 PM
filburt1 filburt1 is offline
 
Join Date: Feb 2002
Location: Maryland, US
Posts: 6,144
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

[sql]
SELECT a.attachmentid FROM attachment a
LEFT JOIN post p ON a.attachmentid = p.attachmentid
WHERE p.attachmentid IS NULL;
[/sql]
Theoretically that query will work but it will take an insanely long time to execute (50 sec on my machine).
Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 01:15 AM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2024, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.03712 seconds
  • Memory Usage 2,170KB
  • Queries Executed 13 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)ad_showthread_beforeqr
  • (1)ad_showthread_firstpost
  • (1)ad_showthread_firstpost_sig
  • (1)ad_showthread_firstpost_start
  • (1)bbcode_php
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (2)post_thanks_box
  • (2)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (2)post_thanks_postbit_info
  • (2)postbit
  • (2)postbit_onlinestatus
  • (2)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available:
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files:
  • ./showthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_post_thanks.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_postinfo_query
  • fetch_postinfo
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showthread_start
  • showthread_getinfo
  • forumjump
  • showthread_post_start
  • showthread_query_postids
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • fetch_musername
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete