2016-10-19 2 views
0

Я обновляю свой сайт и хочу перейти от нескольких страниц с одинаковым кодом к одной странице, которая выполняет все действия пользователя. Я могу сделать его достаточно хорошо, потому что пользователь может запросить любой непредсказуемый контент. Некоторые теги <div> будут пустыми, и MySQL будет вызывать неопределенную ошибку смещения, потому что в недостаточно содержимого для заполнения fetch_array(). Некоторые примеры кода ..Избегайте неопределенной ошибки смещения для пустых массивов

<?php 
 
$dbhost = 'localhost'; 
 
$dbname = 'd_dundaah'; 
 
$dbuser = 'max'; 
 
$dbpass = ''; 
 

 
$conn = new mysqli($dbhost, $dbuser, $dbpass, $dbname); 
 
if ($conn->connect_error) die($conn->connect_error); 
 

 
$query = "SELECT * FROM events WHERE day='mon'"; 
 

 
$result = $conn->query($query); 
 
if (!$result) die($conn->error); 
 

 
$rows = $result->num_rows; 
 
$j = 0; 
 

 
$heading_array=''; 
 
$paragraph_array=''; 
 

 
while ($j < $rows) 
 
{ 
 
$result->data_seek($j); 
 
$row = $result->fetch_array(MYSQLI_ASSOC); 
 

 
$event_heading = $row['heading']; 
 
$event_paragraph = $row['paragraph']; 
 

 
$heading_array[]=$event_heading; 
 
$paragraph_array[]=$event_paragraph; 
 

 
++$j; 
 
} 
 

 
$result->close(); 
 
$conn->close(); 
 

 
?>

Тогда при вызове данных, если mon имеет только один ряд данных будет называться ошибка смещения. Как заставить MySQL игнорировать это?

<div class="one"> 
 
\t <h1><?php echo $heading1[0];?></h1> 
 
\t <p><?php echo $paragraph1[0];?></p> 
 
</div> 
 
<!--ignore this 'two' if none existent in database--> 
 
<div class="two"> 
 
\t <h1><?php echo $heading1[1];?></h1> 
 
\t <p><?php echo $paragraph1[1];?></p> 
 
</div>

Спасибо.

+0

Использование '' empty' или isset' - [PHP: "Примечание: Undefined переменной" и "Примечание: Undefined индекс"]! (Http://stackoverflow.com/questions/4261133/php-notice- неопределенное-переменное и-уведомление-неопределенный-индекс) – jitendrapurohit

ответ

2

Исеть() это ты друг здесь. Возвращает true, если указанный указатель существует и false в противном случае.

Вы можете, например, использовать его так.

if(isset($heading1[1])){ 
    // Do something here, only if $heading1[1] exists 
} 
1

Изменить HTML для:

<?php if (isset($heading1[1]) && isset($paragprah[1])) : ?> 
<div class="two"> 
    <h1><?php echo $heading1[1];?></h1> 
    <p><?php echo $paragraph1[1];?></p> 
</div> 
<?php endif; ?> 

Или безопаснее, чтобы предотвратить пустой массив:

<?php if (isset($heading1[1]) && !empty($heading1[1]) && isset($paragprah[1]) && !empty($paragprah[1])) : ?> 
<div class="two"> 
    <h1><?php echo $heading1[1];?></h1> 
    <p><?php echo $paragraph1[1];?></p> 
</div> 
<?php endif; ?> 
Смежные вопросы