hernani33 Posted December 4, 2016 at 11:11 AM Report #601003 Posted December 4, 2016 at 11:11 AM 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>"; ?>
Knitter Posted December 4, 2016 at 11:30 AM Report #601004 Posted December 4, 2016 at 11:30 AM 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.
chbcl Posted December 4, 2016 at 11:32 AM Report #601005 Posted December 4, 2016 at 11:32 AM 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
hernani33 Posted December 6, 2016 at 03:29 PM Author Report #601053 Posted December 6, 2016 at 03:29 PM 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(); ?>
HappyHippyHippo Posted December 6, 2016 at 09:40 PM Report #601056 Posted December 6, 2016 at 09:40 PM 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 Portugol Plus
hernani33 Posted December 7, 2016 at 10:27 AM Author Report #601067 Posted December 7, 2016 at 10:27 AM 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
HappyHippyHippo Posted December 7, 2016 at 11:03 AM Report #601069 Posted December 7, 2016 at 11:03 AM 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 Portugol Plus
hernani33 Posted December 7, 2016 at 11:23 AM Author Report #601075 Posted December 7, 2016 at 11:23 AM pois a resposta ha pergunta é, não sei.
HappyHippyHippo Posted December 7, 2016 at 11:32 AM Report #601076 Posted December 7, 2016 at 11:32 AM (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: Edited December 7, 2016 at 11:43 AM by HappyHippyHippo make you think IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
hernani33 Posted December 7, 2016 at 11:43 AM Author Report #601077 Posted December 7, 2016 at 11:43 AM pois tens razao mas como eu nao tenho grandes conhecimentos nao me tinha apercebido disso. podes me ajudar??
HappyHippyHippo Posted December 7, 2016 at 11:52 AM Report #601078 Posted December 7, 2016 at 11:52 AM 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 Portugol Plus
hernani33 Posted December 7, 2016 at 12:24 PM Author Report #601080 Posted December 7, 2016 at 12:24 PM tou perdido no codigo, será que podes por um exemplo? obrigado hernani
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now