Jump to content
Fórum Script Brasil
  • 0

[Ajuda Por Favor] Formulário de Email e Carrinho


khayro

Question

tenho 3 duvidas.

bom, to mexendo com carrinho de compras, ai a unica forma de mandar os pedidos que eu encontrei, foi colocando os pedidos da session dentro de um textbox, segue o código

<input name="produtos" type="text" class="area" id="circuito" value="<?php print_r ($_SESSION['carrinho']); ?>" size="150"/>
e colocando aquele codigo ali, o pedido aparece assim: Array( [0] => Array ( [id] => 41057 [nome] => ZOLMICOL 20MG CREME 30G (CETOCONAZOL) [qtde] => 1 )) o que eu preciso é ID, NOME, QUANTIDADE, só que aparece esses espaços, Arrays, tracos, coisas que oculpam espaço, e acaba limitando mais meu email. quando coloco um três pedidos fica assim : Array( [0] => Array ( [id] => 41916 [nome] => ZITROMICIN 500 MG C/3 COMP. (AZITROMICINA) [qtde] => 1 ) [1] => Array ( [id] => 41057 [nome] => ZOLMICOL 20MG CREME 30G (CETOCONAZOL) [qtde] => 1 ) [2] => Array ( [id] => 41852 [nome] => ZOLPROX 500MG C/3 COMP. [qtde] => 1 )) e eu queria enviar isso por email, só que o gmail diz que o link é mt grande e não deixa enviar .. 2º queria saber como eliminar os espaços e os "Array( [0] => Array (" das linhas de envio. e se desse, eu queria que me dissessem como diminuir isso, para apenas Id: Nome: Qtd: facilitaría, porque como ta agora, demora um pouco pra discernir oque é o pedido ... aqui o meu classe/carrinho.php
<?php
#############################################
#                                           #
# Autor: Roberto Beraldo Chaiben (Beraldo)  #
#      E-Mail: rbchaiben@gmail.com          #
#                                           #
#############################################

/*
   Classe para manipulação de carrinhos de compras, com funções para adicionar produtos, remover produtos, alterar a quantidade de cada produto e cáuculo do valor total da compra.
*/

class Carrinho
{

    /*
       Função AdicionarProduto($id)
       Adiciona ao carrinho o produto cujo id na tabela produtos seja $id, passado como parâmetro da função.
       Se o id for inválido (NULL ou ''), axibe um alerta e retorna FALSE.
       Se o produto já estiver no carrinho, exibe um alerta e retorna FALSE.
    */

    public function AdicionarProduto($id)
    {
        if ($id == NULL || $id == '' || $id == 0)
        {
            echo "
            <script type=\"text/javascript\">
            alert ('O id do produto deve ser inteiro e maior que zero');
            </script>";
            return false;
        }

        /*
           A função ArrayCarrinho() retorna um array com os id's dos produtos e suas respectivas chaves no array $_SESSION['carrinho'].
        */
        $aCar = ArrayCarrinho();
        if (in_array ($id, $aCar))
        {
            echo "
            <script type=\"text/javascript\">
            alert ('O produto que você selecionou já está em seu carrinho de compras.\\n Para adicionar outra unidade, altere a quantidade do produro.');
            </script>
            ";
            return false;
        }

        $my = new MySQLiConnection();
        $sql = $my->query ("Select * From produtos Where id = ".$id);

        if ($sql->num_rows == 0)
        {
            echo "
            <script type=\"text/javascript\">
            alert ('Não foi encontrado um produto com esse id.');
            </script>";
            return false;
        }

        $f = $sql->fetch_object();
        $cod = $f->id;
        $nome = $f->nome;
        $preço = $f->preço;
        $desc = $f->descricao;

        //próxima chave de $_SESSION['carrinho']:
        $k = isset ($_SESSION['carrinho']) ? count ($_SESSION['carrinho']) : 0;

        $_SESSION['carrinho'][$k]['id'] = $cod;
        $_SESSION['carrinho'][$k]['nome'] = $nome;
        $_SESSION['carrinho'][$k]['qtde'] = 1;

        //ordena $_SESSION['carrinho'] por nome de produto:
        sort ($_SESSION['carrinho'], SORT_STRING);

    }


    /*
       Função RemoverProduto($id)
       Remove de $_SESSION['carrinho'] o produto cujo id na tabela produtos é $id, passado como parâmetro da função.
       Se o id for inválido (NULL ou ''), exibe um alerta e retorna FALSE.
    */

    public function RemoverProduto($id)
    {
        if ($id == NULL || $id == '' || $id == 0)
        {
            echo "
            <script type=\"text/javascript\">
            alert ('O id do produto deve ser inteiro e maior que zero');
            </script>";
            return false;
        }

        // encontra a chave cujo id é o passado na função e o coloca na variável $k
        $aCar = ArrayCarrinho();
        $k = array_search ($id, $aCar);

        unset ($_SESSION['carrinho'][$k]);
        if (count ($_SESSION['carrinho']))//se ainda houver produtos no carrinho
        {
            //organiza as chaves do array desde zero até (count ($_SESSION['carrinho']) - 1)
            $car_keys = range (0, (count ($_SESSION['carrinho']) - 1));
            $_SESSION['carrinho'] = array_combine ($car_keys, $_SESSION['carrinho']);
        }
        $_SESSION['total'] = $this->Total();

    }


    /*
       Função AlterarQuantidade($id, $n_qtde)
       Altera a quantidade de unidades do produto cujo id é $id para $n_qtde.
       Se o id for inválido (NULL ou ''), exibe um alerta e retorna FALSE.
       Se $n_qtde for maior que zero, altera a quantidade do produto; se for igual ou menor que zero, remove-o do carrinho.
    */


    public function AlterarQuantidade($id, $n_qtde)
    {
        if ($id == NULL || $id == '' || $id == 0)
        {
            echo "
            <script type=\"text/javascript\">
            alert ('O id do produto deve ser inteiro e maior que zero');
            </script>";
            return false;
        }

        if ($n_qtde > 0)
        {
            // encontra a chave cujo id é o passado na função e o coloca na variável $k
            $aCar = ArrayCarrinho();
            $k = array_search ($id, $aCar);

            $_SESSION['carrinho'][$k]['qtde'] = $n_qtde;
            $_SESSION['total'] = $this->Total();



e aqui, o carrinho.php

[code]<?php
$area = isset($_GET['area']) ? $_GET['area'] : NULL;
$acao = isset($_GET['acao']) ? $_GET['acao'] : NULL;
$objCar = new Carrinho;

if ($area == "carrinho")
{

    if ($acao == "adicionar")
    {
        $id = isset ($_GET['id']) ? (int)$_GET['id'] : NULL;
        $objCar->AdicionarProduto ($id);

    }

    if ($acao == "remover")
    {
        $id = isset ($_GET['id']) ? (int)$_GET['id'] : NULL;
        $objCar->RemoverProduto ($id);
    }

    if ($acao == "alt_qtde")
    {
        $id = isset ($_GET['id']) ? (int)$_GET['id'] : NULL;
        $n_qtde = isset ($_POST['qtde_'.$id]) ? (int)$_POST['qtde_'.$id] : 1;
        $objCar->AlterarQuantidade($id, $n_qtde);
    }



    echo "
    <h2>Carrinho de Compras</h2>
    <table width=\"700\" cellpadding=\"2\" cellspacing=\"0\">
      <tr>
        <td width=\"300\" style=\"text-align:center\">Nome</td>
        <td width=\"100\" style=\"text-align:center\">Qunatidade</td>
        <td width=\"60\" style=\"text-align:center;\">Excluir<br />Produto</td>
      </tr>
    ";


    $carrinho = isset ($_SESSION['carrinho']) ? $_SESSION['carrinho'] : array();

    if (count ($carrinho) == 0)
    {
        echo "
        <tr>
          <td colspan=\"5\" style=\"text-align:center\"><strong><em>
            N&atilde;o h&aacute; produtos em seu carrinho de compas.</em></strong>
         </td>
        </tr>
        </table>
        <p><a href=\"?area=produtos\">Ver lista de produtos</a></p>
        ";
    }
    else
    {
           for ($a = 0; $a < count($carrinho); $a++)
        {
            $id = $carrinho[$a]['id'];
            $nome = htmlentities ($carrinho[$a]['nome']);
            $qtde = $carrinho[$a]['qtde'];

            echo "
            <tr>
              <td style=\"border-left: dashed 1px black;\" class=\"celulas\">".$nome."</td>
              <td class=\"celulas\">
              <form action=\"?area=carrinho&amp;acao=alt_qtde&amp;id=".$carrinho[$a]['id']."\"method=\"post\">
              <input type=\"text\" name=\"qtde_".$id."\" value=\"".$qtde."\" style=\"width: 30px;height: 15px;font-size:13px;text-align:center;border:inset 1px black;\" maxlength=\"2\" /><br />
              <input type=\"submit\" value=\"Alterar\" style=\"width: 80px;height: 20px;font-size:13px;margin:0;padding:0;cursor:pointer;background:#ccc;border: inset 1px black\" />
              </form>
              </td>
              <td class=\"celulas\"><a href=\"?area=carrinho&amp;acao=remover&amp;id=" .$id. "\" onclick=\"return ConfirmarExclusaoProduto()\">Excluir</a></td>
            </tr>
            ";
        }// fecha for

           echo "
        <tr>
          <td colspan=\"2\">&nbsp;</td>
        </tr>
        </table>
        <p><a href=\"?area=produtos\">Continuar Comprando</a> | <a href=\"?area=finalizar\">Finalizar Pedido</a></p>
        ";
    }// fecha else
}
?>

desde já, agradeço .. (:

Edited by khayro
Link to comment
Share on other sites

9 answers to this question

Recommended Posts

  • 0

Você usaria apenas um foreach para qualquer quantidade de produtos ...

<?php
foreach($produtos as $produto) {
    echo '<input type="hidden" name="produtos[]" value="{$produto->id}" />';
}
?>

O trecho acima pode ser lido da seguinte forma: "Para cada produto em uma lista de produtos, imprima um campo hidden com id como valor".

Claro que você deve adaptar a sua realidade.

Um abraço.

Edited by Willian Gustavo Veiga
Link to comment
Share on other sites

  • 0

enviar as coisas pelo formulario ele sempre vai pra um provedor de email, como outlook, ou algum site de email já configurado... alguém ai sabe qual é o que manda direto ? que nem precise abrir programa e tal, clicando no enviar ele já envia..

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...