Php $WYNIK.=''; } } $WYNIK.=''; } $WYNIK.=''; $WYNIK.=''; } $WYNIK.=''; $WYNIK.=''; $SRODEK.=$WYNIK;
您需要更改阵列构建代码,使其看起来像这样(对于执行此任务的所有位置都相同): 原因是上次运行mysql时,它返回false(因为没有更多的行),并在数组中添加Php $WYNIK.=''; } } $WYNIK.=''; } $WYNIK.=''; $WYNIK.=''; } $WYNIK.=''; $WYNIK.=''; $SRODEK.=$WYNIK;,php,mysql,loops,Php,Mysql,Loops,您需要更改阵列构建代码,使其看起来像这样(对于执行此任务的所有位置都相同): 原因是上次运行mysql时,它返回false(因为没有更多的行),并在数组中添加false结果作为一项 这是因为它会在检查while循环中的条件之前添加到数组中,而您希望相反的情况是,您希望它在添加到数组之前检查条件。为什么要使用长期不推荐的mysql\ucode>代码库?它在许多年前就已经停止使用,并在PHP7中被完全删除。不应使用此库编写新代码。它使您容易受到SQL注入攻击(由于缺少参数化查询支持)和其他潜在的未修
false
结果作为一项
这是因为它会在检查while循环中的条件之前添加到数组中,而您希望相反的情况是,您希望它在添加到数组之前检查条件。为什么要使用长期不推荐的
mysql\ucode>代码库?它在许多年前就已经停止使用,并在PHP7中被完全删除。不应使用此库编写新代码。它使您容易受到SQL注入攻击(由于缺少参数化查询支持)和其他潜在的未修补漏洞的攻击。尽快切换到使用mysqli
或PDO
,然后学习如何编写参数化查询以保护数据免受恶意输入。有关风险的简单解释和一些安全编写查询的PHP示例代码,请参阅。请使用英语编写代码好吗?读起来很不舒服,我不知道哪里出了问题,但我知道为什么会出问题:你把数据和输出混为一谈。首先将数据放在一个数组中,然后根据该数组格式化输出。在这种情况下,捕获任何错误都要容易得多。哪个数组的元素太多?这不是很清楚。我使用mysql而不是mysqli,因为我必须在非常旧的项目中添加模块,而且我没有时间修改整个代码。我知道这是非常错误的。。。每个数组至少有一个额外的元素,我只是想知道为什么,也许我忘了什么。从第一个查询开始,它应该返回14个元素,并且在phpmyadmin中返回。当我将查询结果放入数组时,我接收到15个元素。
$WYNIK = '
<h2 class="site-title">Kandydaci</h2>
<div id="kandydaci_lista" class="row">
<ul class="rejon">';
$zapytanie='SELECT * FROM komitety';
$wynik=mysql_query($zapytanie) or die('błąd bazy');
$komitety=array();
while($komitety[]=mysql_fetch_assoc($wynik));
foreach($komitety as $komitet){
$WYNIK.='<li><span id="komitet_'.$komitet['id'].'">'.$komitet['nazwa'].'<img src="'.$ADR.'img/arrow_bot.png"></span>';
$zapytanie='
SELECT kandydat_do
FROM kandydaci
WHERE komitet="'.$komitet['id'].'"
GROUP BY kandydat_do
';
//echo"<pre>";
$wynik=mysql_query($zapytanie) or die('błąd bazy');
$kandydaci_do=array();
array_pop($kandydaci_do);
print_r($kandydaci_do);
while($kandydaci_do[]=mysql_fetch_assoc($wynik));
//print_r($kandydaci_do);
$WYNIK.='<ul class="kandydat_do">';
foreach($kandydaci_do as $kandydat_do){
$WYNIK.='<li><span>'.$kandydat_do['kandydat_do'].'</span>';
$zapytanie2='
SELECT k.okreg, ok.granice_okregu from kandydaci k
LEFT JOIN okregi as ok ON k.komitet=ok.teryt
where k.komitet= "'.$komitet['id'].'" and k.okreg=ok.nr_okregu
group by k.okreg
';
$wynik2=mysql_query($zapytanie2);
$okregi=array();
while($okregi[]=mysql_fetch_assoc($wynik2));
foreach($okregi as $okreg){
if($okreg['okreg']==0)
{
$zapytanie='
SELECT k.*, ko.nazwa as komitet
FROM kandydaci as k
LEFT JOIN komitety as ko ON ko.id=k.komitet
WHERE k.komitet="'.$komitet['id'].'" AND k.kandydat_do="'.$kandydat_do['kandydat_do'].'" AND k.status=1
group by k.id
';
}
else{
$zapytanie='
SELECT k.*, ko.nazwa as komitet
FROM kandydaci as k
LEFT JOIN komitety as ko ON ko.id=k.komitet
WHERE k.komitet="'.$komitet['id'].'" AND k.kandydat_do="'.$kandydat_do['kandydat_do'].'" AND k.status=1 AND k.okreg='.$okreg['okreg'].'
group by k.id
';
}
//echo $zapytanie.'<br />';
$wynik=mysql_query($zapytanie);
$kandydaci=array();
while($kandydaci[]=mysql_fetch_assoc($wynik));
$arr = explode(' ',trim($kandydat_do['kandydat_do']));
//echo $arr[0];
if($okreg['okreg']==0 || $arr[0]=='Burmistrz' || $arr[0]=='Wójt'){
}
else{
$WYNIK.='
<ul class="okreg"><span>Nr okręgu: '.$okreg['okreg'].'</span>
<br>
<span class="granice">'.$okreg['granice_okregu'].'</span>';
}
foreach($kandydaci as $kandydat){
if($kandydat['imie']==''){
}
else{
$WYNIK.='
<li class="kandydat '.($kandydat['platny']?'platny':'').'">
<a href="kandydaci,'. $kandydat['id'] .'.html">
<span>'.$kandydat['imie'].' '.$kandydat['nazwisko'].'</span>
</a>
</li>';
}
}
if($okreg['okreg']==0 || $arr[0]=='Burmistrz' || $arr[0]=='Wójt'){
}
else{
$WYNIK.='</ul>';
}
}
$WYNIK.='</li>';
}
$WYNIK.='</ul>';
$WYNIK.='</li>';
}
$WYNIK.='</ul>';
$WYNIK.='</div>';
$SRODEK.=$WYNIK;
$komitety=array();
while ($row = mysql_fetch_assoc($wynik)) {
$komitety[] = $row;
}