Ir para conteúdo

POWERED BY:

Arquivado

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

paladino_php

Arrays ainda mais dinâmicos do que já são --'

Recommended Posts

Segue o código completo pra você entender melhor como estou fazendo...

 

<?php
 // Configurações de banco de dados, URL, diretórios e conexão com o banco de dados
 include_once '../../config/config.php';
 
 // Topo do sistema
 include_once DIR.INCLUDES.'topo.php';
 
 // Plugin vendas
 resolverVenda('modulos/sistema/vendas/index', 'cliente', 'frmVendas', 'step2');
?>

                <div class="container-page">
                
                	<?php include_once DIR.INCLUDES.'menu.php'; ?>
                
                    <div class="col-dir">
						<div class="bread_crumb">
                        	<ul>
                            	<li><a href="index">Início</a></li>
                                <li><strong> > </strong><a href="index">Vendas</a></li>
                                <li><strong> > </strong><span>Nova venda de produtos</span></li>
                            </ul>
                        </div><!-- /bread_crumb -->
                        <div class="clear"></div>                        
                        <form id="frmVendas" name="form_vendas" class="frm-vendas">
							<input type="hidden" name="action" value="sendStep1" />
							<fieldset id="data_cliente">
                            	<legend>Configurações da venda</legend>
                                <legend class="subtitulo">Comece a digitar o nome do cliente abaixo ou clique no botão verde e cadastre um novo.</legend>
                                <label for="cliente">
                                	<input type="text" name="cliente" id="cliente" class="home_searchEngine" placeholder="Comece a digitar o nome que serão listado abaixo" />
                                    <p id="cadastrar_cliente_vendas"><a href="cad_clientes?parametro=1&vendas=true" rel="facebox" title="Cadastrar um novo cliente">+</a></p>
                                    <div class="search_response" style="display:none;" id="input_search_country_response"></div>
                                </label>   
                            	<label for="data_emissao">
                 					<input readonly="readonly" type="text" name="data_emissao" id="data_emissao" class="" value="<?php echo date('d/m/Y', time()); ?>" />
                                </label>  
                             	<label for="tipo_venda">
                 					<select name="tipo_venda" id="tipo_venda">
                                    	<option value="0">Selecione o tipo de venda</option>
                                        <option value="1">Retirado no caixa</option>
                                        <option value="2">Delivery</option>
                                        <option value="3">Mesa</option>
                                    </select>
                                </label>                                                           
                            </fieldset>
                            <fieldset id="data_pizza">
                            	<legend>Configurações do pedido(Pizzas)</legend>                           
								<fieldset class="fonte-add-pizza" id="fonte-add-pizza">
									

								</fieldset>
								<p><button type="button">Adicionar pizza</button></p><!--<a href="javascript:void();" id="addPizza">Add Pizza</a>-->
								
								<?php
								// Popula apenas o primeiro select, como implementar isso direto no código abaixo ?? 
								echo "
									<script type=\"text/javascript\">
										$(document).ready(function(){
											$.ajax({
												type: 'post',
												url: 'modulos/sistema/validacao/index',
												data: 'action=spssp',
												dataType: 'json',
												success: function(ret){
													$.each(ret, function(){
														$($(\".sel_pizza\")).html(ret.sucesso);
													});			
												}												
											});							
										});
									</script>";
								?>
								
								<script type="text/javascript">
                                    (function ($){
                                        "use strict";
                                        var template_pizza, template_sabor, $frm_pedido;
										
										// Vai montar o <fieldset> que irá conter o conteúdo de novas pizzas 
									    template_pizza = 
											"<fieldset class=\"fonte-add-pizza\">" +
												"<label class=\"pizza_sabor_principal\">" +
													"<span>Nome da pizza</span>" +
													"<select name=\"sel_pizza[]\" class=\"sel_pizza\">" +
														"<option value=\"0\">Selecione o sabor principal</option>" +
														
													"</select>" +
												"</label>" +
												"<label>" +
													"<span>Tamanho</span>" +
													"<select name=\"sel_tam_pizza[]\" class=\"sel_tam_pizza\">" +
														"<option value=\"0\">Escolha uma opção</option>" +
														"<option value=\"1\">Brotinho</option>" +
														"<option value=\"2\">Pequena</option>" +
														"<option value=\"3\">Média</option>" +
														"<option value=\"4\">Grande</option>" +
														"<option value=\"5\">Maracanã</option>" +
													"</select>" +
												"</label>" +
												"<label>" +
													"<span>Quantidade de sabores</span>" +
													"<select name=\"sel_qtd_sabores[]\" class=\"sel_qtd_sabores\">" +
														"<option value=\"0\">Escolha uma opção</option>" +
														"<option value=\"1\">1</option>" +
														"<option value=\"2\">2</option>" +
														"<option value=\"3\">3</option>" +
														"<option value=\"4\">4</option>" +
													"</select>" + 
												"</label>" +
												
												/*
												 * Loop for, deve interagir enquanto $i for <= 4
												 * Não estou conseguindo interagir o PHP nessa bagaça
												 */
												  
												"<label class=\"sel-sab/*$i*/\">" +
													"<span>Sabor$i</span>" +
													"<select name=\"sel_sabor[][]\" class=\"select\">" +
														"<option value=\"0\">Escolha uma opção</option>" +
																
														/*
														 * Consulta sql, busca os sabores na tabela ger_sabores
														 * Não estou conseguindo interagir o PHP nessa bagaça
														*/
														
													"</select>" +
												"</label>" +
			
												// Fim do loop for
												
											"</fieldset>";
											
                                        function nova_pizza() {
                                            var elemento = $(template_pizza.replace(
                                                "#_number_", $("fieldset", $frm_pedido).length + 1 + ""
                                            ));
                                            $(this.parentNode).before(elemento);
                                            elemento.find("button").on("click", novo_sabor);
                                        }
                                        $(function (){
                                            var $btn_pedido;
                                            $frm_pedido = $("#data_pizza");
                                            $btn_pedido = $frm_pedido.find("button[type=\"button\"]");
                                            $btn_pedido.click("on", nova_pizza).click();
                                        });
                                    }(window.jQuery));
                                </script>
							</fieldset>
							<fieldset id="data_bebidas">
								<legend>Configurações do pedido(Bebidas)</legend>
								<label for="" class="fonte-add" id="fonte-add">
									<select name="bebidas[]" id="sel-beb1">
										<option value="0">Bebidas</option>
										
										<?php
											$sqql_bebidas    = "SELECT * FROM ger_bebidas;";
											$running_bebidas = mysql_query($sqql_bebidas);
											$rows_bebidas    = mysql_num_rows($running_bebidas);
											
											if($rows_bebidas > 0)
												{
													while($linha_bebidas = mysql_fetch_object($running_bebidas))
														{
										?>
										
										<option value="<?php echo $linha_bebidas->nome; ?>"><?php echo $linha_bebidas->nome; ?></option>
										
										<?php }}else{ ?>
										
										<option value="0">Nenhuma bebida cadastrada</option>
										
										<?php } ?>
										
									</select>
									<input type="text" name="qtd_beb[]" placeholder="Qtd" class="qtd_bebidas" />
									<input type="text" name="sabor_beb[]" placeholder="Sabor" class="sabor_bebidas" />
								</label>
								<a href="javascript:void();" id="addBebidas">Add bebida</a>
							</fieldset>
							<fieldset id="data_acrescimos">
								<legend>Configurações do pedido(Acréscimos)</legend>
								<label for="" class="fonte-add-acc" id="fonte-add-acc">
									<select name="acc[]">
										<option value="0">Acréscimos</option>
										
										<?php
											$sqql_acc    = "SELECT * FROM ger_acrescimos;";
											$running_acc = mysql_query($sqql_acc);
											$rows_acc    = mysql_num_rows($running_acc);
											
											if($rows_acc > 0)
												{
													while($linha_acc = mysql_fetch_object($running_acc))
														{
										?>
										
										<option value="<?php echo $linha_acc->nome; ?>"><?php echo $linha_acc->nome; ?></option>
										
										<?php }}else{ ?>
										
										<option value="0">Nenhum acréscimo cadastrado</option>
										
										<?php } ?>
										
									</select>
									<select name="tam_acc[]">
										<option value="">Tamanho</option>
										<option value="Pequeno">Pequena</option>
										<option value="Médio">Média</option>
										<option value="Grande">Grande</option>
										<option value="Maracanã">Maracanã</option>
									</select>
									<input type="text" name="qtd_acc[]" class="qtd_acc" placeholder="Qtd" />
								</label>
								<a href="javascript:void();" id="addAcc">Add acréscimos</a>
							</fieldset>
							<fieldset id="data_observacoes">
								<legend>Configurações do pedido(Observações)</legend>
								<label><textarea name="obs"></textarea></label>
							</fieldset>
							<div class="clear"></div>
							<button type="submit">Próxima etapa</button>
                        </form>
                    </div><!-- /col-dir -->
				</div><!-- /container-page -->

Compartilhar este post


Link para o post
Compartilhar em outros sites

Filtrando o script

 

 

Código jquery completo no post anterior. Apenas trecho com problema:

// Esse select deve servir de referência para os sabores
/*
Caso eu selecione mais de um sabor, por exemplo o array ficará assim no print_r, essa saída está ok

| índice | valor |
|    x   |   1x  |
|    y   |   1y  |

*/
 
"<select name=\"sel_pizza[]\" class=\"sel_pizza\">" +
"<option value=\"0\">Selecione o sabor principal</option>" +
 
<?php
$sp = mysql_query("SELECT * FROM ger_pizzas");
if(mysql_num_rows($sp) > 0)
{
while($l = mysql_fetch_object($sp))
{
$nomes    = $l->nome;
$id       = $l->id;
?>
 
"<option value=\"<?php echo $id; ?>\"><?php echo $nomes; ?></option>" +
 
<?php }} ?>
 
"</select>" +
 
Agora os sabores que deveriam se referenciar pelo índice dos sabores principais, mas não está acontecendo...

 

<?php for($i = 1; $i <= 4; $i++){ ?>


"<label class=\"sel-sab<?php echo $i; ?>\">" +
"<span>Sabor<?php echo $i; ?></span>" +
"<select name=\"sel_sabor[#_i_][]\" class=\"sel_sabores\">" +
"<option value=\"0\">Escolha uma opção</option>" +


<?php
$sp = mysql_query("SELECT * FROM ger_pizzas");
if(mysql_num_rows($sp) > 0)
{
while($l = mysql_fetch_object($sp))
{
$nomes    = $l->nome;
$id       = $l->id;
?>


"<option value=\"<?php echo $id; ?>\"><?php echo $nomes; ?></option>" +


<?php }} ?>


"</select>" +
"</label>" +


<?php } ?>

O print_r nesse esquema, caso sejam selecionados 2 sabores principais é o seguinte:

 

 

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

 

Pra minha infelicidade foi o mais perto que cheguei dessa bagaçinha ... como podem ver não está criando os índices dos sabores principais nos sabores posteriores. Logo perco o controle e ninguém é de ninguém.

 

Onde quero chegar. O exemplo abaixo descreve melhor:

 

 

| índice do sabor principal | valor dos sabores para cada índice principal |
|    0                      |   1,2,3                                      |
|    1                      |   4,5,6                                      |   
 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Misturou coisa antiga com coisa nova. Não alterou pedaços do código que eram necessários.

 

Você precisa adaptar à sua realidade. Pra eu fazer e entregar pronto eu cobro ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu lendo e relendo o post ainda não entendi qual a estrutura que você precisa no html?

 

Seria por exemplo assim?

<form method="post" action="recebe-pedido.php">
	<select name="sel_pizza[]" class="sel_pizza">
		<option value="0">Selecione o sabor principal</option>
        <option value="1">Napolitana</option>
        <option value="2">Portuguesa</option>
    </select>
    <select name="sel_pizza[]" class="sel_pizza">
		<option value="0">Selecione o sabor principal</option>
        <option value="1">Napolitana</option>
        <option value="2">Portuguesa</option>
    </select>
	<input type="submit" value="Enviar"/>
</form>

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.