2014-10-20 2 views
0

У меня есть этот код:Я теряю переменную ... где?

<?php 
$id_sent = $_POST['id']; 
echo $id_sent; 
include ($_SERVER['DOCUMENT_ROOT']."/upload/upload_class.php"); 

$max_size      = 1024*250*500; 
$my_upload      = new file_upload; 
$my_upload->upload_dir   = $_SERVER['DOCUMENT_ROOT']."/uploads/"; 
$my_upload->extensions   = array(".pdf"); 
$my_upload->max_length_filename= 50; 
$my_upload->rename_file  = true; 
$my_upload->id_search   = $id_sent; 

if(isset($_POST['Submit'])) { 
    $my_upload->the_temp_file = $_FILES['upload']['tmp_name']; 
    $my_upload->the_file  = $_FILES['upload']['name']; 
    $my_upload->http_error  = $_FILES['upload']['error']; 

    if ($my_upload->upload()) { 
     mysql_query(sprintf("UPDATE psi_avize SET pdf = 'T' WHERE id = '%s'", $my_upload->id_search));?> 
     <table width="800" border="0"> 
      <tr> 
       <th width="167" rowspan="2" scope="col"><img src="images/figure_check_mark_celebrate_anim_md_wm.png" width="129" height="142"></th> 
       <th width="471" height="29" scope="col"><div align="left">Succes!</div></th> 
       <th width="148" scope="col">&nbsp;</th> 
      </tr> 
      <tr> 
       <td height="104">&nbsp;</td> 
       <td>&nbsp;</td> 
      </tr> 
     </table><?php 
     echo $my_upload->show_error_string(); 
    } 
} 
else {?> <strong>Insert file!</span></p> 
    </strong> 
    <table width="800" border="0"> 
    <tr> 
     <th width="167" rowspan="2" scope="col"><img src="images/document.png" width="150" height="152"></th> 
     <th width="471" height="29" scope="col"><div align="left"></div></th> 
     <th width="148" scope="col">&nbsp;</th> 
    </tr> 
    <tr> 
     <td height="104">Max = 5 MB.</td> 
     <td>&nbsp;</td> 
    </tr> 
    </table> 
    <p>&nbsp;</p> 
    Load file <form name="form1" action="<?php echo $_SERVER['PHP_SELF']; ?>" 
     enctype="multipart/form-data" method="post"> 
    <div align="center"> 
     <table width="100%" border="0" cellspacing="0" cellpadding="0"> 
      <tr> 
       <th width="11%" scope="col">&nbsp;</th> 
       <th width="26%" scope="col">&nbsp;</th> 
       <th width="51%" scope="col"><div align="left"> 
        <input type="hidden" name="MAX_FILE_SIZE" value="<?php echo $max_size; ?>" /> 
        <?php 
        echo $my_upload->create_file_field("upload", "Select file...", 25, false); ?></div></th> 
       <th width="12%" scope="col">&nbsp;</th> 
      </tr>  
      <tr> 
       <td>&nbsp;</td> 
       <td>&nbsp;</td> 
       <td><div align="left"> 
        <input name="Submit" type="submit" id="Submit" value="Upload" /> 
       </div></td> 
       <td>&nbsp;</td> 
      </tr> 
      </table> 
     </div> 
    </form> <?php } 
    ?> 

Моя проблема заключается в том, что каким-то образом я освобождаю переменную $ id_sent (он отправляется с использованием POST с другой страницы), и я не в состоянии правильно запроса с использованием идентификатора. Когда я повторяю переменную в строке 3, она работает, но после этого я теряю эту переменную, и я не могу ее использовать. Спасибо!

+0

У вас нет элемента с именем 'upload ', но только один тип ввода' file' –

+0

@ Fred- ii- u wrong '$ my_upload-> create_file_field (...', вместо этого он пропускает 'id_sent' в виде вставки файла –

+0

Вы должны начать с условия, чтобы проверить, было ли отправлено. Например .. if (isset ($ _REQUEST ['id'])) –

ответ

2

Похоже на то, что у вас возникла проблема в том, что $id_sent исходит из другой страницы. Именно по этой причине вы можете правильно отследить его в первую очередь.

После загрузки текущей страницы и нажатия кнопки отправки в форме текущей страницы значения POST с предыдущей страницы заменяются значениями POST с этой страницы.

Для того, чтобы сохранить значение через пост этой страницы, а также, хранить его в скрытом поле, как так

<input type ='hidden' name='id' value='<? php echo $id_sent; ?>'> 

Так вот, в первый раз вокруг $id_sent устанавливается как значение id от предыдущего сообщение страницы. Он также устанавливается в скрытое поле с именем id в форме этой страницы, которое затем будет рассмотрено для последующих представлений формы.

+0

Приятный улов, я предполагал, что это было обработано классом file_upload (что op не показал нам), но я ожидаю, что это правильно – Steve

+0

:) Да, спасибо. Я попробую! –

+0

@Steve: спасибо - да, хотя вопрос, похоже, не дает мне понять, я думаю, что это может быть проблемой, с которой сталкивается OP. – raidenace

Смежные вопросы