Неопределенная переменная

У меня проблема с переменной, которая не распознается внутри моего проекта, но она правильно объявлена. Здесь спецификации моих файлов. У меня есть контроллер index.php, как это:

            try {
$sql = 'SELECT costi.id, costo, descrizione, categoria FROM costi INNER JOIN categorie ON id_categoria = categorie.id';
$result = $pdo->query($sql);
} catch (PDOException $e) {
$error = 'errore nel recupero del dato '. $e->getMessage();
include 'error.html.php';
exit();
}

//FOREACH
foreach ($result as $row) {
$costi[] = array(
"id"=>$row['id'],
"costo"=>$row['costo'],
"descrizione"=>$row['descrizione'],
"categoria"=>$row['categoria']
);
}

include 'review.html.php';

Вот обзор.html.php:

                <?php foreach($costi AS $costo): ?>
<table style="width:40%">
<form action="?cancella_costo" method="POST" >
<tr>
<th class="a"><p class="inline"><?php echo htmlspecialchars($costo['descrizione'], ENT_QUOTES, 'UTF-8'); ?></p></th>
<th class="a"><p class="inline"><?php echo htmlspecialchars($costo['costo'], ENT_QUOTES, 'UTF-8'); ?> </p></th>
<th class="a"><p class="inline"><?php echo htmlspecialchars($costo['id_categoria'], ENT_QUOTES, 'UTF-8'); ?> </p></th>
<th class="none"><input type="hidden" value="<?php echo $costo['id'] ?>" name="id"></th>
<th><input type="submit" value="cancella"></th>
<!-- <th><button name="action" value="update">Modifica</button></th> -->
</tr>

</form>
</table>
<?php endforeach ?>

У меня также есть БД с двумя таблицами: «costi» и «category», которые структурированы следующим образом:

Costi:https://imgur.com/a/56utE
Категория: http://imgur.com/9iMHfYm

Моя проблема — переменная $ costi, объявленная внутри моего index.php и используемая внутри моего review.html.php. Внутри этого последнего файла я получаю эту ошибку:

Notice: Undefined variable: costi in /Applications/MAMP/htdocs/provePhp/myWallet 2/app/review.html.php on line 24

Warning: Invalid argument supplied for foreach() in /Applications/MAMP/htdocs/provePhp/myWallet 2/app/review.html.php on line 24

Кто-то знал почему?
Переменная объявлена, почему она не распознана?

0

Решение

Из фрагмента кода, который вы вставили здесь, переменная $ costi не объявлена.

попробуйте изменить его, как показано ниже:

        $costi = [];
// check whether the $result is array before looping
if (is_array($result) {
foreach ($result as $row) {
$costi[] = array(
"id"=>$row['id'],
"costo"=>$row['costo'],
"descrizione"=>$row['descrizione'],
"categoria"=>$row['categoria']
);
}
}

Точно так же вы можете проверить в файле просмотра, прежде чем цикл.

0

Другие решения

ОК, я наконец нашел ответ.
В моем вопросе я забыл вас показать также файл «aggiungi_costo.php». Это позволяет пользователю добавлять стоимость в БД. Это был файл:

<form action="?" method="post">
<div>
<label for="descrizione">Aggiunti la descrizione della spesa</label>
<input type="text" id="descrizione" name="descrizione">
<br>
<label for="costo">Aggiungi l'importo della tua spesa</label>
<input type="text" name="costo" id="costo">
<br>
<label for="id_categoria">A quale categoria apprtiene questa spesa:</label>
<select multiple name="idcategoria" id="idcategoria">
<?php foreach($categorie as $categoria): ?>
<option><?php echo htmlspecialchars($categoria['categoria'], ENT_QUOTES, 'UTF-8'); ?></option>
<?php endforeach ?>
</select>
</div>
<div><input type="submit" value="Aggiungi"></div>
</form>

Я забыл добавить атрибут value в тег option (эту строку):

value="<?php echo htmlspecialchars($categoria['id'], ENT_QUOTES, 'UTF-8'); ?>"

Без этого мой запрос на выборку не мог работать, потому что столбец «id.categoria» не имел правильного значения, отправленного из формы «aggiungi_costo.php».

При добавлении атрибута значения в форму, запрос на добавление данных в БД начинает работать должным образом, а также запрос SELECT для извлечения данных начинает работать.

0

По вопросам рекламы [email protected]