Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Quando clico na segunda página, por exemplo, dá isso: Warning: implode() [function.implode]: Invalid arguments passed
É essa linha:
$links2 = implode(" | ", $links);
Esté é o código da minha galeria de imagens com paginação:
<?
$qSettings = "select * from `settings` where `ID` = '1'";
$rSettings = mysql_query($qSettings) or die(mysql_error());
$aSettings = mysql_fetch_array($rSettings);
echo "<center>";
if(!empty($_GET[start]))
{
$Start = $_GET[start];
}
else
{
$Start = '0';
}
$ByPage = $aSettings[Columns_per_Page] * $aSettings[Rows_per_Page];
$qnav = "select * from `images` where `Username` = '$_SESSION[username]' and `Published` = 'Yes' Order by `ImageID` DESC";
$rnav = mysql_query($qnav) or die(mysql_error());
$rows = mysql_num_rows($rnav);
if($rows > $ByPage)
{
$NextPrev = "<br><table align=center width=50%>";
$NextPrev .= PAGINACAO . ': | ';
$pages = ceil($rows/$ByPage);
$pagesLimit = 5;//Limite de páginas
$lowAllow = (int)($Start - ($pagesLimit / 2));
$start = ($lowAllow <= 0) ? 1 : $lowAllow;
$aboveAllow = $start + $pagesLimit;
$until = ($aboveAllow > $pages) ? $pages : $aboveAllow;
for($i = $start; $i <= $until; $i++)
{
$PageStart = $ByPage*$i;
$i2 = $i + 1;
if($PageStart == $Start)
{
$links[] = "$i2\n\t ";
}
elseif($PageStart < $rows)
{
$links[] = " <a href=\"myimages.php?Start=$PageStart&ByPage=$ByPage\">$i2</a>\n\t ";
}
}
$links2 = implode(" | ", $links);
$NextPrev .= "$links2";
$NextPrev .= " | </td>";
$NextPrev .= "</table>\n";
}
echo "<center>$NextPrev</center>";
$WidthHeight = explode(" x ","$aSettings[Popup_window]");
$qData = "select * from `images` where `Username` = '$_SESSION[username]' and `Published` = 'Yes' order by `ImageID` DESC limit $Start, $ByPage";
$rData = mysql_query($qData) or die(mysql_error());
$Total = mysql_num_rows($rData);
if(mysql_num_rows($rData) == '0')
{
?>
<center style='background: #FCC; color: #A00; font-size: 1.3em; padding: 7px;'><?=AINDA_NAO_POSSUI?></center>
<?
}
else
{
echo '<table border="0" cellspacing="'.$aSettings[space_between_thumbs].'" width="750">
';
$n = 1;
while($aData = mysql_fetch_array($rData))
{
$b = $n%$aSettings[Columns_per_Page];
if($aSettings[show_full_sized_image]==Yes)$image = "<a href=\"#\" onclick=\"javascript:window.open('popup.php?id=$aData[image]', '_blank', 'width=$WidthHeight[0], height=$WidthHeight[1], scrollbars=yes');return false\"><img border=\"0\" src=\"images_files/redimensionar.php?arquivo=$aData[image]&largura=200&altura=200\"></a>";
}$image = "<a href=\"myimages.php?Cid=$_GET[Cid]&SubID=$_GET[subID]&ImageView=$aData[image]\"><img border=\"0\" src=\"images_files/redimensionar.php?arquivo=$aData[image]&largura=200&altura=200\"></a>";
}
if($aSettings[Display_File_name]=="Yes")$Title = "<br>$aData[Title]";
}
if($b == 1)echo "<tr>\n";
}
/ menu de opções exibido abaixo da imagem /
echo "<td><center>$image $Title <br><a href=\"deleteimage.php?ImageID=$aData[imageID]\" onclick=\"return confirmLink(this, 'Tem certeza?')\"><img src='http://www.theimageup.com/icones/excluir.png' border='0' alt='Excluir Imagem' title='Excluir Imagem'/></a> <a target=_blank href=\"http://www.pixlr.com/editor/?image=http://www.theimageup.com/images_files/$aData[image]&loc=pt-br\"><img src='http://www.theimageup.com/icones/editar.png' border='0' alt='Editar Imagem' title='Editar Imagem'/></a></center></td>\n";
if($b == 0)echo "</tr>\n\n";
}echo "</tr>\n\n";
}
$n++;
}
echo'</table>';
echo'</center>';
}
?>
O que tem de errado, amigos?
E como resolvo?
Verifica se $links é um array. Vê esse trecho:
if($PageStart == $Start)
{
$links[] = "$i2\n\t ";
}$links[] = " <a href=\"myimages.php?Start=$PageStart&ByPage=$ByPage\">$i2</a>\n\t ";
}
}
Não há um else que serviria para "se tudo o mais falhar...". Como você não definiu $links como array antes desses condicionais:
$links = array();
Após eles, no implode(), pode ser que $links não exista, para os casos de não ter caído em nenhuma condição, onde o array é criado em runtime.
Tenho quase certeza que seus alertas de erro estão desabilitados ou muito baixos, caso contrário você talvez veria um erro de Undefined variable.
Lembre-se, durante o desenvolvimento use sempre no topo do arquivo:
ini_set( 'display_erros', TRUE );
error_reporting( E_ALL | E_STRICT );
Assim você programa certo. :thumbsup:
Não entendi muito bem, cara. Coloquei o $links = array(); antes das condicionais e o Warning não foi exibido, mas os números da páginação também não.
Ficou assim:
Páginas: | |
Como é a página 2 (na um fica normal) deveria exibir:
Páginas: | 3 | 4 | 5 | 6 | 7 | 8 |
Coloca um:
var_dump( $links );
Logo antes do implode()e posta o resultado.
Boas tardes,
Julgo estar no sitio certo.
Possuo um codigo semelhante a este, e tentando orientar-me pelas dicas que aqui expuseram, o meu codigo deu erro. Ou seja, na versão base (sem limites de numero de paginas) os numeros anteriores que cliquei desaparecem, mas quando integro o codigo de limitação de paginas dá erro: desaparece todos, exceto a ultima pagina.
O codigo:
$rnav = mysql_query($qnav) or die(mysql_error());
$rows = mysql_num_rows($rnav);
if($rows > $ByPage)
{
$ListingTable .= "<table class=\"tlistnav\" border=0 cellspacing=0 align=center width=100% >";
$ListingTable .= "<tr><td align=center><font face=verdana size=2> | ";
$pages = ceil($rows/$ByPage);
$pagesLimit = 5;//Limite de páginas
$lowAllow = (int)($Start - ($pagesLimit / 2));
$Start = ($lowAllow <= 0) ? 1 : $lowAllow;
$aboveAllow = $Start + $pagesLimit;
$until = ($aboveAllow > $pages) ? $pages : $aboveAllow;
for($i = $Start; $i <= $until; $i++)
{
$PageStart = $ByPage*$i;
$i2 = $i + 1;
if($PageStart == $Start)
{
[b]$links = array();[/b]
$links[] = " <span class=CurrPageIdx>$i2</span>\n\t ";
}
elseif($PageStart < $rows)
{
$links[] = " <a class=BlackLink href=\"search.php?Start=$PageStart&c=$_GET[c]&s=$_GET[s]&search_kw=$_GET[search_kw]&CategoryID=$_GET[CategoryID]&search_district=$_GET[search_district]&search_place=$_GET[search_place]&search_city=$_GET[search_city]&PostID=$_GET[PostID]&zip=$_GET[zip]&old=$_GET[old]\">$i2</a>\n\t ";
}
}
$links2 = implode(" | ", $links);
$ListingTable .= $links2;
$ListingTable .= "| </td></tr>";
$ListingTable .= "</table><br><br>\n";
}
else // rows <= bypage (no navbar required)
{
$ListingTable .= "<br><br>\n";
}
} // lrows >0
else
{
$ListingTable = "<br><br><center>Não existem resultados!
<br><br><center>Tente noutras caracteristicas!</center>";
}
} // else if($_GET[c]) Check for subcategories @ line 63
Procuro desesperadamente de ajuda, pois gostaria de resolver essa duvida.
Obrigado pela atenção.
cara se não entrar no for o links não vai ser definido.
coloca a definição de links antes do for assim:
$links = array();
for($i = $Start; $i <= $until; $i++) {
...
>
Boas tardes,
Julgo estar no sitio certo.
Possuo um codigo semelhante a este, e tentando orientar-me pelas dicas que aqui expuseram, o meu codigo deu erro. Ou seja, na versão base (sem limites de numero de paginas) os numeros anteriores que cliquei desaparecem, mas quando integro o codigo de limitação de paginas dá erro: desaparece todos, exceto a ultima pagina.
O codigo:
$rnav = mysql_query($qnav) or die(mysql_error());
$rows = mysql_num_rows($rnav);
if($rows > $ByPage)
{
$ListingTable .= "<table class=\"tlistnav\" border=0 cellspacing=0 align=center width=100% >";
$ListingTable .= "<tr><td align=center><font face=verdana size=2> | ";
$pages = ceil($rows/$ByPage);
$pagesLimit = 5;//Limite de páginas
$lowAllow = (int)($Start - ($pagesLimit / 2));
$Start = ($lowAllow <= 0) ? 1 : $lowAllow;
$aboveAllow = $Start + $pagesLimit;
$until = ($aboveAllow > $pages) ? $pages : $aboveAllow;
for($i = $Start; $i <= $until; $i++)
{
$PageStart = $ByPage*$i;
$i2 = $i + 1;
if($PageStart == $Start)
{
[b]$links = array();[/b]
$links[] = " <span class=CurrPageIdx>$i2</span>\n\t ";
}
elseif($PageStart < $rows)
{
$links[] = " <a class=BlackLink href=\"search.php?Start=$PageStart&c=$_GET[c]&s=$_GET[s]&search_kw=$_GET[search_kw]&CategoryID=$_GET[CategoryID]&search_district=$_GET[search_district]&search_place=$_GET[search_place]&search_city=$_GET[search_city]&PostID=$_GET[PostID]&zip=$_GET[zip]&old=$_GET[old]\">$i2</a>\n\t ";
}
}
$links2 = implode(" | ", $links);
$ListingTable .= $links2;
$ListingTable .= "| </td></tr>";
$ListingTable .= "</table><br><br>\n";
}
else // rows <= bypage (no navbar required)
{
$ListingTable .= "<br><br>\n";
}
} // lrows >0
else
{
$ListingTable = "<br><br><center>Não existem resultados!
<br><br><center>Tente noutras caracteristicas!</center>";
}
} // else if($_GET[c]) Check for subcategories @ line 63
Procuro desesperadamente de ajuda, pois gostaria de resolver essa duvida.
Obrigado pela atenção.
Ou $links2 = implode(" | ", $links); $links não é array, ou ele não possui |