Jump to content

mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in


Recommended Posts

Posted

eu sou iniciante no php e queria ver se alguem me consegue dar uma ajudinha,

tenho este codigo( nao fui eu que fiz)

da-me o seguinte erro --> mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in, é na linha //pesquisa artigo selecionado,

alguem me comnsegue dar uma ajudinha??

obrigado

<?php
session_start();

 // ligação à base de dados
include('ligacao.php');

// captura código de artigo
$id_artigo = $_REQUEST['id_artigo']; 

// prepara sessão de compra
$sessao = session_id();

// pesquisa artigo selecionado
$sql_artigo = "SELECT * FROM artigos WHERE id_artigo =".$id_artigo ;
$consulta1 = mysqli_query($ligacao, $sql_artigo);
$mostrar = mysqli_fetch_array($consulta1);

// mostrar detalhes do artigo selecionado
	echo "<table width='800 px' border='1' align='center'>";
	echo "<p align='center'><a href=\"lista_compras.php\">Ver lista de compras</a></p>";
	echo "<p align='center'><a href=\"index.php\">Ver todos os artigos</a></p>";
	echo "<strong><p align='center'>Você selecionou os seguintes artigos:</strong></p><td align='center' width='100' height='100' valign='middle'>
	<img src='$pasta_imagens".$mostrar['imagem_artigo']."' border='0'>";
	echo "<td><align='center'>".$mostrar['nome_artigo']."</a></br>EUR ".$mostrar['preco_artigo']." 
	</br>".$mostrar['descricao_artigo']."</br>";
	
// seleciona quantidade temporaria 	
	$sql_quantidade = 'SELECT quantidade FROM compra_temporaria WHERE sessao = "'.$sessao.'" AND id_artigo = "'.$id_artigo. '"';
	$consulta2 = mysqli_query($ligacao, $sql_quantidade);
	$resultado = mysqli_fetch_assoc($consulta2);
	
// se houver quantidades já inseridas, extrai valores para mostrar
	if (mysqli_num_rows($consulta2) > 0) { $quantidade = $resultado['quantidade']; }
// se não houver quantidade já inserida, atribui valor zero
	else {$quantidade = 0;}

// inicia formulario para atualizar valores de quantidade
echo '<form method="POST" action="atualizar_compra.php">';

// apresenta quantidade a zero ou o número de vezes selecionado
echo '<p>Quantidade: <input type="text" name="quantidade" id="quantidade" size="2" value="'.$quantidade.'"/>';

// se a quantidade for positiva, permite alterar ou remover quantidade/artigo
	if ($quantidade > 0) {
	echo '<align="center"><input type="submit" name="submit" value="Alterar"/>';
	echo '<align="center"><input type="submit" name="submit" value="Remover artigo"/>';
		
// se a quantidade for nula, permite adicionar artigo
	} else {
	echo '<align="center"><input type="submit" name="submit" value="Adicionar"/>';
	}
	
echo '<input type="hidden" name="id_artigo" value="'.$id_artigo.'"/>';	
echo "</form>";
echo "</table>";
?>
Posted

A consulta à base de dados falhou e a função mysqli_query devolveu FALSE em vez de devolver um recurso para usar nas funções seguintes. Ou a tua query tem um erro, se a variável $id_artigo estiver fazia tens um erro na sintaxe do SQL, ou a ligação à base de dados não foi estabelecida.

Posted

Faz um var_dump à $ligação e mostra o output aqui.

Experimenta na query por o id do artigo entre ' ... '

Verifica também se esse id está a ser recebido 

developer @ filipealves.net

filipealvesbcl [a] gmail.com

github.com/filipealvesbcl

Posted

boas, obrigado ja consegui resolver,

mas agora tenho outro, tenho o codigo que esta em baixo, trata-se de enviar os pedidos das compras por email,

eu recebo o email assim --->

Pedido - 06/12/2016 16:20 id_cliente -> 27 Nome_Login ->carlos Cod. -> 3 - Quantidade -> 1 - o melhor disco rigido do mercado preço_artigo -> 0.55 * 1 Sub_total: 0.55 Valor Total: 1.1; Numero de compra: 2 carlos carlos rua 11 de março catujal 2680-395 hernani_coelho@msn.com -------------------------------------------------------------------

só que o problema é que so vem um artigo no email se a pessoa comprar 2 artigos o valor total vem certo mas nao os artigos.

será que alguem me consegue dar uma ajudinha??

<?php
// inicia sessão
session_start();

// ligação à base de dados
include('ligacao.php');

// verifica número de sessão
$sessao=session_id();
$id_cliente=$_SESSION['id_cliente'];
$sql_cliente= 'SELECT * FROM clientes WHERE id_cliente='.$id_cliente;
$consulta1=mysqli_query($ligacao, $sql_cliente);
while ($mostrar= mysqli_fetch_array($consulta1, MYSQLI_BOTH)){
extract ($mostrar);
echo "<table width='800 px' border='1' align='center'>";
echo "<tr><td><strong>Passo 2 - Resumo compra</strong></td></tr>";}
?>
<tr><td>
<table>
<tr><td>Primeiro Nome: <?php echo $primeiro_nome;?></td></tr>
<tr><td>Ultimo Nome: <?php echo $apelido;?></td></tr>
<tr><td>Rua/Lugar: <?php echo $endereco;?></td></tr>
<tr><td>Localidade: <?php echo $localidade;?></td></tr>
<tr><td>Codigo Postal: <?php echo $codigo_postal;?></td></tr>
<tr><td>Endereço de correio electronico: <?php echo $email;?></td></tr>
</table>
<?php
$sql_carrinho = 'SELECT * FROM compra_temporaria temp JOIN artigos prod ON temp.id_artigo=prod.id_artigo WHERE sessao ="'. $sessao .'" ORDER BY temp.id_artigo ASC';
$consulta2=mysqli_query($ligacao, $sql_carrinho)or die (mysql_error());
$resultado=mysqli_num_rows($consulta2);
if ($resultado > 0 ){
$total=0;
echo "<table width='800 px' border='1' align='center'>";
echo "<th>Imagem Artigo </th><th>Detalhe Artigo</th><th>Quantidade</th><th>Preço Unitario</th><th>Total a pagar</th>";
While ($mostrar = mysqli_fetch_array($consulta2, MYSQLI_BOTH)){
extract ($mostrar);
echo "<tr><td align='center' width='100' height='100' valign='middle'>;
<img src='$pasta_imagens" .$imagem_artigo. "' ></a>";
echo "<td align='center'>".$descricao_artigo."</td></a>";
echo "<td align='center'>".$quantidade."</td>";
echo "<td align='center'>EURO" .$preco_artigo."</td>";
$sub_total= number_format($preco_artigo * $quantidade, 2);
echo "<td align='center'>EURO" .$sub_total."</td>";
$total =$total + $preco_artigo * $quantidade;
echo "<tr><td align='right' colspan='5'> O valor total a pagar é de: <strong>EURO ".number_format($total,2)."</strong></td></tr>"; }
}
$sql_regista_compra = "INSERT INTO compra_confirmada (data_compra, id_cliente, total_pagar) VALUES (NOW(),'".$id_cliente."', '".$total."')";
$consulta3 =mysqli_query($ligacao, $sql_regista_compra);
$id_compra = mysqli_insert_id($id_compra);
$sql_regista_detalhes_compra= ' INSERT INTO detalhes_compra (id_compra, quantidade_compra, id_artigo) SELECT ' .$id_compra.', quantidade, id_artigo FROM compra_temporaria WHERE sessao= "' .$sessao.'"';
$consulta4= mysqli_query($ligacao, $sql_regista_detalhes_compra);
$sql_elemina_temp = 'DELETE FROM compra_temporaria WHERE sessao= "'.$sessao.'"';
$consulta5 = mysqli_query($ligacao, $sql_elimina_temp);
echo "<td colspan='5'> A compra foi realizada com sucesso e ficou com o numero  ".$id_compra;
//echo "<p> Sera enviada uma cópia dos detalhes da compra para o seu email.</p>";

echo "<tr><a href='index.php?pagina=1'> Clique para voltar á pagina inicial.</a></tr>";
session_unset();
session_destroy();
?>



<?php
include("ligacao.php");
include("class.phpmailer.php");
include("class.smtp.php");
require('PHPMailerAutoload.php');{
$data = date('d/m/Y H:i');
$sql_carrinho ="SELECT * FROM clientes WHERE id_cliente='.$id_cliente";
if ($sql_carrinho == '') {
echo 'erro ao selecionar';
}
else{
while($res_seleciona = mysqli_fetch_array($sql_carrinho));
{
$porta = $res_seleciona ['587'];
$servidor = $res_seleciona ['smtp.sapo.pt'];
$usuario_conta = $res_seleciona ['hernani@sapo.pt'];
$senhaemail = $res_seleciona [''];
$emailSite = $res_seleciona ['hernani@sapo.pt'];
$emailsiterecebe = $res_seleciona ['hernani@sapo.pt'];
$telefone = $res_seleciona ['914630554'];
$meudominio = $res_seleciona ['www.coelhodesign.info'];
$nomeEmpresa = utf8_decode($res_seleciona ['coelhodesign']);

$mail=new PHPMailer();
$mail->SMTPSecure = "tls";
$mail->SMTPDebug = 3;
$mail->Priority = 1;
$mail->IsSMTP();
$mail->SMTPAuth = false;
$mail->CharSet = "utf-8";
$mail->Port = "{$porta}";
$mail->Hostname = "{$servidor}";
$mail->Username = "{$usuario_conta}";
$mail->Password = "{$senhaemail}";
$mail->From = "{$email}";
$mail->FromName = "hernani@sapo.pt";
$mail->SetFrom("hernani@sapo.pt", "{$nomeEmpresa}");
$mail->AddAddress("coelho.hernani@sapo.pt", "{$nomeEmpresa}");

$mail->Subject = utf8_decode("Solicitação pedido:");
$mail->IsHTML = (true);
//$mail->CharSet ='iso-8859-1';
//header('Content-Type: text/html; charset=iso-8859-1');
$body="Pedido - {$nomeEmpresa}
{$data}

id_cliente -> {$id_cliente} Nome_Login ->{$nome_login}
Cod. -> {$id_artigo} - Quantidade -> {$quantidade} - {$descricao_artigo}
preço_artigo -> {$preco_artigo} * {$quantidade}
Sub_total: {$sub_total}
Valor Total: {$total};
Numero de compra: $id_compra
{$resultado}
{$primeiro_nome}
{$apelido}
{$endereco}
{$localidade}
{$codigo_postal}
{$email} -------------------------------------------------------------------
";
$address = "hernani@sapo.pt";
$mail->AddAddress($address, "nome");
}
}

$mail->Body=$mail_body.$body;

if($mail->send()){
echo "<script>
alert('PARABENS!!\n\nO seu pedido foi enviado com sucesso.');
window.location.href='index.php'
</script>";}


else{
echo 'Erro ao enviar o email '.$mail->ErrorInfo;
}
}
//session_unset();
//session_destroy();
?>
Posted

porque é que tens ciclos para fazer echo do html e não tens um único ciclo para escrever o email ?

IRC : sim, é algo que ainda existe >> #p@p
Posted

ola,

é que eu sou novato no php, e so estou a juntar 2 ficheiros onde fiz pequenas alterações , não fui eu que fiz o codigo, se me puderes ajudar agradeço.

 

hernani

Posted

ser "novato" em alguma coisa não é desculpa aceite em lado nenhum.

o teu primeiro erro é "juntar dois ficheiros", que é algo não normalmente não faz sentido.

segundo, não respondeste à pergunta, pois não ?

IRC : sim, é algo que ainda existe >> #p@p
Posted (edited)

mas não te faz diferença que para apresentar uma lista de artigos no HTML é necessário um ciclo e para escrever o email não se faz nada ?

isto deverias ser tu:

66baa08b16a192d752959fa4c29bc96a.jpg

Edited by HappyHippyHippo
make you think
IRC : sim, é algo que ainda existe >> #p@p
Posted

pois tens razao mas como eu nao tenho grandes conhecimentos nao me tinha apercebido disso.

 

podes me ajudar??

Posted

olha para o código que faz o HTML e faz exactamente o mesmo ... só que em vez de escrever para o output (echo) faz o texto que queres mandar par ao email

IRC : sim, é algo que ainda existe >> #p@p

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.