Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Will Up

Warning: implode() [function.implode]: Invalid arguments passed

Recommended Posts

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>"; 
} 
else 
{ 
$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"; 
} 
elseif($Total == $n) 
{ 
echo "</tr>\n\n"; 
} 


$n++; 
} 

echo'</table>'; 

echo'</center>'; 

} 

?>

 

O que tem de errado, amigos?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Verifica se $links é um array. Vê esse trecho:

 

if($PageStart == $Start) 
{ 
$links[] = "$i2\n\t "; 
} 
elseif($PageStart < $rows) 
{ 
$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:

Compartilhar este post


Link para o post
Compartilhar em outros sites

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 |

Compartilhar este post


Link para o post
Compartilhar em outros sites

Coloca um:

 

var_dump( $links );

 

Logo antes do implode()e posta o resultado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.