Почему мой foreach не дает мне ожидаемых результатов? - PullRequest
0 голосов
/ 05 сентября 2018
<?php 

    define('DB_HOSTNAME', 'localhost');
    define('DB_USERNAME', 'root');
    define('DB_PASSWORD', null);

    define('DB_DATABASE', 'publicacoes');
    define('DB_PREFIX', 'bn');
    define('DB_CHARSET', 'utf8');

?>

<?php

function DBclose($link){
    @mysqli_close($link) or die(mysqli_error($link));
}

function DBConnect(){
    $link = @mysqli_connect(DB_HOSTNAME, DB_USERNAME, DB_PASSWORD, DB_DATABASE) or die(mysqli_connect_error());
    mysqli_set_charset($link, DB_CHARSET) or die(mysqli_error($link));

    return $link;
}
?>

<?php

function DBRead($table, $params = null, $fields = '*'){
    $table  = DB_PREFIX.'_'.$table;
    $params = ($params) ? " {$params}" : null;

    $query  = "SELECT {$fields} FROM {$table}{$params}";
    $result = DBExecute($query);

    if(!mysqli_num_rows($result))
        return false;
    else{
        while ($res = mysqli_fetch_assoc($result)){
            $data[] = $res;
        }
        return $data;
    }
}

function DBExecute($query, $insertId = false){
    $link   = DBConnect();
    $result = @mysqli_query($link, $query) or die(mysqli_error($link));

    if($insertId)
        $result = mysqli_insert_id($link);


    DBClose($link);
    return $result;
}
?>

<?php

$publicacao = DBRead('publicacao');
    foreach ($publicacao as $pl):
    endforeach;

?>


    <? foreach ($publicacao as $pl): ?>
        <li>
            <h4><a href="#"><?php echo $pl['title']?></a></h4>

            <h5><?php echo $pl['text']?><a href="%">Continue lendo &raquo;</a></h5>
        </li>
    <? endforeach; ?>

    <? foreach ($publicacao as $pl): ?>
        <li>
            <h4><a href="#"><?php echo $pl['title']?></a></h4>

            <h5><?php echo $pl['text']?><a href="%">Continue lendo &raquo;</a></h5>
        </li>
    <? endforeach; ?>

Я поместил var_dump в переменную $publicacao, и это нормально, но мой foreach печатает только одну запись на обоих li. В чем дело?

Как я могу решить это? Я не нашел подобных вопросов по Stackoverflow. И я не смог найти проблему. Я новичок в использовании MYSQLi и Я стараюсь изо всех сил, но эта проблема вызывает у меня небольшую головную боль.

Редактировать:

Результаты print_r($publicacao)

Array ([0] => Array ([id] => 33 [title] => Первый заголовок [текст] => Первый текст) [1] => Array ([id] => 34 [title] = > Второй заголовок [текст] => Второй текст))

1 Ответ

0 голосов
/ 05 сентября 2018

Согласно моему комментарию

В этой строке $publicacao_ = DBRead('publicacao'); ваша переменная $publicacao_ с _, но в foreach loop вам не хватает _, и вы использовали $publicacao

$publicacao_ = DBRead('publicacao');

<? foreach ($publicacao_ as $pl): ?> //replace $publicacao with $publicacao_
    <li>
        <h4><a href="#"><?php echo $pl['title']?></a></h4>

        <h5><?php echo $pl['text']?><a href="%">Continue lendo &raquo;</a></h5>
    </li>
<? endforeach; ?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...