Ir para conteúdo

POWERED BY:

Arquivado

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

Carcleo

[Resolvido] Inserir todos os ítens

Recommended Posts

Pessoal.

 

Tenho um carrinho de compras simples.

 

Gostaria de colocar um botão para adicionar uma unidade de todos os produtos de uma só vez no carrinho.

 

CVomo eu faço?

 

carrinho.php

<?php
//Verificando se a variavel de sessão foi criada
if (!session_is_registered("MeuCarrinho")){
session_register("MeuCarrinho");
$MeuCarrinho = new TCarrinho();
$_SESSION[MeuCarrinho] = serialize($MeuCarrinho);
$MeuCarrinho = unserialize($_SESSION[MeuCarrinho]);	
}
$_SESSION[MeuCarrinho] = serialize($MeuCarrinho);
$MeuCarrinho = unserialize($_SESSION[MeuCarrinho]);	

if (!empty($op)){
switch ($op) {
case "adicionar":
       if (!empty($id_prod)){

		$Query = "select id from produtos where id = $id_prod";
		$R_Query = $MySQL->query($Query);
		if (mysql_num_rows($R_Query)>0)
		{
			foreach($_POST['quan'] as $numero=>$arquivo)
		    {
							$MeuCarrinho->AdicionarItem($id_prod,$arquivo,$id_lista);

			}
		}
	}
       break;
   case "excluir":
       $MeuCarrinho->RemoverItem($id_prod);
       break;
   case "atualizar":	
	$MeuCarrinho->AtualizarCarrinho($_POST);
       break;
case "finalizar":
	if ($MeuCarrinho->QuantosItens()>0) {
	echo "<script>document.location='CarrinhoFinal.php?acao=gravar_pedido&preco_total=$preco_total'</script>";
	}
break;
}
}
if ($MeuCarrinho->QuantosItens()==0) {
echo "<table align='center'>
	 <tr><td align=center><p><p><h2>Lista Vazia</h2><p><p></td></tr>	   
	 <tr><td align=center><p><p><a href=pedidos_fazer.php?acao=mostra_produtos><h2>Mostar Produtos</h2></a><p><p></td></tr>
   </table>";
	}
else {
$QuerySQL = "
            select 
		   p.id, p.foto, p.nome, p.preco, p.quantidadecaixa, p.grupo, g.nome, p.fornecedor
		 from 
		   produtos p inner join grupos g on p.grupo = g.id_grupo
		   " . $MeuCarrinho->QuerySQL_ObtemListaDeItens(). "";
$Resultado = $MySQL->query($QuerySQL);
?>

<form method="post" action="carrinho.php?op=atualizar">
<table BORDER=0 CELLSPACING=2 CELLPADDING=4 WIDTH="95%" align="center">
<tr BGCOLOR="#0080C0"><td align="center" colspan="9"><b><font color="#FFFFFF">Pedido</font></b></td></tr>
<tr BGCOLOR="#004080">
<td align="center"><b><font color="#FFFF99">Lista</font></b></td>
<td align="center"><b><font color="#FFFF99">Foto</font></b></td>
<td align="center"><b><font color="#FFFF99">Produto</font></b></td>
<td align="center"><b><font color="#FFFF99">Grupo</font></b></td>
<td align="center"><b><font color="#FFFF99">QTD na Caixa</font></b></td>
<td align="center"><b><font color="#FFFF99">PREÇO UNITÁRIO</font></b></td>
<td align="center"><b><font color="#FFFF99">Quantidade</font></b></td>
<td align="center"><b><font color="#FFFF99">TOTAL</font></b></td>
<td align="center"> </td>
</tr>

<?
$preco_total = 0.00;
while(list($id, $foto, $nome, $preco, $quantidadecaixa, $grupo, $nome_grupo, $fornecedor) = mysql_fetch_row($Resultado)) {
//Computando preco total
$preco_total = $preco_total + $MeuCarrinho->ObtemSubTotalDeUmItem($id,$preco);

   session_register("preco_total");

   include("../global/funcoes_php/foto_ver.php");

echo "
	<tr>
	  <td align='center'>".$MeuCarrinho->ObtemListaItem($id)."</td>		  
	  <td align='center'><font size=-1>". $foto2 ."</font></td>
	  <td align='left'><font size=-1>". $nome ."</font></td>
	  <td align='left'><font size=-1>". $nome_grupo ."</font></td>
	  <td align='center'><font size=-1>". $quantidadecaixa ."</font></td>
	  <td align='center'>R$ ". number_format($preco, 2, '.', '')." </td>
	  <td align='center'><font size=-1><input type=TEXT name=". $id ." size=2 value=". $MeuCarrinho->ObtemQuantidadeItem($id) ."></font></td>
	  <td align='center'>R$ ". number_format($MeuCarrinho->ObtemSubTotalDeUmItem($id,$preco), 2, '.', '') ."</td>		  
	  <td align='center'><b><a href=carrinho.php?op=excluir&id_prod=$id&id_fornece=$fornecedor>Excluir</a></b></td>
	</tr>
";
}
?>  
 <tr><td align="center" colspan="9">
          <font color="#FF0000"><b>VALOR TOTAL DO PEDIDO R$ <?=number_format($preco_total, 2, '.', '');?></b></font></td>
 </tr>
 <tr><td align="center" colspan="9">
          <input type="hidden" name="id_prod" value="<?=$id_produto;?>">
          <input type="hidden" name="id_fornece" value="<?=$id_fornece;?>">
          <input type="hidden" name="id_lista" value="<?=$id_lista;?>">
        <input type="submit" value="Atualizar" name="Atualizar" WIDTH="78" HEIGHT="20" style="background-color: rgb(0,111,55); color: rgb(255,255,0)"><br>
     </td>
 </tr>  
 </table>
   </form>


<table align="center" width="800">
<tr>
<td align="right">
	<form method="post" action="pedidos_fazer.php?acao=mostra_produtos">
          <input type="hidden" name="id_prod" value="<?=$id_produto;?>">
          <input type="hidden" name="id_fornece" value="<?=$id_fornece;?>">
          <input type="hidden" name="id_lista" value="<?=$id_lista;?>">
       <input type="submit" value="<< Voltar as Compras" name="voltar" WIDTH="78" HEIGHT="20" style="background-color: rgb(0,111,55); color: rgb(255,255,0)">
	</form>
</td>
<td align="left">
	<form method="post" action="carrinho.php?op=finalizar" name='FORM'>
         <input type="hidden" name="id_lista" value="<?=$id_lista;?>">
         <input type="hidden" name="preco_total" value="<?=number_format($preco_total, 2, '.', ''); ?>">
	<input type="submit" value="Finalizar Compra >>" name="Finalizar" WIDTH="78" HEIGHT="20" style="background-color: rgb(0,111,55); color: rgb(255,255,0)">
	</form>	
</td>
</tr>  
</table>


<? } ?>

TCarrinho.php

<?php
/*
Classe TCarrinho
*/
class TCarrinho {
var $item_codigo = array();
var $item_quantidade = array();
var $item_lista = array();

/*
	ObtemPosicao
	Este metodo obtem a posicao de um item mediante ao seu codigo, retornando um valor booleano e gravando a posicao na variavel de referencia $posicao, caso o codigo do item esteja no carrinho.
*/
function ObtemPosicao($codigo,&$posicao){
	//Percorrendo o vetor
	for($i=0;$i<count($this->item_codigo);$i++) {
		if ($this->item_codigo[$i] == $codigo) {
			$posicao = $i;
			return TRUE;
	   }
	 }

}/* ObtemPosicao() */

/*
	ObtemPreco
	Este metodo obtem o preco por unidade do produto tendo em mãos o codigo dele.
*/
	function ObtemPreco($codigo){
	$Sql = mysql_query("select preco from produtos where id = $codigo");
	list($preco_uni) = mysql_fetch_row($Sql);
	return $preco_uni;
	//return mysql_result($sql,0,0);
	 }/* ObtemPreco() *


/*
	AdicinarItem
	Este metodo adiciona um item no carrinho
*/
function AdicionarItem($codigo,$quantidade,$lista) 
{
	//Inicializando parametro
	$posicao = -1; 
	$achou = $this->ObtemPosicao($codigo,$posicao);
	if (!$achou){
		$this->item_codigo[] = $codigo;
		$this->item_quantidade[] = $quantidade;
		$this->item_lista[] = $lista;			
	}
} /* AdicionarItem() */

/*
	RemoverItem
	Este metodo remove um item do carrinho de compra, passando o codigo do produto
*/
function RemoverItem($codigo) 
{
	//Inicializando parametro
	$posicao = -1; 
	$achou = $this->ObtemPosicao($codigo,$posicao);
	if ($achou){
		//Removendo o elemento do vetor
		array_splice($this->item_codigo, $posicao, 1);
		array_splice($this->item_quantidade, $posicao, 1);		
	}

} /* RemoveItem() */

/*
	QuantosItens
	Este metodo retorna a quantidade de itens incluidas no carrinho de compras
*/
function QuantosItens() {
	return count($this->item_quantidade);
} /* QuantosItens() */

/*
	ExcluirTodosItens
	Este metodo retira todos os itens contidos no carrinho de compras
*/
function ExcluirTodosItens(){
	$this->item_quantidade = null;
	$this->item_codigo = null;
} /* ExcluirTodosItens() */

/*
	QuerySQL_ObtemListaDeItens
	Este metodo gera uma parte do codigo SQL que sera usado para buscar os dados
	do carrinho de compra (id, NOME e PREÇO). O comando SQL final tera como finalidade
	de buscar no banco de dados apenas os dados dos itens incluidos no carrinho.
*/
function QuerySQL_ObtemListaDeItens(){
	$itens = "where ";
	$STR = "";
	if ($this->QuantosItens()>0) {
		$fixo = " id =";
		for ($i=0;$i<$this->QuantosItens();$i++){
			$STR = $STR . $fixo . " " . $this->item_codigo[$i];
			if ($i+1<$this->QuantosItens()) {
				$STR = $STR . " or ";
			}
		}
	}
	if (!$STR == "") {
		return $itens . $STR;
	}else{
		//Caso não exista nenhum item no carrinho o codigo final SQL, procurara por um item que não existe na tabela de produtos, neste caso  -1.
		return "where id = -1";
	}
} /* QuerySQL_ObtemListaDeItens() */

/*
	ObtemNovoPrecoItem
	Este metodo obtem o novo preço do ítem baseado no preco calculado antes do carrinho
*/
function ObtemListaItem($codigo){
	$posicao = -1;
	$achou = $this->ObtemPosicao($codigo,$posicao);
	if ($achou) {
		return $this->item_lista[$posicao];
	}else{
		return "erro ao obter Novo Preço do item";
	}

} /* ObtemNovoPrecoItem() */

/*
	ObtemQuantidadeItem
	Este metodo obtem a quantidade de um Item
*/
function ObtemQuantidadeItem($codigo){
	$posicao = -1;
	$achou = $this->ObtemPosicao($codigo,$posicao);
	if ($achou) {
		return $this->item_quantidade[$posicao];
	}else{
		return "erro ao obter quantidade do item";
	}

} /* ObtemQuantidaItem() */

/*
	ObtemSubTotalDeUmItem
	Este metodo retorna o subtotal de um item (QUANTIDADE * VALOR UNITARIO)
*/
function ObtemSubTotalDeUmItem($id,$preco){
	$posicao = -1;
	$achou = $this->ObtemPosicao($id,$posicao);
	if ($achou) {
		return ($this->item_quantidade[$posicao]*$preco);
	}else{
		return "erro ao obter sub total do item";
	}
} /* ObtemSubTotalDeUmItem() */

/*
	AtualizarCarrinho
	Este metodo coleta todos as variaveis enviadas pelo FORMULARO (method="POST") 
	e atualiza as quantidades dos itens.
*/
function AtualizarCarrinho(&$VAR_ENVIADAS_PELO_BROWSER){
	//Percorrendo a lista de itens e atualizando suas quantidades
	for ($i=0;$i<$this->QuantosItens();$i++){
		$this->item_quantidade[$i] = $VAR_ENVIADAS_PELO_BROWSER[$this->item_codigo[$i]];
	}
} /* AtualizarCarrinho() */

} /* Classe TCarrinho */
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Em parte eu consegui.

Porem, agora, esta acontecendo erro de retorno.

 

Tenho a funçao que adiciona os itens ao carrinho

if (!empty($op)){
switch ($op) {
case "adicionar":		
	foreach($_POST['id_prod'] as $numero=>$arquivo)
		    {
			  if (!empty($arquivo)){

				  $Query = "select id from produtos where id = $arquivo";
				  $R_Query = $MySQL->query($Query);
				  if (mysql_num_rows($R_Query)>0)
				  {
									  $MeuCarrinho->AdicionarItem($arquivo,1,$id_lista);

				  }
		    }
	}
       break;

...

function AdicionarItem($codigo,$quantidade,$lista) 
{
	//Inicializando parametro
	$posicao = -1; 
	$achou = $this->ObtemPosicao($codigo,$posicao);
	if (!$achou){
		$this->item_codigo[] = $codigo;
		$this->item_quantidade[] = $quantidade;
		$this->item_lista[] = $lista;			
	}
} /* AdicionarItem() */

Esta funcionando normal, mas aqui

$MeuCarrinho->AdicionarItem($arquivo,1,$id_lista);

Gravo alem da quantidade 1, o numero da lista em cada produto e uso a função que vai atualizar(e mostrar) no carrinho o numero da lista para cada item.

function ObtemListaItem($codigo){
	$posicao = -1;
	$achou = $this->ObtemPosicao($codigo,$posicao);
	if ($achou) {
		return $this->item_lista[$posicao];
	}else{
		return "erro ao obter a lista do item";
	}
function ObtemPosicao($codigo,&$posicao){
	//Percorrendo o vetor
	for($i=0;$i<count($this->item_codigo);$i++) {
		if ($this->item_codigo[$i] == $codigo) {
			$posicao = $i;
			return TRUE;
	   }
	 }

}/* ObtemPosicao() */

No carrinho, estou recebendo o valor da lista assim:

echo "
	<tr>
	  <td align='center'>".$MeuCarrinho->ObtemListaItem($id)."</td>		  
...

Acontece, que em vez de vir o valor da lista como acontece com a item quantidade, aparece o numero 3

Onde será que esta o erro?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara da um var_dump() aqui óh para ver, ele só está retornando o 3 por isso só aparece ele, tente desbugar o código e ver o que acontece:

 

if ($this->item_codigo[$i] == $codigo) { 
   $posicao = $i;

   var_dump($posicao);

   return TRUE; 
   exit;
} 

Compartilhar este post


Link para o post
Compartilhar em outros sites

parece que entendi. Mas arrumar isso está bem difícil.

Veja só porque.

 

Quando pego la na lista de produtos, eu ja mando pro carrinho o codigo do produto e o numero da lista a qual ele pertençe.

 

 $sql_prods =  "
          select 
		   pl.id_produto,
		   pl.id_lista
		  from 
			 produtos_lista pl
		  inner join produtos p on pl.id_produto = p.id
		  inner join fornecedores f on f.id = p.fornecedor
		  inner join grupos g on p.grupo = g.id_grupo
		  where pl.data_fim >= CURRENT_DATE	
		  order by pl.id_lista desc, f.nome, f.razaosocial, p.nome			  ";				 

    $sql2=mysql_query($sql_prods);	
   if(mysql_num_rows($sql2)==0)
  {
	 echo "<table border=1 width=800 align=center>
			<tr><td colspan=11 align=center><h3>Ainda não há produtos cadastrados</h3></td></tr>
		   </table>";
   }
   else { 
			echo "<form action=\"carrinho_total.php?op=adicionar\" method=\"post\" name=\"envia_tudo\">";
			while(list($id_produto, $id_lista)=mysql_fetch_row($sql2))
			{
			 echo "<input type=\"hidden\" name=\"id_prod[$id_produto]\" value=\"$id_produto\">";	
			 echo "<input type=\"hidden\" name=\"id_lista\" value=\"$id_lista\">";	
			}
			echo "
			 <tr>
				 <td align=center valign=\"middle\" colspan=11 height=50>

				   <input type=\"submit\" value=\"Enviar todos os ítens\">
				  </form>
				 </td>
			 </tr> ";
   	   }
	echo "</table>";	 

 

Acontece que o campo quew envia o codigo, seu name, por estar em um loop, para verificar com javascript, fiz dele um array que trato no carrinho.php na hora de gravar a sessão. Acontece, que o campo que envia a lista, não esta em array. Dai, quando envia, só envia o valor da lista de um produto e repete para todos. Por isso esta dando só o 3.

Como posso contornar isso?

 

saida do form fica assim:


form action="carrinho_total.php?op=adicionar" method="post" name="envia_tudo">
<input type="hidden" name="id_prod[4]" value="4">
<input type="hidden" name="id_lista" value="9">
<input type="hidden" name="id_prod[3]" value="3">
<input type="hidden" name="id_lista" value="2">
<input type="submit" value="Enviar todos os ítens">
</form>
[/Code]

 

A intensão aqui é mandar

o produto4 e sua lista de numero 9

o produto3 e sua lista de numero 2

 

Tudo de uma vez.

Os produtos estão estão indo certo mas os numeros das listas não estão acompanhando os produtos

Compartilhar este post


Link para o post
Compartilhar em outros sites

você não poderia tranformar em um array ?

echo "<input type=\"hidden\" name=\"id_lista[ $id_produto ][ $id_lista ]\" value=\"$id_lista\">"; 
// ou
echo "<input type=\"hidden\" name=\"id_lista[ ]\" value=\"$id_lista\">"; 
// ou
echo "<input type=\"hidden\" name=\"id_lista[ $id_lista ][ ]\" value=\"$id_lista\">"; 

 

Isso vai depender de como você trata este input

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi, completando a resposta do Carlos Coelho, você montando um array

com os itens selecionados ou enviados, você faz o seguinte, implode nesse array, e já dispara um insert direto no banco..

 

como session já e um array, você so precisa arrumar um modo de gravar facilmente esses valores na session

no caso de uma alteração, ou coisa do tipo .. o session é mais adequado por isso, você libera o usuário a encher seu carrinho

depois ele seleciona os itens que deseja, e você transforma em pedido, sacou ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Andrei, não posso gravar direto no banco pois é preciso depois ver os ítens no carrinho e dar a possibilidade de alterar as quantidades.

 

Carlos Coelho, não ha tratamento do input da lista. Então, dá para fazer normalmente o array dele. Porem, minha dificuldade esta na hora de pegar:

 

um codigo de produto e uma lista, gravar no carrinho, outro codigo de produto e sua lista, gravar no carrinho, e assim por diante.

 

Tipo:

<input type="hidden" name="id_prod[4]" value="4"> 
<input type="hidden" name="id_lista[4]" value="9">               -> esses dois fazem no carrinho   $MeuCarrinho->AdicionarItem(id_prod[4],1,$id_lista[4]);                        

<input type="hidden" name="id_prod[3]" value="3">                        
<input type="hidden" name="id_lista" value="2">               -> esses dois fazem no carrinho   $MeuCarrinho->AdicionarItem(id_prod[3],1,$id_lista[3]);                        

Como eu poderia incluir a lista[] no carrinho junto do produto[].

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi, você não entendeu a minha ideia, nos projetos e-commerce que eu desenvolvo, eu faço da seguinte maneira

tabelas: produtos, pedidos & carrinho, em carrinho, são todos os produtos que usuário deseja enviar para seu carrinho

então nessa tabela carrinho, eu tenho o id do usuário que solicitou tal produto da loja, a quantidade, é o código do produto

entre outras coisas nas quais não é necessário mencionar, então você tendo essa 'tabela' carrinho, você vai ter o que precisa.

você não precisa ler o pedido do cara, você apenas vai fazer um SELECT com um INNER JOIN na tabela de PRODUTOS

relacionando o código do produto cadastrado, com um código do produto, nisso você vai ter um resultado de dados com todas

as informações de tal produto, no qual você multiplica o valor encontrado pelo preço !

 

então basta ler a tabela carrinho, você cria checkbox'es para o cara selecionar os itens que ele quer no pedido

e coloca um botão, finalizar pedido, com esses itens selecionados, você faz o mesmo procedimento, só que agora, preparando

para inserir em uma tabela específica, na qual você vai guardar as informações necessárias para emissão do boleto bancário, entre outras coisas ..

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi.

Mas o meu trabalho todo esta feito dessa forma.

 

Só falta isso para terminar.

Gostei do teu metodo. Mas, aplica-lo agora, seria perder muita trabalho ja pronto.

 

Me ajuda a resolver esse problema da forma que esta, se for possivel?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, você pode criar um contador.


$i = 0;
while(list($id_produto, $id_lista)=mysql_fetch_row($sql2))
{
echo "<input type=\"hidden\" name=\"{$i}[id_prod]\" value=\"$id_produto\">";    
echo "<input type=\"hidden\" name=\"{$i}[id_lista]\" value=\"$id_lista\">";  
$i++;
}

 

HTML vai ficar assim:

<input name="0[id_prod]" value="4" type="hidden">
<input name="0[id_lista]" value="9" type="hidden">
<input name="1[id_prod]" value="3" type="hidden">
<input name="1[id_lista]" value="2" type="hidden">

 

E no PHP vai te retornar assim:


array
 0 => 
   array
     'id_prod' => string '4' (length=1)
     'id_lista' => string '9' (length=1)
 1 => 
   array
     'id_prod' => string '3' (length=1)
     'id_lista' => string '2' (length=1)

 

Agora fica fácil "pegar" os dados.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz um

 

array_merge($_POST['id_prod'], $_POST['id_lista'])

 

e agora, nesse caso só tem dois produtos(mas é claro, cada lista terá quantidades de produtos diferentes), esta retornando uma array assim:

 

Array ( [0] => 4 [1] => 3 [2] => 9 [3] => 2 )

 

O indice 0 que traz o valor 4, é o id do primeiro produto e indice 1 que traz o valor 3, é o id do segundo produto ,

 

O indice 2 que traz o valor 9, é o lista do primeiro produto e indice 1 que traz o valor 3, é alista do segundo produto ,

 

Agora, tratar isso de forma a enviar para o carrinho o indice 0 e o 3 para a função adicionar no carrinho e depois o 2 e o 4 e assim por diante e que nem tenho noçao de como fazer

Compartilhar este post


Link para o post
Compartilhar em outros sites

Da forma como te passei fica fácil, veja.

array_walk( $_POST, 
function( $values )
{
	printf( '%d<br/>%d<br/>------<br/>', $values[ 'id_prod' ], $values[ 'id_lista' ] ); 
} );

/*

4
9
------
3
2
------

*/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Carlos Coelho.

 

Olha só. Fiz do teu jeito mas, não estou consguindo tratar essa array uma vez que a cada loop ela ganha um novo nome (0[id_prod],0[id_lista]) e não (id_prod[0],id_lista[0]).

 

Como eu poderia mexer nesse código para pegar os valores e envia-los corretamente para o carrinho?

if (!empty($op)){
switch ($op) {
case "adicionar":		
	foreach($_POST['id_prod'] as $numero=>$arquivo)
		    {
			  if (!empty($arquivo)){

				  $Query = "select id from produtos where id = $arquivo";
				  $R_Query = $MySQL->query($Query);
				  if (mysql_num_rows($R_Query)>0)
				  {
									  $MeuCarrinho->AdicionarItem($arquivo,1,$id_lista);

				  }
		    }
	}
       break;
...

Compartilhar este post


Link para o post
Compartilhar em outros sites

No lugar do foreach

               foreach($_POST['id_prod'] as $numero=>$arquivo)
                           {
                                 if (!empty($arquivo)){

                                         $Query = "select id from produtos where id = $arquivo";
                                         $R_Query = $MySQL->query($Query);
                                         if(mysql_num_rows($R_Query)>0)
                                         {
                                                                                 $MeuCarrinho->AdicionarItem($arquivo,1,$id_lista);

                                         }
                           }
               }

 

Coloque:


array_walk( $_POST, 
function( $values )
{
	if( !empty( $values[ 'id_prod' ] )
	{
		$Query = sprintf( 'SELECT id FROM produtos WHERE id = %d', $values[ 'id_prod' ] );
                       $R_Query = $MySQL->query( $Query );
		if( mysql_num_rows( $R_Query ) > 0 )
		{
			$MeuCarrinho->AdicionarItem( $values[ 'id_prod' ], 1, $values[ 'id_lista' ] );
		}
	}
} );

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, essa é uma função anônima e o dreamweaver não reconhece a syntax php.

 

Se sua versão do php não rodar o código, dê um nome a função

 

Outra coisa, esqueci de fechar o if. :huh:

if( !empty( $values[ 'id_prod' ] ) )

 

Se ficou complicado use um FOR.


for( $i = 0; $i < count( $_POST ); $i++ )
{
if( !empty( $_POST[ $i ] [ 'id_prod' ] ) )
{
	$Query = sprintf( 'SELECT id FROM produtos WHERE id = %d', $_POST[ $i ] [ 'id_prod' ] );
	$R_Query = $MySQL->query( $Query );
	if( mysql_num_rows( $R_Query ) > 0 )
	{
		$MeuCarrinho->AdicionarItem( $_POST[ $i ] [ 'id_prod' ], 1, $_POST[ $i ] [ 'id_lista' ] );
	}
}
};

Compartilhar este post


Link para o post
Compartilhar em outros sites

Meu php 5.3.1

 

Como ficaria esse "Dar um nome" para ela?

Se eu der um nome á funçao, terei que cria-la.

 

E parametros, valores?

 

agora ficou assim:

 

bb.png

 

Esse laço for resolveu.

 

Irmão, deculpe o incômodo e muito obrigado.

 

Agora, gostari muito de poder retribuir te ensinando alguma coisa mas ja deu pra ver que vai ser beemmmmm dificil eu poder te ensinar alguma coisa né?

 

Bom, mais uma vez meu muito obrigado.

 

Agora vou estudar esse código para entender isso aqui direito.

 

Valeu.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal,

 

Bom dia.

 

Sei que essw post já esta fechado mas como ainda esta dentro do assunto. Quero aqui de antemão pedir desculpas por ressussitar este tópico.

 

É o seguinte.

 

Com a ajuda do Carlos Coelho(na maior parte)consegui fazer uma adaptação ao código do meu carrinho de compras.

Acontece, que nesse caso, eu estou usando a mesma classe TCarrinho, porem, com dois arquivos carrinho.php.

Um para o caso de o cliente clikar em "Enviar todos os ítens", e outro para o caso de o c cliente escolher ítem à ítem.

 

Daí, tive a ideia de fazer apenas 1 carrinho.php e, no adiconar ítem, fazer uma validação para saber de qual situação estão chegando os produtos no carrinho. Se todos de uma vez ou de um a um.

 

Então, fiz o script abaixo. Esta funcionando. Porem, gostaria de saber, dos mais experientes, se desse jeito poderá dar erro no futuro:

 

if (!empty($op)){
switch ($op) {
case "adicionar":
  for( $i = 0; $i < count( $_POST ); $i++ )
  {
		  if( !empty( $_POST[ $i ] [ 'id_prod' ] ) )
		  {
				  $Query = sprintf( 'SELECT id FROM produtos WHERE id = %d', $_POST[ $i ] [ 'id_prod' ] );
				  $R_Query = $MySQL->query( $Query );
				  if( mysql_num_rows( $R_Query ) > 0 )
				  {
						  $MeuCarrinho->AdicionarItem( $_POST[ $i ] [ 'id_prod' ], 1, $_POST[ $i ] [ 'id_lista' ] );
				  }
		  }
		  else
			 {
				  if (!empty($id_prod)){

					  $Query = "select id from produtos where id = $id_prod";
					  $R_Query = $MySQL->query($Query);
					  if (mysql_num_rows($R_Query)>0)
					  {
						  foreach($_POST['quan'] as $numero=>$arquivo)
						  {
										  $MeuCarrinho->AdicionarItem($id_prod,$arquivo,$id_lista);

						  }
					  }
				  }
			 }
  }

     break;
   case "excluir":

Aqui vai o envio dos forms de forma individual e coletiva:

 <?
 if ($acao== "mostra_produtos"){
    $sql =  "
          select 
           pl.id_lista,
			   p.foto, 
		   pl.id_produto,
  			   p.nome,  
		   f.nome, 
		   f.razaosocial, 
		   g.nome,
		   p.quantidadecaixa,
		   p.preco
		  from 
			 produtos_lista pl
		  inner join produtos p on pl.id_produto = p.id
		  inner join fornecedores f on f.id = p.fornecedor
		  inner join grupos g on p.grupo = g.id_grupo
		  where pl.data_fim >= CURRENT_DATE	
		  order by pl.id_lista desc, f.nome, f.razaosocial, p.nome
		  ";				 

    $sql2=mysql_query($sql);	
   if(mysql_num_rows($sql2)==0)
 {
 echo "<table border=1 width=800 align=center>
        <tr><td colspan=11 align=center><h3>Ainda não há produtos cadastrados</h3></td></tr>
	   </table>";
  }

 echo "<table border=1 width=800 align=center>
        <tr><td colspan=11 align=center><h3>Produtos</h3></td></tr>
        <tr>
          <td align=center>Lista</td>
          <td align=center>Foto</td>
		  <td align=center>Produto</td>
		  <td align=center>Fornecedor</td>
		  <td align=center>Grupo</td>
		  <td align=center>Descrição</td>
		  <td align=center>Qtde. caixa</td>
		  <td align=center>Preço</td>
		  <td align=center>Quantidade</td>
		  <td align=center>Sub Total</td>
		  <td align=center>Adicionar</td>
		 </tr>
	  ";
 	 while(list($id_lista, $foto, $id_produto, $nome_produto, $nome_fornece, $razao_fornece, $nome_grupo, $quantidadecaixa, $preco) = mysql_fetch_row($sql2)){
    include("../global/funcoes_php/foto_ver.php");
    $icone = "<img border=0 src='../img/saiba_mais.png'  alt='Saiba Mais'>";						

 echo "<tr>
          <td align=center>$id_lista</td>
          <td align=center>$foto2</td>
		  <td align=let>$nome_produto</td>
		  <td align=let>$nome_fornece$razao_fornece</td>
		  <td align=let>$nome_grupo</td>
             <td align=\"center\" valign=\"middle\">
		  	<form action='?acao=saibamais'  method=\"post\">
			  <input type=\"hidden\" name=\"id_prod\" value=\"$id_produto\">
			  <input type=\"hidden\" name=\"id_lista\" value=\"$id_lista\">
			  <input type=\"submit\" alt=\"Saiba Mais\" style=\"background-image:url(../img/saiba_mais.png);width=72;height=25\" value=\"\">
			</form>
		  </td>	
		  <td align=center>$quantidadecaixa</td>
		  <td align=right>R$ $preco</td>
		  <td align=right>
<input type=text id=quant[$id_produto] value=1 size=2 style=\"text-align: center;\" 
onKeyPress=\"BloqueiaLetras();\" 
onchange=\"calculo(this.value, $preco,'quant[$id_produto]','quan[$id_produto]','label_preco[$id_produto]');\" >
		  </td>			  
		  <td align=right>R$ <label id=\"label_preco[$id_produto]\">$preco</label></td>			  
		  <td align=center valign=\"middle\">
		  	<form action='carrinho.php?op=adicionar'  method=\"post\" name=\"form_add[$id_produto]\">
			  <input type=\"hidden\" name=\"id_prod\" value=\"$id_produto\">	  
			  <input type=\"hidden\" name=\"quan[$id_produto]\" id=\"quan[$id_produto]\" value=\"1\">				  
			  <input type=\"hidden\" name=\"id_lista\" value=\"$id_lista\">
			  <input type=\"button\" value=\"Adicionar\" onclick=\"validaprodutoenviado('quant[$id_produto]','form_add[$id_produto]');\">
			</form>
		  </td>
		</tr>";
                                                            }	
    $sql_prods =  "
          select 
		   pl.id_produto,
		   pl.id_lista
		  from 
			 produtos_lista pl
		  inner join produtos p on pl.id_produto = p.id
		  inner join fornecedores f on f.id = p.fornecedor
		  inner join grupos g on p.grupo = g.id_grupo
		  where pl.data_fim >= CURRENT_DATE	
		  order by pl.id_lista desc, f.nome, f.razaosocial, p.nome			  ";				 

    $sql2=mysql_query($sql_prods);	
   if(mysql_num_rows($sql2)==0)
  {
	 echo "<table border=1 width=800 align=center>
			<tr><td colspan=11 align=center><h3>Ainda não há produtos cadastrados</h3></td></tr>
		   </table>";
   }
   else { 
			echo "<form action=\"carrinho.php?op=adicionar\" method=\"post\" name=\"envia_tudo\">";
			$i = 0;
			while(list($id_produto, $id_lista)=mysql_fetch_row($sql2))
			{
					echo "<input type=\"hidden\" name=\"{$i}[id_prod]\" value=\"$id_produto\">";    
					echo "<input type=\"hidden\" name=\"{$i}[id_lista]\" value=\"$id_lista\">";  
					$i++;
			}

			echo "
			 <tr>
				 <td align=center valign=\"middle\" colspan=11 height=50>

				   <input type=\"submit\" value=\"Enviar todos os ítens\">
				  </form>
				 </td>
			 </tr> ";
   	   }
	echo "</table>";	 
                           }
 ?>

Grato a quem puder ajudar.

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.