REVISTAPHP Posted July 24, 2007 at 02:29 AM Report Share #118769 Posted July 24, 2007 at 02:29 AM O objetivo desse artigo é mostrar como criar um carrinho de compras de forma muito fácil. Muitos criam códigos difíceis e bagunçado, e para quem deseja aprender fica mais complicado, então procurei utilizar uma sintaxe mais tranquila para facilitar seu aprendizado. Bom, vamos começar criando nossas tabelas que utilizaremos no decorrer do artigo. Iniciamos a criação da tabela de produtos, eu optei por apenas alguns campos mais por questões de exemplo para esse artigo, mas você poderá incrementar com os campos que achar melhor, exemplos comum encontrados: peso, quantidade e outros. O campo peso é muito usado para calcular preço de transporte e quando se quer colocar um preço com frete grátis, podemos colocar o peso como zero. OBS: No campo preço eu optei por um tipo double (10,2) precisão de 2 casas decimais, creio que não precisa ser modificado pois esse valor atente bem as necessidades atuais. Criando a tabela tbl_produtos CREATE TABLE `tbl_produtos` ( `cod` INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY , `nome` VARCHAR( 150 ) NOT NULL , `img` VARCHAR( 36 ) NOT NULL , `preco` DOUBLE( 10, 2 ) NOT NULL ) ENGINE = MYISAM ; OBS: Caso você opte por incluir mais campos, não se esqueça de modificar mais adiante as opções de insert e update. Depois de criada nossa tabela, vamos popular com alguns produtos, no código abaixo mostro somente a inclusão de 2 produtos, porem faça inclusão de no mínimo 4 para ficar um visual melhor ao listar nossos produtos. Populando a tabela tbl_produtos INSERT INTO `tbl_produtos` ( `cod` , `nome` , `img` , `preco` ) VALUES ( NULL , 'Notebook HP 2160br', '001.jpg', '5450' ), ( NULL , 'Computador HP', '002.jpg', '1400' ); Nosso próximo passo é criarmos a tabela de carrinho de compras, que será responsável em armazenar os produtos selecionados pelo visitante. Repare ainda o campo chamado sessao. Esse campo será o responsável por identificar cada pessoa no ato de carregar seu carrinho, e você pergunta: Como isso é feito ? Resposta: Cada visitante recebe uma sessão atual ao visitar o site, e para recuperar essa sessão atual utilizamos session_id(). Experimente pegar um arquivo e colocar um echo session_id() que deverá aparecer uma sequência de caracteres que é no caso a nossa sessão atual. session_id(): Retorna o id de sessão para a sessão atual ou uma string vazia ("") se não houver sessão atual (não existe um id de sessão atual). Criando a tabela tbl_carrinho CREATE TABLE `tbl_carrinho` ( `id` INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY , `cod` INT( 11 ) NOT NULL , `nome` VARCHAR( 150 ) NOT NULL , `preco` DOUBLE( 10, 2 ) NOT NULL , `qtd` INT( 11 ) NOT NULL , `sessao` TEXT NOT NULL ) ENGINE = MYISAM ; Agora chegou a hora de criarmos nossos arquivos .php e vamos começar com nosso arquivo de conexão com banco de dados. No início apenas definimos os valores usados para conectarmos a nossa base de dados MySQL. mysql_connect: Abre ou reutiliza uma conexão com um servidor MySQL. O servidor MySQL. Também pode incluir um número de porta (exemplo "servidor:porta"), ou um caminho para um socket local (exemplo ":/caminho/para/socket"), para o servidor local (localhost). Se a diretiva do PHP mysql.default_host não estiver definida (padrão), então o valor padrão é 'localhost:3306'. No meu caso como já está definido por padrão, não precisei definir a porta. Criando o arquivo conn.php <?php // Arquivo responsável por conectar a nossa base de dados $hostname_conn = "127.0.0.1"; $database_conn = "artigos"; $username_conn = "username"; $password_conn = "senha"; // Conectamos ao nosso servidor MySQL if(!($conn = mysql_connect($hostname_conn,$username_conn,$password_conn))) { echo "Erro ao conectar ao MySQL."; exit; } // Selecionamos nossa base de dados MySQL if(!($con = mysql_select_db($database_conn,$conn))) { echo "Erro ao selecionar ao MySQL."; exit; } ?> Agora chegou a parte legal que é a listagem dos produtos na qual vamos selecionar para incluirmos no carrinho de compras. Logo no início eu estou definindo o charset que nosso tipo de codificação: charset=iso-8859-1 Na linha fazemos nosso include que será usado para conectarmos a nossa base de dados. include "Connections/conn.php"; Nas linhas abaixo fazemos nosso select a qual defini selecionar somente 4 registros e chamo a função GeraColunas passando por parâmetro o número de 2 colunas e nosso SQL. $sql = "SELECT * FROM tbl_produtos ORDER BY RAND() LIMIT 0,4"; GeraColunas(2, $sql) Após as linhas acima fazemos nosso for para listar nossos registros e armazenamos nas variáveis onde na variável $preco eu faço a formatação usando number_format(). number_format() retorna uma versão formatada de number. Esta função aceita um, dois ou quatro parâmetros (não três). Agora montamos nosso HTML dinâmico para listar os produtos já com as variáveis já nos devidos lugares. E para um melhor entendimento algumas linhas estão comentadas. Criando o arquivo produtos.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Carrinho de Compras</title> </head> <body> <div align="center"> <?php include "Connections/conn.php"; //********************************************************************* // CONFIGURAÇÃO DE BANCO DE DADOS //********************************************************************* $con = mysql_connect($hostname_conn,$username_conn,$password_conn); $bd = mysql_select_db($database_conn); ?> <table cellSpacing=1 cellPadding=0 width="50%" align=center border=0> <tr> <td> <? //********************************************************************* // GERA A INSTRUÇÃO SQL E CHAMA A FUNÇÃO PARA GERAR AS COLUNAS //********************************************************************* $sql = "SELECT * FROM tbl_produtos ORDER BY RAND() LIMIT 0,4"; GeraColunas(2, $sql) ?> </td> </tr> </table> <? //********************************************************************* // FUNÇÃO: GERACOLUNAS // Parametros: // $pNumColunas (int) > Quant. de colunas para distribuição // $pQuery (string) > Query de registros //********************************************************************* function GeraColunas($pNumColunas, $pQuery) { $resultado = mysql_query($pQuery); echo ("<table width='100%' border='0'>\n"); for($i = 0; $i <= mysql_num_rows($resultado); ++$i) { for ($intCont = 0; $intCont < $pNumColunas; $intCont++) { $linha = mysql_fetch_array($resultado); if ($i > $linha) { if ( $intCont < $pNumColunas-1) echo "</tr>\n"; break; } $cod = $linha[0]; $nome = $linha[1]; $img = $linha[2]; $preco = number_format($linha[3],2,",","."); if ( $intCont == 0 ) echo "<tr>\n"; echo "<td>"; // Aqui você inclui o conteudo echo "<table width='266' border='0' cellspacing='0' cellpadding='0'>"; echo "<tr>"; echo "<td width='250' height='141' valign='middle'><div align='center'><img src='produtos/".$img."' border='0' width='189' height='141' /></div></td>"; echo "</tr>"; echo "<tr>"; echo "<td>"; echo "<table width='92%' border='0' align='center' cellpadding='0' cellspacing='0'>"; echo "<tr>"; echo "<td><div align='center' style='font-size:10px;font-family:Verdana'><strong><a href='carrinho.php?cod=".$cod."&acao=incluir'>".$nome."</a></strong></div><strong><div align='center'><font color='#FF0000' size='4px'> R$ ".$preco." </font></strong></div></td>"; echo "</tr>"; echo "<tr>"; echo "<td><div align='center' style='font-size:10px;font-family:Verdana'><a href='carrinho.php?cod=".$cod."&acao=incluir'><img src='imgs/add_carrinho.jpg' border='0'/></a></div><br></td>"; echo "</tr>"; echo "</table>"; echo "</td>"; echo "</tr>"; echo "</table>"; // Aqui é o final do conteudo echo "</td>"; if ( $intCont == $pNumColunas-1 ) { echo "</tr>\n"; } else { $i++; } } } echo ('</table>'); } ?> </div> </body> </html> Após algumas linhas de código, o resultado do arquivo produtos.php é a imagem abaixo, isso é porque eu defini apenas 2 colunas a serem listadas e de forma aleatória que foi definido no nosso SQL usando RAND(). http://www.revistaphp.com.br/arquivos/Image/carlosjr/carrinho_001.jpg Esse arquivo principal do nosso sistema e que é nosso objetivo principal, e como no decorrer do artigo vamos usar muita session_id(), vamos relembrar mais uma vez. session_id(): Retorna o id de sessão para a sessão atual ou uma string vazia ("") se não houver sessão atual (não existe um id de sessão atual). Logo no início iniciamos nossa sessão que será de fundamental importância no carrinho, sem isso nosso carrinho não irá funcionar. Repare que nas linhas abaixo, recuperamos os parâmetros código do produto e a ação usada. $acao = $_GET['acao']; $cod = $_GET['cod']; A variável $acao indicará ao nosso código o que fazer, que poderá ser incluir, excluir ou modificar os dados do carrinho. Ação incluir Logo no começo verificamos se a $acao é igual a incluir se for incluir temos que verificar se veio algum produto para incluirmos no nosso carrinho, caso tenha algum produto, verificamos se o conteúdo da variável é numérica. OBS: Temos que lembrar que mesmo atendendo os dois quesitos ainda temos que verificar se esse produto já não está no carrinho e assim evitarmos incluir produtos repetidos no carrinho, porém repare que usamos a condição abaixo. AND tbl_carrinho.sessao = '".session_id()."' Essa condição é para garantir que não terá um produto repetido no carrinho para uma determinada pessoa que é nosso session_id(). Podemos observar ainda que mesmo atendendo os 3 quesitos, ainda verifico se o produto que a pessoa deseja incluir existe em nossa base de dados, isso evita a pessoa mudar manualmente um código do produto na URL e se atender esse último quesito, aí sim fazemos nosso insert na base de dados. Ação excluir Nos 3 primeiros IF eu verifico se a ação é excluir, se for passo para verificar se existe algum conteúdo na variável $cod que é a variável do nosso produto e verificamos se é do tipo numérico. Após fazermos as 2 verificações acima, devemos ver se o produto a ser excluído existe mesmo no nosso carrinho para a session_id() atual. Se a variável $totalRows_rs_car for maior do que zero, é porque existe o produto a ser excluído, então excluímos o produto com o código e session_id() definido. Ação modificar Antes de entrar em mais detalhes devemos reparar no código HTML a linha abaixo, pois se reparar definimos um nome igual a qtd que é um array com os valores das quantidades dos produtos que iremos modificar e como esse campo é comum a todos os produtos então usamos um array com os campos chave dos produtos. <input type"text" size="2" name="qtd[<?=$row_rs_produto_carrinho['cod']?>]" value="<?=$row_rs_produto_carrinho['qtd']?>" /> Armazenamos o conteúdo na variável $quant e verificamos se é um array e iniciamos a linha abaixo para percorrer nosso array para modificarmos as quantidades dos produtos caso os valores forem numéricos. foreach($quant as $cod => $qtd) Após a ação modificar simplesmente listamos os produtos do carrinho de compras referente a session_id() atual e dentro do while temos a linha abaixo que pega o preço do produto e multiplica pela quantidade desejada $soma_carrinho += ($row_rs_produto_carrinho['preco']*$row_rs_produto_carrinho['qtd']); Criando o arquivo carrinho.php session_id(): Retorna o id de sessão para a sessão atual ou uma string vazia ("") se não houver sessão atual (não existe um id de sessão atual). <?php // Iniciamos nossa sessão que vai indicar o usuário pela session_id session_start(); include "Connections/conn.php"; // Recuperamos os valores passados por parametros $acao = $_GET['acao']; $cod = $_GET['cod']; // Verificamos se a acao é igual a incluir if ($acao == "incluir") { // Verificamos se cod do produto é diferente de vazio if ($cod != '') { // Se for diferente de vazio verificamos se é numérico if (is_numeric($cod)) { // Tratamos a variavel de caracteres indevidos $cod = addslashes(htmlentities($cod)); // Verificamos se o produto referente ao $cod já está no carrinho para o session id correnpondente $query_rs_carrinho = "SELECT * FROM tbl_carrinho WHERE tbl_carrinho.cod = '".$cod."' AND tbl_carrinho.sessao = '".session_id()."'"; $rs_carrinho = mysql_query($query_rs_carrinho, $conn) or die(mysql_error()); $row_rs_carrinho = mysql_fetch_assoc($rs_carrinho); $totalRows_rs_carrinho = mysql_num_rows($rs_carrinho); // Se o total for igual a zero é sinal que o produto ainda não está no carrinho if ($totalRows_rs_carrinho == 0) { // Aqui pegamos os dados do produto a ser incluido no carrinho $query_rs_produto = "select * from tbl_produtos where cod = '".$cod."'"; $rs_produto = mysql_query($query_rs_produto, $conn) or die(mysql_error()); $row_rs_produto = mysql_fetch_assoc($rs_produto); $totalRows_rs_produto = mysql_num_rows($rs_produto); // Se total for maior que zero esse produto existe e então podemos incluir no carrinho if ($totalRows_rs_produto > 0) { $registro_produto = mysql_fetch_assoc($rs_produto); // Incluimos o produto selecionado no carrinho de compras $add_sql = "INSERT INTO tbl_carrinho (id, cod, nome, preco, qtd, sessao) VALUES ('','".$row_rs_produto['cod']."','".$row_rs_produto['nome']."','".$row_rs_produto['preco']."','1','".session_id()."')"; $rs_produto_add = mysql_query($add_sql, $conn) or die(mysql_error()); } } } } } // Verificamos se a acao é igual a excluir if ($acao == "excluir") { // Verificamos se cod do produto é diferente de vazio if ($cod != '') { // Se for diferente de vazio verificamos se é numérico if (is_numeric($cod)) { // Tratamos a variavel de caracteres indevidos $cod = addslashes(htmlentities($cod)); // Verificamos se o produto referente ao $cod está no carrinho para o session id correnpondente $query_rs_car = "SELECT * FROM tbl_carrinho WHERE cod = '".$cod."' AND sessao = '".session_id()."'"; $rs_car = mysql_query($query_rs_car, $conn) or die(mysql_error()); $row_rs_carrinho = mysql_fetch_assoc($rs_car); $totalRows_rs_car = mysql_num_rows($rs_car); // Se encontrarmos o registro, excluimos do carrinho if ($totalRows_rs_car > 0) { $sql_carrinho_excluir = "DELETE FROM tbl_carrinho WHERE cod = '".$cod."' AND sessao = '".session_id()."'"; $exec_carrinho_excluir = mysql_query($sql_carrinho_excluir, $conn) or die(mysql_error()); } } } } // Verificamos se a ação é de modificar a quantidade do produto if ($acao == "modifica") { $quant = $_POST['qtd']; // Se for diferente de vazio verificamos se é numérico if (is_array($quant)) { // Aqui percorremos o nosso array foreach($quant as $cod => $qtd) { // Verificamos se os valores são do tipo numeric if(is_numeric($cod) && is_numeric($qtd)) { // Fazemos nosso update nas quantidades dos produtos $sql_modifica = "UPDATE tbl_carrinho SET qtd = '$qtd' WHERE cod = '$cod' AND sessao = '".session_id()."'"; $rs_modifica = mysql_query($sql_modifica, $conn) or die(mysql_error()); } } } } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Carrinho de Compras</title> <style type="text/css"> <!-- .style3 {font-size: 10px; font-family: Verdana, Arial, Helvetica, sans-serif; } .style4 { color: #FF0000; font-weight: bold; } --> </style> </head> <body> <div align="center"><img src="imgs/carrinho.jpg" width="589" height="102" /> </div> <form action="carrinho.php?acao=modifica" method="post"> <table width="100%" border="1" cellspacing="0" cellpadding="0"> <tr> <th width="36%" scope="col"><div align="left">PRODUTO</div></th> <th width="22%" scope="col">PREÇO</th> <th width="13%" scope="col">QUANTIDADE</th> <th width="14%" scope="col">SUBTOTAL</th> <th width="15%" scope="col"> </th> </tr> <? $sql_meu_carrinho = "SELECT * FROM tbl_carrinho WHERE sessao = '".session_id()."' ORDER BY nome ASC"; $exec_meu_carrinho = mysql_query($sql_meu_carrinho, $conn) or die(mysql_error()); $qtd_meu_carrinho = mysql_num_rows($exec_meu_carrinho); if ($qtd_meu_carrinho > 0) { $soma_carrinho = 0; while ($row_rs_produto_carrinho = mysql_fetch_assoc($exec_meu_carrinho)) { $soma_carrinho += ($row_rs_produto_carrinho['preco']*$row_rs_produto_carrinho['qtd']); ?> <tr> <td><span class="style3"> <?=$row_rs_produto_carrinho['nome']?> </span></td> <td><div align="center" class="style3"><?= number_format($row_rs_produto_carrinho['preco'],2,",","."); ?></div></td> <td><div align="center" class="style3"><input type"text" size="2" name="qtd[<?=$row_rs_produto_carrinho['cod']?>]" value="<?=$row_rs_produto_carrinho['qtd']?>" /></div></td> <td><div align="center" class="style3"><?= number_format($row_rs_produto_carrinho['preco']*$row_rs_produto_carrinho['qtd'],2,",","."); ?></div></td> <td><div align="center"><a href="carrinho.php?cod=<?=$row_rs_produto_carrinho['cod']?>&acao=excluir"><img src="imgs/del_carrinho.jpg" width="110" height="21" border="0" /></a></div></td> </tr> <? } } ?> <tr> <td colspan="3"><div align="right"><strong>TOTAL:</strong> </div> <div align="right"></div> <div align="right"></div></td> <td><div align="center" class="style3 style4"> <?= number_format($soma_carrinho,2,",","."); ?></div></td> <td> </td> </tr> <tr> <td colspan="5"><table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <th width="33%" height="60" scope="col"><span class="style3"><a href="produtos.php"><img src="imgs/comprando.jpg" width="287" height="40" border="0" /></a></span></th> <th width="33%" scope="col"> </th> <th width="34%" scope="col"><label> <input type="image" name="imageField" src="imgs/atualizar.jpg" /> </label></th> </tr> </table></td> </tr> </table> </form> </body> </html> Resultado do Carrinho após incluir 2 produtos e modificar a quantidade de um deles Bom pessoal, espero que tenham gostado, aguardo comentários. Abs Carlos Silva Jr jQuery Magazinewww.jquerymagazine.com.br-------------------------------Revista PHPwww.revistaphp.com.br Link to comment Share on other sites More sharing options...
DiguiVirus Posted July 31, 2007 at 01:08 AM Report Share #120950 Posted July 31, 2007 at 01:08 AM Mega post... Julgo que existem formas mais fáceis, mas gostei muito, sim senhor! 😉 www.videosloucos.net Link to comment Share on other sites More sharing options...
anuska Posted June 9, 2008 at 04:36 PM Report Share #190283 Posted June 9, 2008 at 04:36 PM tenho uma duvida!! onde coloco o codigo Populando a tabela tbl_produtos Código INSERT INTO `tbl_produtos` ( `cod` , `nome` , `img` , `preco` ) VALUES ( NULL , 'Notebook HP 2160br', '001.jpg', '5450' ), ( NULL , 'Computador HP', '002.jpg', '1400' ); ?obrigada pela ajuda Link to comment Share on other sites More sharing options...
zero-cool Posted June 9, 2008 at 05:47 PM Report Share #190309 Posted June 9, 2008 at 05:47 PM tenho uma duvida!! onde coloco o codigo Populando a tabela tbl_produtos Código INSERT INTO `tbl_produtos` ( `cod` , `nome` , `img` , `preco` ) VALUES ( NULL , 'Notebook HP 2160br', '001.jpg', '5450' ), ( NULL , 'Computador HP', '002.jpg', '1400' ); ?obrigada pela ajuda É código para executar no MySql usando o PhpMyAdmin ou algo semelhante na base de dados do teu servidor, para criar as bases de dados onde serão armazenadas as informações. Link to comment Share on other sites More sharing options...
anuska Posted June 11, 2008 at 11:14 PM Report Share #190797 Posted June 11, 2008 at 11:14 PM obrigada 😉 ja vi onde se insere Link to comment Share on other sites More sharing options...
anuska Posted June 12, 2008 at 01:04 PM Report Share #190873 Posted June 12, 2008 at 01:04 PM Ola! tenho outra duvida 👍 da-me este erro: Fatal error: Call to undefined function GeraColunas() in C:\wamp\www\tdw\produtos.php on line 38 nao sei como resolber onrgada 😛 Link to comment Share on other sites More sharing options...
fnds Posted June 12, 2008 at 01:39 PM Report Share #190879 Posted June 12, 2008 at 01:39 PM Fizes-te import do ficheiro? Link to comment Share on other sites More sharing options...
anuska Posted June 12, 2008 at 04:02 PM Report Share #190908 Posted June 12, 2008 at 04:02 PM Importei o ficheiro para a base de dados, e corri o Wamp, ao executar a pagina produto.php da-me o seguinte erro: Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'username'@'localhost' (using password: YES) in C:\wamp\www\artigos\Connections\conn.php on line 8 Erro ao conectar ao MySQL. Link to comment Share on other sites More sharing options...
Ivo Pereira Posted August 25, 2008 at 06:56 PM Report Share #206814 Posted August 25, 2008 at 06:56 PM Importei o ficheiro para a base de dados, e corri o Wamp, ao executar a pagina produto.php da-me o seguinte erro: Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'username'@'localhost' (using password: YES) in C:\wamp\www\artigos\Connections\conn.php on line 8 Erro ao conectar ao MySQL. Username/password erradas, ou até pode ser o servidor. Link to comment Share on other sites More sharing options...
TheGlorious Posted August 27, 2008 at 04:02 PM Report Share #207196 Posted August 27, 2008 at 04:02 PM Bom post ! Mas, deverias colocar os créditos (: A inteligência não nasce connosco... Link to comment Share on other sites More sharing options...
tiagojmartins Posted December 28, 2008 at 04:22 PM Report Share #234685 Posted December 28, 2008 at 04:22 PM alguém já experimentou este tutorial utilizando o wamp server e dreamweaver cs3 / cs4? surge-me este erro na página produtos.php, alguém sabe o que poderei fazer para resolver isto? é importante dizer que fiz a connection à base de dados tal como indica no tutorial obrigado desde já Link to comment Share on other sites More sharing options...
Knitter Posted December 28, 2008 at 04:38 PM Report Share #234686 Posted December 28, 2008 at 04:38 PM Estás a aceder directamente ao ficheiro PHP sem que o mesmo seja processado pelo processador de PHP e servido pelo apache. Não podes abrir o ficheiro com o browser tens de aceder ao url do site que estás a usar. www.sergiolopes.eu Link to comment Share on other sites More sharing options...
djthyrax Posted December 28, 2008 at 05:16 PM Report Share #234696 Posted December 28, 2008 at 05:16 PM Estás a aceder directamente ao ficheiro PHP sem que o mesmo seja processado pelo processador de PHP e servido pelo apache. Não podes abrir o ficheiro com o browser tens de aceder ao url do site que estás a usar. Exacto. Experimenta http://127.0.0.1/carrinho/produtos.php ou http://127.0.0.1/www/carrinho/produtos.php (deve ser a primeira hipótese). Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum! Link to comment Share on other sites More sharing options...
fnx_killer Posted January 18, 2009 at 09:32 PM Report Share #239103 Posted January 18, 2009 at 09:32 PM Boas! Sou iniciante em php, e ao tentar seguir este tutorial surge-me o seguinte problema ao adicionar um produto ao carrinho de compras: uma pagina em branco com este texto Incorrect integer value: '' for column 'id' at row 1 no error_log surge-me isto: [18-Jan-2009 21:21:10] PHP Notice: Undefined index: cod in C:\Apache\htdocs\carrinho.php on line 44 [18-Jan-2009 21:21:10] PHP Notice: Undefined index: nome in C:\Apache\htdocs\carrinho.php on line 44 não sei se estará relacionado... se puderem ajudar, agradecia 🙂 Link to comment Share on other sites More sharing options...
Quadrado Posted February 14, 2009 at 04:55 PM Report Share #244489 Posted February 14, 2009 at 04:55 PM Este manual para o meu projecto actual estava a dar-me jeito o problema é que não está a funcionar... ? Será? Porquê? O quê? - Estudar Sempre - Link to comment Share on other sites More sharing options...
Daniivo Posted February 22, 2011 at 07:16 PM Report Share #370758 Posted February 22, 2011 at 07:16 PM este esta +/- mas ja que copias-te podias melhorar um bocadinho... tags iniciadas de forma "<?" da erros como http://img150.imageshack.us/img150/4392/screen1eq2.png nao custa muito corrigir para "<?php" ha uma questão que ultrapassa os meus conhecimentos que é "<?=" isto faz o que? isto existe as minhas variáveis nao estão a receber qualquer valor!! alguém podia me esclarecer esta duvida. comp Daniel Link to comment Share on other sites More sharing options...
yoda Posted February 23, 2011 at 02:02 PM Report Share #370932 Posted February 23, 2011 at 02:02 PM este esta +/- mas ja que copias-te podias melhorar um bocadinho... tags iniciadas de forma "<?" da erros como http://img150.imageshack.us/img150/4392/screen1eq2.png nao custa muito corrigir para "<?php" ha uma questão que ultrapassa os meus conhecimentos que é "<?=" isto faz o que? isto existe as minhas variáveis nao estão a receber qualquer valor!! alguém podia me esclarecer esta duvida. comp Daniel <? são short tags, e funcionam desde que tenhas isso activo no PHP. A imagem que puseste também não ajuda, não é assim que se acede aos ficheiros. before you post, what have you tried? - http://filipematias.info sense, purpose, direction Link to comment Share on other sites More sharing options...
Valerio96 Posted June 13, 2015 at 04:52 PM Report Share #584771 Posted June 13, 2015 at 04:52 PM (edited) Olá, gostei do carrinho mas tenho um problema, não me esta a mostrar a tabela com os dados, apenas aparece o botão de continar a compra e o botão de atualizar compra. <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <link rel="stylesheet" href="projeto_teste_css.css"> </head> <body> <div id="header"> <h1> <style type="text/css"> img#f1 {width:3cm; height:3cm;} </style> <a href="index.php"><img id="f1" src="logo1.png"></a> </h1> </div> <div id="navigation"> <ul> <li><a href="login.php">Voltar</a></li> <li><a href="logout.php">Sair</a></li> </ul> </div> <div id="content-container"> <div id="content"> <?php if(isset($_GET['id_produto'])) { session_start(); $link=mysqli_connect ("localhost","root","") or die ("Não consegue ligar à base dados" . mysqli_error()); mysqli_select_db($link,"mercearia"); $acao=$_GET['acao']; $id_produto=$_GET['id_produto']; if ($acao == "incluir") { $id_produto = addslashes(htmlentities($id_produto)); $query_rs_carrinho = "SELECT * FROM vendas WHERE id_produto = '".$id_produto."' AND sessao = '".session_id()."'"; $rs_carrinho = mysql_query($query_rs_carrinho, $conn) or die(mysql_error()); $row_rs_carrinho = mysql_fetch_assoc($rs_carrinho); $totalRows_rs_carrinho = mysql_num_rows($rs_carrinho); if ($totalRows_rs_carrinho == 0) { // Aqui pegamos os dados do produto a ser incluido no carrinho $query_rs_produto = "select * from produtos where id_produto = '".$id_produto."'"; $rs_produto = mysql_query($query_rs_produto, $conn) or die(mysql_error()); $row_rs_produto = mysql_fetch_assoc($rs_produto); $totalRows_rs_produto = mysql_num_rows($rs_produto); // Se total for maior que zero esse produto existe e então podemos incluir no carrinho if ($totalRows_rs_produto > 0) { $registro_produto = mysql_fetch_assoc($rs_produto); // Incluimos o produto selecionado no carrinho de compras $add_sql = "INSERT INTO vendas (id_produto, nome, preco, quantidade, sessao) VALUES ('','".$row_rs_produto['id_produto']."','".$row_rs_produto['nome']."','".$row_rs_produto['preco']."','1','".session_id()."')"; $rs_produto_add = mysql_query($add_sql, $conn) or die(mysql_error()); } } } if ($acao == "excluir") { $cod = addslashes(htmlentities($cod)); $query_rs_car = "SELECT * FROM vendas WHERE id_produto = '".$id_produto."' AND sessao = '".session_id()."'"; $rs_car = mysql_query($query_rs_car, $conn) or die(mysql_error()); $row_rs_carrinho = mysql_fetch_assoc($rs_car); $totalRows_rs_car = mysql_num_rows($rs_car); if ($totalRows_rs_car > 0) { $sql_carrinho_excluir = "DELETE FROM vendas WHERE id_produto = '".$id_produto."' AND sessao = '".session_id()."'"; $exec_carrinho_excluir = mysql_query($sql_carrinho_excluir, $conn) or die(mysql_error()); } } if ($acao == "modifica") { $quant = $_POST['quantidade']; // Se for diferente de vazio verificamos se é numérico if (is_array($quant)) { // Aqui percorremos o nosso array foreach($quant as $id_produto => $quantidade) { // Verificamos se os valores são do tipo numeric if(is_numeric($id_produto) && is_numeric($quantidade)) { // Fazemos nosso update nas quantidades dos produtos $sql_modifica = "UPDATE vendas SET quantidade = '$quantidade' WHERE id_produto = '$id_produto' AND sessao = '".session_id()."'"; $rs_modifica = mysql_query($sql_modifica, $conn) or die(mysql_error()); } } } } ?> <form action="carrinho.php?acao=modifica" method="post"> <table width="100%" border="1" cellspacing="0" cellpadding="0"> <tr> <th width="36%" scope="col"><div align="left">PRODUTO</div></th> <th width="22%" scope="col">PREÇO</th> <th width="13%" scope="col">QUANTIDADE</th> <th width="14%" scope="col">SUBTOTAL</th> <th width="15%" scope="col"> </th> </tr> <?php $sql_meu_carrinho = "SELECT * FROM vendas WHERE sessao = '".session_id()."' ORDER BY nome ASC"; $exec_meu_carrinho = mysql_query($sql_meu_carrinho, $conn) or die(mysql_error()); $qtd_meu_carrinho = mysql_num_rows($exec_meu_carrinho); if ($qtd_meu_carrinho > 0) { $soma_carrinho = 0; while ($row_rs_produto_carrinho = mysql_fetch_assoc($exec_meu_carrinho)) { $soma_carrinho += ($row_rs_produto_carrinho['preco']*$row_rs_produto_carrinho['quantidade']); ?> <tr> <?=$row_rs_produto_carrinho['nome']?> <td><div align="center"><?= number_format($row_rs_produto_carrinho['preco']); ?></div></td> <td><div align="center"><input type"text" size="2" name="quantidade[<?=$row_rs_produto_carrinho['id_produto']?>]" value="<?=$row_rs_produto_carrinho['quantidade']?>" /></div></td> <td><div align="center"><?= number_format($row_rs_produto_carrinho['preco']*$row_rs_produto_carrinho['quantidade']); ?></div></td> <td><div align="center"><a href="carrinho.php?id_produto=<?=$row_rs_produto_carrinho['id_produto']?>&acao=excluir"><img src="imagens/excluir.jpg" width="110" height="21" border="0" /></a></div></td> </tr> <?php } } ?> <tr> <td colspan="3"><div align="right"><strong>TOTAL:</strong> </div> <div align="right"></div> <div align="right"></div></td> <td><div align="center"> <?= number_format($soma_carrinho,2,",","."); }?></div></td> <td> </td> </tr> <tr> <td colspan="5"><table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <th width="33%" height="60" ><a href="produtos.php"><img src="imagens/continuar.png" width="100" height="20" border="0" /></a></span></th> <th width="33%"> </th> <th width="34%"><label> <input type="image" name="imageField" src="imagens/refresh.png" width="100" height="20" /> </label></th> </tr> </table></td> </tr> </table> </form> </div> </div> <div id="Categorias "> <ul> <li><a href="index.php?id_categoria=1">Farinhas</a></li> <li><a href="index.php?id_categoria=2">Sobremesas</a></li> <li><a href="index.php?id_categoria=3">Especiarias</a></li> <li><a href="index.php?id_categoria=4">Massas</a></li> <li><a href="index.php?id_categoria=5">Molhos</a></li> </ul> </div> <p> </p> </div> <div id="footer"> Copyright © Green Market, 2015 </div> </div> </div> </body> </html> Edited June 13, 2015 at 05:43 PM by thoga31 Tags code + GeSHi Link to comment Share on other sites More sharing options...
condiolov Posted March 18, 2018 at 01:38 PM Report Share #609813 Posted March 18, 2018 at 01:38 PM Bom dia Galera!! Estou construindo um programa de estoque e esses código me serviram muito bem! Pois guarda as compras no banco de dados, porem como faço tudo da mesma maquina o "session_id()" sempre é o mesmo. Explicar melhor: Tenho itens no estoque que preciso dar baixa (venda) e itens que dou baixa caso precise (Serviço), resumindo as vendas são concluídas ou não. Preciso de algo que crie uma sessão diferente pra cada carrinho, alguem pode me dar uma ideia? Acesso do mesmo pc. Estou agarrado nisso!! Alguem me da uma ajuda?? Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted March 18, 2018 at 02:05 PM Report Share #609814 Posted March 18, 2018 at 02:05 PM 26 minutes ago, condiolov said: Bom dia Galera!! Estou construindo um programa de estoque e esses código me serviram muito bem! Pois guarda as compras no banco de dados, porem como faço tudo da mesma maquina o "session_id()" sempre é o mesmo. Explicar melhor: Tenho itens no estoque que preciso dar baixa (venda) e itens que dou baixa caso precise (Serviço), resumindo as vendas são concluídas ou não. Preciso de algo que crie uma sessão diferente pra cada carrinho, alguem pode me dar uma ideia? Acesso do mesmo pc. Estou agarrado nisso!! Alguem me da uma ajuda?? Que? IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
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