Я изо всех сил пытаюсь получить небольшой PHP-скрипт для правильной работы. Пожалуйста, проверьте the following link:, заменяющий определенные значения ключа (с помощью foreach) в массиве, останавливает дальнейшее выполнение PHP-скрипта. Как решить?
Связанный скрипт работает правильно. Единственная дополнительная вещь, которую я хочу сделать, - это в столбце «werkgebied», чтобы заменить числа соответствующими текстовыми значениями (например, 1 = Nederland, 5 = Friesland и т. Д.
Чтобы добиться этого, я использовал следующий код
foreach ($result as $key=>$val)
{
if ($key='pf_werkgebied' && $val=1)
{
$val="Nederland";
}
}
echo $val;
echo '<br>';
foreach ($result as $key=>$val)
{
if ($key='pf_werkgebied' && $val=5)
{
$val = "Friesland";
}
}
echo $val;
echo '<br>';
отображается полный сценарий ниже:?
<?php
$connect = mysqli_connect ("localhost", "XXX", "YYY", "ZZZ");
$output = '';
if(isset($_POST["query"]))
{
$search = mysqli_real_escape_string($connect, $_POST["query"]);
$query = "
SELECT * FROM phpbb_profile_fields_data
INNER JOIN phpbb_users ON
phpbb_profile_fields_data.user_id=phpbb_users.user_id
WHERE pf_voornaam COLLATE UTF8_GENERAL_CI LIKE '%".$search."%'
OR pf_achternaam COLLATE UTF8_GENERAL_CI LIKE '%".$search."%'
OR pf_woonplaats COLLATE UTF8_GENERAL_CI LIKE '%".$search."%'
OR pf_telefoon_vast COLLATE UTF8_GENERAL_CI LIKE '%".$search."%'
OR pf_telefoon_mobiel COLLATE UTF8_GENERAL_CI LIKE '%".$search."%'
OR user_email COLLATE UTF8_GENERAL_CI LIKE '%".$search."%'
OR pf_werkgebied COLLATE UTF8_GENERAL_CI LIKE '%".$search."%'
";
}
else
{
$query = "SELECT d.pf_voornaam, d.pf_achternaam, d.pf_werkgebied,
d.pf_ei_opl_afgerond, CASE WHEN d.pf_ei_opl_afgerond = 1 THEN 'voor 2000'
WHEN d.pf_ei_opl_afgerond = 10 THEN '2007'
WHEN d.pf_ei_opl_afgerond = 12 THEN '2009'
WHEN d.pf_ei_opl_afgerond = 15 THEN '2012'
WHEN d.pf_ei_opl_afgerond = 17 THEN '2014'
WHEN d.pf_ei_opl_afgerond = 18 THEN '2015'
WHEN d.pf_ei_opl_afgerond = 20 THEN '2017'
END AS fly
FROM phpbb_profile_fields_data d
ORDER BY d.pf_achternaam ASC";
}
$result = mysqli_query($connect, $query);
foreach ($result as $key=>$val)
{
if ($key='pf_werkgebied' && $val=1)
{
$val="Nederland";
}
}
echo $val;
echo '<br>';
foreach ($result as $key=>$val)
{
if ($key='pf_werkgebied' && $val=5)
{
$val = "Friesland";
}
}
echo $val;
echo '<br>';
if(mysqli_num_rows($result) > 0)
{
$output .= '
<div class="table-responsive">
<table class="table table bordered">
<tr>
<th>Voornaam</th>
<th>Achternaam</th>
<th>Email</th>
<th>Afgestudeerd</th>
<th>Werkgebied</th>
</tr>
';
while($row = mysqli_fetch_array($result))
{
$output .= '
<tr>
<td>'.$row["pf_voornaam"].'</td>
<td>'.$row["pf_achternaam"].'</td>
<td>'.$row["user_email"].'</td>
<td>'.$row["fly"].'</td>
<td>'.$row["pf_werkgebied"].'</td>
</tr>
';
}
echo $output;
}
else
{
echo 'Data Not Found';
}
?>
результат приведенного выше кода можно проверить via the following link. Что происходит здесь не так, что должно быть улучшено Любая т ips высоко оценили.
спасибо за ваши ценные предложения. ООП, MVC и SOLID находятся в моем списке дел сейчас. Я попытался свести к минимуму мой код так, как вы предложили, к сожалению, это не решило проблему. –
Вы уверены, что '$ row [" pf_werkgebied "]' возвращает то, что вы хотите, строку, а не целое число? Возможно, он возвращает индекс строки, но для вашей задачи вам нужен второй элемент массива. Возможно, вы можете получить его с помощью '$ row [" pf_werkgebied "] [1]'. И будет здорово, если вы покажете нам свой отладочный запрос с 'print_r' – Grynets
hi Grynets, результат print_r ($ output); показывает только заголовки таблицы (которые: Voornaam Achternaam Email Afgestudeerd Werkgebied) –