2013-09-04 3 views
1

Я сделал страницу, где пользователи могут видеть данные, введенные ими в базе данных.
я использовал:отображение массива только в том случае, если существует

$select = "SELECT * FROM texts WHERE user='".$user."' ORDER BY date DESC, id DESC"; 
$result = mysql_query($select); 
$array = array(); 
while($show = mysql_fetch_assoc($result)) 
{ 
$array[] = $show; 
} 
echo "<strong>".$array[0]['id']."</strong><br />"; 
echo "<strong>".$array[1]['id']."</strong><br />"; 
echo "<strong>".$array[2]['id']."</strong><br />"; 
echo "<strong>".$array[3]['id']."</strong><br />"; 
echo "<strong>".$array[4]['id']."</strong><br />"; 

код работает, но иногда у меня меньше, чем 10 значений для возвращения, а иногда даже больше.
Если я использую это и у меня есть только 2 массива, чтобы вернуться, я получаю:

Notice: Undefined offset: 2 in ownposts.php on line 15 
Notice: Undefined offset: 3 in ownposts.php on line 16 
Notice: Undefined offset: 4 in ownposts.php on line 17 

Как это можно повторить $ arrray [4] [ 'ID] только при наличии $ [4] массив?
Я попытался с:

$zero = $array[0]; 
if(!empty($zero)) 
{ 
echo "<strong>".$zero['id']."</strong><br />"; 
} 
$four = $array[4]; 
if(!empty($four)) 
{ 
echo "<strong>".$five['id']."</strong><br />"; 
} 

Но не работает, как я освобожденный и до сих пор вернуться Примечание: Undefined offsed: 4 в ownposts.php строке 17.

+1

[** Пожалуйста, не используйте 'mysql_ *' функции в новом коде **] (http://bit.ly/phpmsql). Они больше не поддерживаются [и официально устарели] (https://wiki.php.net/rfc/mysql_deprecation). См. [** красное поле **] (http://j.mp/Te9zIL)? Узнайте о [* подготовленных операторах *] (http://j.mp/T9hLWi) и используйте [PDO] (http://php.net/pdo) или [MySQLi] (http://php.net/ mysqli) - [эта статья] (http://j.mp/QEx8IB) поможет вам решить, какой из них. Если вы выберете PDO, [здесь хороший учебник] (http://j.mp/PoWehJ). – h2ooooooo

+0

Просто переместите 'echo' внутри' while'. –

+0

Попытайтесь больше не использовать функции mysql_, он устарел и не должен использоваться в новых приложениях. Вместо этого используйте [Mysqli] (http://nl1.php.net/manual/en/book.mysqli.php) или [PDO] (http://nl1.php.net/manual/en/book.pdo.php) – Edd

ответ

3

Вместо того, что вы сейчас делаете, это:

while($show = mysql_fetch_assoc($result)) 
{ 
$array[] = $show; 
} 
echo "<strong>".$array[0]['id']."</strong><br />"; 
echo "<strong>".$array[1]['id']."</strong><br />"; 
echo "<strong>".$array[2]['id']."</strong><br />"; 
echo "<strong>".$array[3]['id']."</strong><br />"; 
echo "<strong>".$array[4]['id']."</strong><br />"; 

Почему бы не просто показать то, что находится по MySQL, как вы нашли его:

while($show = mysql_fetch_assoc($result)) 
    { 
    echo "<strong>".$show['id']."</strong><br />"; 
    } 

Или если у вас есть другие вещи, связанные с массивом, чем код, который вы нам показали, используйте цикл для вновь созданного массива, то есть foreach.

1

попробовать

foreach($array as $data){ 
echo '<strong>'.$data['id'].'</strong><br />'; 
} 
0

Я бы переписать его следующим образом:

$i = 0; 
while($show = mysql_fetch_assoc($result)) 
{ 
    $array[] = $show; 
    if (isset($array[$i])) { 
     echo "<strong>".$array[$i]['id']."</strong><br />"; 
    } 
    $i++; 
} 
Смежные вопросы