Как мне написать цикл для моего эхо-оператора? - PullRequest
0 голосов
/ 26 марта 2010

Я получаю только один напечатанный результат в цикле эха foreach внизу страницы.

<?php
    defined('_JEXEC') or die('Restricted access');
    $db =& JFactory::getDBO();

    $query0 = "SELECT * FROM  `jos_ginfo` WHERE . . . LIMIT 30";

    //echo $query0;
    $db->setQuery($query0);
    $ginfo = $db->loadObjectList();
    //echo
    //$ginfo[0];
    foreach($ginfo as $ginfo[$i]):
    {$i=0; $i++;} 
     endforeach;
    echo $db->getErrorMsg();

    if(empty($ginfo)){
    echo "<center>No
    game found, try a different entry.</center>";
    }else{


    $pgndata = array ( $ginfo[$i]->Id);

        $i=0;
    foreach($pgndata as $ginfo[$i]->Id):
    //I am only getting one printed result!
    {
        echo "<a href='/index.php?option=com_publishpgn&tactical-game=".$ginfo[$i]->Id."&Itemid=78.html'>\n";
    echo "".$ginfo[$i]->White." v. ".$ginfo[$i]->Black."  (".$ginfo[$i]->Result.") ".$ginfo[$i]->EventDate." ECO:".$ginfo[$i]->ECO."</a><br>\n";

    $i++;
    }

     endforeach;

    //echo "</div>";
        }
    ?>

Ответы [ 4 ]

0 голосов
/ 27 марта 2010

Несколько ошибок в вашем коде:

foreach($ginfo as $ginfo[$i]):
    {$i=0; $i++;} 

На первой итерации $i не определено, поэтому первое значение, извлеченное из $ginfo для цикла foreach, будет сохранено в $ginfo[null]. Затем вы устанавливаете $i в 0, увеличиваете его и перебираете, так что теперь следующее значение сохраняется в $ginfo[1], как и все дальнейшие итерации. Таким образом, вы получите только два значения, извлеченные из объекта $ginfo и сохраненные в ключах 'null' и '1'.

Позже вы делаете

$pgndata = array ( $ginfo[$i]->Id);

Вы не делаете это внутри цикла, поэтому $pgndata становится массивом с единственным элементом, взятым из $ginfo[1]->Id. Вы тогда сразу делаете

foreach($pgndata as $ginfo[$i]->Id):

но $pgndata содержит только один элемент, что объясняет, почему у вас есть только один элемент вывода.

Я не знаю, что делает ваш ->loadObjectList() наверху. Это возвращает массив? Объект? Если это какой-либо массив, какой смысл в первом цикле foreach? Вы уничтожаете все, кроме первых двух значений, присутствующих в нем.

Никогда не стоит пытаться модифицировать массив, пока вы зацикливаетесь на нем в цикле foreach. Это похоже на попытку сменить шину, мост и трансмиссию на своем автомобиле, когда вы едете по шоссе со скоростью 100 миль в час. Возможно, вам повезет однажды, а в остальное время вы попадете в тонкое пятно кетчупа.

Кроме того, почему вы смешиваете синтаксисы {} и : / end? Выберите один или другой, но не используйте оба. Брекеты стандартные и общепризнанные. версия: / end гораздо менее популярна и незнакома большинству людей.

0 голосов
/ 26 марта 2010

Это модифицированная версия кода Сарфраза.

Попробуйте это ..

// Array of multiple games
$ginfo = $db->loadObjectList();

// Loop through games array
foreach ($ginfo as $index => $singleGameInfo)
{
    foreach($singleGameInfo as $elementName => $elementValue)
    {
        echo "[$elementName \"$elementValue\"]\n";
    }
}

Вместо ...

echo "[Event \"".$ginfo[0]->Event."\"]\n";

echo "[Site \"".$ginfo[0]->Site."\"]\n";

echo "[Date \"".$ginfo[0]->Date."\"]\n";

echo "[Round \"".$ginfo[0]->Round."\"]\n";

echo "[White \"".$ginfo[0]->White."\"]\n";

echo "[Black \"".$ginfo[0]->Black."\"]\n";

echo "[Result \"".$ginfo[0]->Result."\"]\n";

echo "[ECO \"".$ginfo[0]->ECO."\"]\n";

echo "[WhiteElo \"".$ginfo[0]->WhiteElo."\"]\n";

echo "[BlackElo \"".$ginfo[0]->BlackElo."\"]\n";

echo "[Annotator \"".$ginfo[0]->Annotator."\"]\n";

echo "[SetUp \"".$ginfo[0]->SetUp."\"]\n";

Редактировать: Вы пытаетесь просмотреть несколько игр или полевые данные одной игры?

Edit2: обновлен цикл игр

0 голосов
/ 26 марта 2010

$ query = mysql_query ("выберите * из table");

while ($ result = mysql_fetch_array ($ query)) { echo "$ result [id]"; echo "$ result [firstname]";

}

0 голосов
/ 26 марта 2010

Полагаю, вам нужно это:

$ginfo = $db->loadObjectList();
foreach($ginfo as $value)
{
    echo $value . '<br />';
}

Далее см. foreach руководство и другие циклы.

...