2016-10-19 1 views
0

ウェブサイトをアップグレードしていて、同じコードを持つ複数のページからすべてのユーザーアクションを実行する単一のページに移動したい。しかし、ユーザーが予期しない内容を要求できるので、fetch_array()を埋め込むのに十分なコンテンツがdatabaseに存在しないため、<div>タグが空になり、MySQLは未定義オフセットエラーをスローします。次にいくつかの例のコード..空の配列の定義されていないオフセットエラーを回避する

<?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データオフセット誤差が呼び出されるの唯一の行を持っている場合、データを呼び出します。これを無視するにはどうすればよいですか?

<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: "注意:未定義の変数" と "注意:未定義のインデックス"]!(http://stackoverflow.com/questions/4261133/php-notice-未定義 - 変数 - および - 予告 - 未定義 - 索引) – jitendrapurohit

答えて

2

ISSETを(ここではあなたの友達です。 指定されたインデックスが存在する場合は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; ?> 
関連する問題