Я пытаюсь сделать цикл for внутри цикла foreach.
У меня есть таблица в моей базе данных:
ID | Fname | Lname
------------------------
1 Bart Simpson
1 Mickey Mouse
2 Peter Griffin
2 Clark Kenet
2 David Johnson
я вызываю данные из базы данных (и она работает, протестирована на phpmyadmin), я хочу, чтобы данные отображались на странице по значению ID
для примера:
Барт Симпсон, Микки Маус и Питер Гриффин
Кларк Кенет и Дэвид Джонсон
как вы видите там в "&" до последнего имени в любой строке, но это не моя проблема.
это код, который я написал:
//HERE I RETRIVE ALL THE DATA FROM THE DATABASE.
$query = $dbh->query(" SELECT *
FROM table
WHERE ID= '{$ID}'
");
//THIS CODE SHOWS THE NUMBER OF ROWS WITH THE CURRENT ID
$sql = "SELECT COUNT( * ) FROM table WHERE ID= '{$ID}'";
$result = $dbh->prepare($sql);
$result->execute();
$number_of_rows = $result->fetchColumn();
//THIS IS THE FOREACH IN WHICH I CALL ALL THE ROWS BY THEIR VALUE
foreach ($query as $key =>$value) {
$value['wFname'][$key] = !empty($value['wFname'][$key]) ? $value['wFname'][$key] : '';
$numRow = $number_of_rows-2; // THE ITEM BEFORE THE LAST ONE IN THE ARRAY
$lastItem = $number_of_rows-1; //LAST INDEX IN THE ARRAY
for($counter = 0; $counter = $numRow; $counter++){
return $value['wLname'][$counter] . ', '. $value['wFname'][$counter];
}
return "&" . $value['wLname'][$lastItem] . ', '.$value['wFname'][$lastItem] ;
return ' ';
};
с этим кодом я получаю только первую пару имен с каждым id. любая помощь была бы большой.
Попробуйте изменить:
for($counter = 0; $counter = $numRow; $counter++){
чтобы:
for($counter = 0; $counter =< $numRow; $counter++){
Вы проверяете, равен ли $ counter $ numRow, и вы должны проверить, равно ли оно и меньше...
Надеюсь это поможет.
Попробуйте сохранить результаты в переменной и вернуть эту переменную в конце обоих циклов, но я не уверен, чего вы пытаетесь достичь здесь, попробуйте запустить следующий код:
//HERE I RETRIVE ALL THE DATA FROM THE DATABASE.
$query = $dbh->query(" SELECT *
FROM table
WHERE ID= '{$ID}'
");
//THIS CODE SHOWS THE NUMBER OF ROWS WITH THE CURRENT ID
$sql = "SELECT COUNT( * ) FROM table WHERE ID= '{$ID}'";
$result = $dbh->prepare($sql);
$result->execute();
$number_of_rows = $result->fetchColumn();
//THIS IS THE FOREACH IN WHICH I CALL ALL THE ROWS BY THEIR VALUE
$return = "";
foreach ($query as $key => $value) {
$value['wFname'][$key] = !empty($value['wFname'][$key]) ? $value['wFname'][$key] : '';
$numRow = $number_of_rows - 2; // THE ITEM BEFORE THE LAST ONE IN THE ARRAY
$lastItem = $number_of_rows - 1; //LAST INDEX IN THE ARRAY
for ($counter = 0; $counter <= $numRow; $counter++) {
$return .= $value['wLname'][$counter] . ', ' . $value['wFname'][$counter];
}
$return .= "&" . $value['wLname'][$lastItem] . ', ' . $value['wFname'][$lastItem];
$return .= ' ';
}
return $return;