Ir para conteúdo
Fórum Script Brasil
  • 0

Warning: array_keys() [function.array-keys]: The first argument should


lemandrake

Pergunta

Boa tarde!

Tenho um sistema com carrinho de orçamento que aparece esse erro:

Warning: array_keys() [function.array-keys]: The first argument should be an array in /home/device/www/ficheiros/finalizar.php on line 157

Poderiam por favor me dizer o porquê de ocorrer esse erro, me disseram ser erro da configuração do servidor em relação à diretiva, caso seja isso mesmo não poderei configurar o arquivo e nem setar com htaccess, tem como camuflar o erro apenas com algum comando? Sei que não é o certo, mas como não interfere diretamente no script, mas deixa a tela toda bagunçada quando aparece, seria mais questão de designer, meio que tira o crédito da página quando aparece esse erro.

Agradeço a atenção.

OBS: Abri o tópico pois nas pesquisas não deram retorno de nenhum valor referente a esse erro.

Editado por lemandrake
Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0
Bem sem o pedaço do código é díficil ... em geral é porque você deve estar passando para função algum valor que não é um array :P

Mas se quer apenas esconder o erro em detrimento do funcionamento use "@"

@array_keys($array));
Agradeço mesmo a resposta, segue o código, ele funciona perfeitamente, tirando quando expira a sessão que deixa a página toda bagunçada, se for o caso do usuário executar o orçamento e não deixar a página aberta sozinha por muito tempo não teria problema...sem querer abusar, onde coloco o comando que me passou? Valeu mesmo
<?php
//INICIALIZA A SESSÃO
session_start();

//VERIFICA SE A ATUALIZAR FOI SELECIONADA
if($_POST[opc_atualizar]) {

//RECEBE OS PRODUTOS CHECADOS PARA ATUALIZAr
$v_atualiza = $_POST[a_prod];

//PEGA A CHAVE DO ARRAY
$chave = array_keys($v_atualiza);

//EXIBE
for($i=0; $i<sizeof($chave); $i++) {
//PEGA O INDICE DO PRODUTO
$indice = $chave[$i];

//ALTERA A QUANTIDADE DO PRODUTO SELECIONADO
$_SESSION[cesta][$indice][QTDE] = $v_atualiza[$indice][QTDE];
}//FECHA FOR
}//FECHA IF


//VERIFICA SE A OPÇÃO EXCLUIR FOI SELECIONADA
elseif($_POST[opc_excluir]) {

//RECEBE OS PRODUTOS CHECADOS PARA EXCLUSÃO
$excluir = $_POST[check];

//EXIBE
for($i=0; $i<sizeof($excluir); $i++) {
//PEGA O INDICE DO PRODUTO
$indice = $excluir[$i];
//DESTRÓI A VARIÃVEL ESPECIFICADA
unset($_SESSION[cesta][$indice]);
}//FECHA FOR
}//FECHA IF

//RECEBE O PEDIDO DO USUÃRIO
elseif($_POST[opc_efetivar]) {
//RECEBE AS VARIÃVEIS
$v_prod = $_POST[txtprod];

//PEGA A CHAVE DO ARRAY
$chave = array_keys($v_prod);

//EXIBE
for($i=0; $i<sizeof($chave); $i++) {
$indice = $chave[$i];

//VERIFICA
if(!empty($v_prod[$indice][QTDE]) ) {

//GRAVA NO ARRAY CESTA
$cesta[$indice][ARTISTA] = $v_prod[$indice][ARTISTA];
$cesta[$indice][ALBUM] = $v_prod[$indice][ALBUM];
$cesta[$indice][preço] = $v_prod[$indice][preço];
$cesta[$indice][QTDE] = $v_prod[$indice][QTDE];
}//FECHA IF
}//FECHA FOR

//GRAVA NA SESSÃO
$_SESSION[cesta] = $cesta;
}//FECHA ELSE
?>

<html>
<head>
<title>Carrinho de Orcamento</title>
<style type="text/css">
<!--
body {
margin-left: 0px;
margin-top: 0px;
margin-right: 0px;
margin-bottom: 0px;
}
.style2 {
color: #000000;
font-weight: bold;
}
.style5 {color: #FFFFFF; font-weight: bold; }
.home {
    color: #000;
}
-->
</style>

<script language="JavaScript">
<!--
function enviar(opcao) {
//OPÇÃO EXCLUIR SELECIONADA
if(opcao == 'E') {
document.forms[0].opc_excluir.value = 1;
document.forms[0].submit();
}//FECHA IF

//OPÇÃO ATUALIZAR SELECIONADA
if(opcao == 'A') {
document.forms[0].opc_atualizar.value = 1;
document.forms[0].submit();
}//FECHA IF

//OPÇÃO FINALIZAR SELECIONADA
if(opcao == 'F') {
document.forms[0].opc_finalizar.value = 1;
document.forms[0].action = "finalizar.php";
document.forms[0].submit();
}//FECHA IF

}//FECHA FUNCTION
//-->
</script>
<link href="css/stl_ind.css" rel="stylesheet" type="text/css">
<meta http-equiv="Content-Type" content="text/html"; charset="utf-8"> 

</head>

<body>
<table width="773" border="0" cellspacing="0" align="center"  cellpadding="0">
<tr>
<td> <br>
<br>
<br>
<br>
<table width="95%" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td><font size="2" face="Arial" align="center">.</font></td>
</tr>
</table>

<?php
//EXIBE O CARRINHO SE TIVER PRODUTOS
if(count($_SESSION[cesta]) > 0) { ?>

<form name="frmCarrinho" method="post">
<input type="hidden" name="opc_excluir">
<input type="hidden" name="opc_atualizar">
<input type="hidden" name="opc_finalizar">
<table width="80%" border="0" align="center" cellpadding="0" cellspacing="0">
<tr bgcolor="#CCCCCC">
<td width="4%"> </td>
<td width="8%"><span class="style2"><font face='arial' size='2'>Qtde</font></span></td>
<td width="51%"><span class="style2"><font face='arial' size='2'>Produto</font></span></td>

</tr>
<?php
//PEGA A CHAVE
$chave_cesta = @array_keys($_SESSION[cesta]);

//EXIBE OS PRODUTOS DA CESTA
for($i=0; $i<sizeof($chave_cesta); $i++) {
$indice = $chave_cesta[$i];

//SUBTOTAIS DE CADA PRODUTO
$subtotal = $_SESSION[cesta][$indice][QTDE] * ereg_replace(",",".",$_SESSION[cesta][$indice][preço]);

//TOTAL GERAL
$total += $subtotal;
?>
<tr>
<td height="25"><input name="check[]" type="checkbox" value="<?php echo $indice; ?>"></td>
<td height="25"><font face='Arial' size='2'>
<input type="text" name="a_prod[<?php echo $indice; ?>][QTDE]" value="<?php echo $_SESSION[cesta][$indice][QTDE]; ?>" size="3" class="formpreto"></font></td>
<td height="25"><font face='Arial' size='2'><?php echo $_SESSION[cesta][$indice][ARTISTA]; ?><?php echo $_SESSION[cesta][$indice][ALBUM]; ?></font></td>


</tr>
<?php
}//FECHA FOR ?>
<tr>
<td height="25" colspan="3">
<input type="image" name="btnExcluir" src="imagens/excluir.gif" onClick="enviar('E');">
<input type="image" name="btnAtualiza" src="imagens/atualizar.gif" onClick="enviar('A');">
<input type="image" name="btnFinaliza" src="imagens/continuar.gif" onClick="enviar('F');">
<a href="index.php"><font size='1' color='#000000'><b>CONTINUAR ORÇANDO</font></a>
</td>

</tr>
<tr>
<td height="25" colspan="3"> </td>
<td height="40" colspan="2"><div align="center">

</tr>
</table>
</form>
<?php
}//FECHA IF(count)
else { ?><br><br><br>
<table width="90%" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td align='center'><font face='Arial' size='3' color="red">
  <p><b>O Carrinho de Orçamento está Vazio!</b></p></td>
<td></td>
</tr>
<tr>
<td><div align="center" class="home"><a href="index.php"><font color="black"><strong>Continuar</strong></font></a></div></td>
</tr>
<tr>
</tr>
</table><br><br>
<?php
}//FECHA ELSE (count)?>
<table width="70%" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>

</tr>
</table>
<br>
</td>
</tr>
</table>
</body>
</html>

Editado por lemandrake
Link para o comentário
Compartilhar em outros sites

  • 0

E aí beleza?

Teoricamente resolvi, o problema ocorria quando ia finalizar o produto, exemplo se a pessoa digitasse o caminho da página ela iria abrir e com o erro pois não havia nada no carrinho, ou quando expirava a sessão que também esvaziava o carrinho, fiz assim coloquei na condição onde mostra carrinho vazio um meta refresh 0 para a index.php, ou seja não vai ser possível acessar a página finalizar quando estiver vazio o carrinho, então o erro teoricamente não aparecerá.

Agradeço a atenção, valeu mesmo por disponibilizar de seu tempo pra atender esse infanto em php que vos fala, abraço e boa sorte.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...