SunTechnique
Новичок
привет всем. есть такая проблема, пытаюсь считывать данные из ячеек DBF считывается все кроме тех ячеек которые пустые вообще. но проблема состоит не совсем в пустой ячейке.
мне нужно знать что делать и как если ячейка пустая то как это узнать и как обработать нормально.
я вывожу все это в таблице и допустим когда попадается в ДБФ пустая ячейка то переменная, через которую происходит обращение к ячейке, вообще не обрабатывается.
ниже приведу код с подробными коментами что бы было понятнее.
в общем дело в том, что когда в траблоидном цикле, момент доходит до момента:
$tmp_var = $row_string[$cell];
и если там пустая ячейка, он каким-то образом перерыгивает сразу на $tab_td .= '<td> ' . $one_record . ' </td>'; при том переменная $one_record судя по всему становится тоже пустой и в пемеренную $tab_td записывается только <td></td>
почему так происходит и как исправить ситуацию я не знаю. может кто из вас знает скажите плиз ?
как проверить пемеренную $row_string[$cell]; пустая она или какая-то еще ? что бы если она пустая присвоить переменной $one_record значение типа '...' strlen() не помогает...
мне нужно знать что делать и как если ячейка пустая то как это узнать и как обработать нормально.
я вывожу все это в таблице и допустим когда попадается в ДБФ пустая ячейка то переменная, через которую происходит обращение к ячейке, вообще не обрабатывается.
ниже приведу код с подробными коментами что бы было понятнее.
PHP:
<?php
$query_str = '';
$out_string = '';
$query_str = $_POST['textId'];
if($query_str != ''){
//'MY_DBASE.DBF';
$db_handle = dbase_open('DVDOM.DBF',0);
// создание шапки таблицы для вывода в HTML TABLE
$tab_head_tds = generate_tab_thead($db_handle);
// ниже идет функция создания строк со столбцами типа <tr><td></td></tr>
//то есть то что будет содержать записи из DBF
//ВОТ ТУТ И НАЧИНАЕТЮСЯ ТРАБЛЫ, В ДАННОЙ ФУНКЦИИ
$tab_boby = generate_tab_body($db_handle);
dbase_close($db_handle);
//тут я создаю таблицу, с созданными в ней строками и столбами, для вывода в HTML
//то есть примерно такое <table><tr><td></td></tr></table>
$tab_head = '<table align="center"><tr class="tab_head">' . $tab_head_tds . '</tr>' . $tab_boby . '</table>';
$out_string = $tab_head;
}
function generate_tab_thead($db_handle){
$var = '';
$count = dbase_numfields($db_handle);
$field = dbase_get_header_info($db_handle);
for($i = 0; $i < $count; $i++){
$var .= '<td>' . $field[$i]['name'] . '</td>';
}
return $var;
}
//ТРАБЛОИДНАЯ ФУНКЦИЯ НАЧАЛО
function generate_tab_body($db_handle){
$db_count_recs = dbase_numrecords($db_handle);
$num_fields = dbase_numfields($db_handle);
$tab_tr = '';
for($line = 1; $line < $db_count_recs; $line++){
$tab_td = '';
$row_string = dbase_get_record($db_handle,$line);
//ТРАБЛОИДНЫЙ ЦИКЛ НАЧАЛО
for($cell = 0; $cell < $num_fields; $cell++){
$one_record = '..';
$tmp_var = '..';
// если $row_string[$cell] попалась пустая ячейка, или как бы ее нет вообще
//то почему-то переменная $one_record становится тоже пустой
//и переменная $tab_td принимается значение <td></td>
$tmp_var = $row_string[$cell];
$tmp_var = iconv('CP866', 'UTF-8', $row_string[$cell]);
$one_record = $tmp_var;
//$row_string[$cell] = win2utf($row_string[$cell]);
if(strlen($one_record) == 0){$one_record = '..';}
$tab_td .= '<td> ' . $one_record . ' </td>';
}
//ТРАБЛОИДНЫЙ ЦИКЛ КОНЕЦ
$tab_tr .= '<tr>
' . $tab_td . '</tr>';
}
return $tab_tr;
}
//ТРАБЛОИДНАЯ ФУНКЦИЯ КОНЕЦ
?>
<html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<style type="text/css">
<!--
.tab_head { background-color:#F4FFCE; background-image: url(images/cell_bckg1.png) }
-->
TABLE { border-spacing:inherit; border-left: 1px solid #CCC}
TD { border-style:none; border-right: 1px solid #CCC; border-bottom: 1px solid #CCC; border-top:1px solid #CCC}
</style>
<form id="formdb" name="formdb" method="post" action="index.php">
<p>
<label for="textId">record index<br />
</label>
<input type="text" name="textId" id="textId" />
</p>
<p>
<input type="submit" name="btn" id="btn" value="ввод"/>
</p>
<p>
<!-- ТУТ ВЫВОД РЕЗУЛЬТАТА ОБРАЩЕНИЯ К DBF ФАЙЛУ -->
<?php echo $out_string; ?>
</p>
</form>
</html>
$tmp_var = $row_string[$cell];
и если там пустая ячейка, он каким-то образом перерыгивает сразу на $tab_td .= '<td> ' . $one_record . ' </td>'; при том переменная $one_record судя по всему становится тоже пустой и в пемеренную $tab_td записывается только <td></td>
почему так происходит и как исправить ситуацию я не знаю. может кто из вас знает скажите плиз ?
как проверить пемеренную $row_string[$cell]; пустая она или какая-то еще ? что бы если она пустая присвоить переменной $one_record значение типа '...' strlen() не помогает...