2012-06-05 2 views
0

Я работаю с порталом, где есть тип контента. Разработчик интерфейса, который сделал этот портал, добавил поле CCK для прикрепления файла &, уже есть поле File attachment, заданное ядром. Теперь мы не будем обсуждать, почему он это сделал, поскольку я также не знаю.Drupal DB: Имейте, чтобы переместить некоторые данные из одной таблицы в другую, отметив условие на удаленном сервере ..!

Теперь я должен удалить это поле CCK &, если я удалю напрямую, я потеряю все данные, загруженные этим полем, так как он удалит его таблицу.

Итак, теперь я пытаюсь заменить значение из этой таблицы полей CCK на таблицу загрузки по умолчанию & обновить путь к файлу в таблице файлов .. так что это будет выглядеть для прикрепленных файлов.

Потому что я не очень хорошо на PHP или MySQL Я ищу некоторую помощь от вас, ребята ..

Вот основной код, который я написал ... пожалуйста, предложите исправление & пожалуйста скажите мне будет Смогу ли я подключить удаленный сервер БД, если делать это так -

<?php 

mysql_connect("http://edlabs.in/connect:22","connect",""); 
mysql_select_db("connect"); 

for($i=0; $i<=1; $i++){ 

    $fid_cck = array(mysql_query("SELECT field_upload_doc_fid FROM content_field_upload_doc WHERE field_upload_doc_list > 0")); 
    $fid_core = array(mysql_query("SELECT fid FROM upload")); 

    foreach($fid_cck as $fid_cck_value){ 

     foreach($fid_core as $fid_core_value) 
     { 
      if($fid_cck_value != $fid_core_value){ 

       $file_name = mysql_query("SELECT filename FROM files WHERE fid = $fid_cck"); 
       $nid_cck = mysql_query("SELECT nid FROM field_upload_doc_fid WHERE fid = $fid_cck"); 
       $vid_cck = mysql_query("SELECT vid FROM field_upload_doc_fid WHERE fid = $fid_cck"); 

       mysql_query("INSERT INTO upload VALUES('$fid_cck', '$nid_cck', '$vid_cck', '$file_name', 1, 0)"); 

       $filepath = array(mysql_query("SELECT filepath FROM files WHERE fid = $fid_cck")); 

       $new_filepath = str_replace("/background_docs", "", $filepath); 

       mysql_query("UPDATE files SET filepath=$new_filepath WHERE fid = $fid_cck"); 

      } 
     } 
    } 


} 
?> 
+0

* "Потому что я не очень хорошо на PHP или MySQL Я ищу некоторую помощь от вас, ребята .." * - Получите наставника, чтобы получить профессиональную работу. Поговорите со своим руководителем, что вам нужно больше обучения, чтобы решить вашу работу. Важно, чтобы вы четко это понимали в своем контексте работы, а не здесь. – hakre

+0

Я позабочусь об этом .. Спасибо :) – RajeevK

+0

На данный момент это исправлено ... Я сделал это :) – RajeevK

ответ

1

Я решил эту проблему, следуя этим steps-

  1. создал БД с тем же именем, что мой портал на моем местном phpmyadmin.
  2. Экспортировано три таблицы с именем content_field_upload_doc, файлы & Загрузка из базы данных моего портала.
  3. Написал собственный PHP-код с некоторым запросом MySQL, чтобы сделать запрос и найти DIFF тех файлов, которые находятся в content_field_upload_doc, но не в таблице загрузки. & выбрал это имя из файлов таблиц. (Я даю код ниже).
  4. Вызвал код на моем модуле и повторил запрос INSERT.
  5. Скопировал весь запрос &, выполненный с SQL на моем phpmyadmin на портале DB.
  6. Скопировал все файлы из предыдущей используемой папки в общей папке &, вставил ее в общую папку по умолчанию.
  7. Удалено поле CCK из типа контента ... и это СОВЕРШЕННО ..!

    die('Could not connect: ' . mysql_error()); } еще {
    mysql_select_db("connect"); 
    
    $rs_fudl = mysql_query("SELECT vid, nid, field_upload_doc_fid FROM content_field_upload_doc WHERE field_upload_doc_list > '0'"); 
    while($rs_fudl_row = mysql_fetch_array($rs_fudl)) 
    { 
    
        $fid_fudl = $rs_fudl_row['field_upload_doc_fid']; 
    
        $rs_file = mysql_query("SELECT filename,filepath FROM files WHERE fid = '$fid_fudl'"); 
    
        //echo mysql_num_rows($rs_file)."<br />"; 
    
        while($rs_file_row = mysql_fetch_array($rs_file)){ 
    
          $rs_upload = mysql_query("SELECT * FROM upload where fid='".$fid_fudl."'"); 
    
          if (mysql_num_rows($rs_upload) == 0) { 
    
          /* $new_filepath = str_replace("/background_docs", "", $rs_file_row['filepath']); 
    
           $filepath = $new_filepath; 
          */ 
           $filename = $rs_file_row['filename']; 
           $vid_fudl = $rs_fudl_row['vid']; 
           echo "<br />"; 
    
           $nid_fudl = $rs_fudl_row['nid']; 
           echo "<br />"; 
    
           echo "INSERT INTO upload VALUES ('$fid_fudl','$nid_fudl', '$vid_fudl', '$filename','1', '0');" ; 
           echo "<br />"; 
          // echo "UPDATE files SET filepath= '$filepath' WHERE fid = '$fid_fudl';";  
    
          } 
        } 
    } 
    mysql_close($con); 
    
    } ?>