Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Amigos,
Eu tenho uma string de números que são os tamanhos dos aros de um anel disponíveis.
Transformei essa string num array e coloquei num select box para que os clientes
escolham o número certo para seu anel.
O dado é enviado para a página recebe_select.php, mas só chega o número de ordem do array.
Por exemplo, se a pessoa escolhe o número 10, só chega 0; Se escolhe o 12, chega o 1;
se escolhe o 14, chega o 2, etc.
Como eu faço para que chegue o número do aro escolhido e não o número de ordem do array?
Página selectbox_with_array.php
<HTML>
<HEAD>
<TITLE>Documento PHP</TITLE>
</HEAD>
<BODY>
<?php
$aro = "10-12-14-16";
$aux = explode('-',$aro);
?>
<form method="POST" action="recebe_select.php">
<select name="aro">
<option value="">Escolha o nº do aro do anel</option>
<?php
foreach($aux as $key => $value):
echo '<option value="'.$key.'">'.$value.'</option>'; //close your tags!!
endforeach;
?>
</select>
<input type="submit" value="Enviar">
</form>
</BODY>
</HTML>
Página recebe_select.php
<?php
$aro = isset($_POST["aro"])?$_POST["aro"]:FALSE;
print "".$aro."";
?>Grava os valores em uma SESSÃO
Na na ni na não.
Veja, quando você usa o explode ele cria um array indexado. Usando a sintaxe completa do foreach, $key representa os índices mas você não tem índices, estes são gerados automaticamente por explode().
Então quando você monta o dropdown e informa $key como argumento do atributo value, você está propositalmente dizendo que a primeira opção é zero, a segunda 1 e assim por diante.
Você tem, de início, três alternativas para esse problema:
1. Defina seu array manualmente e defina os índices como sendo os valores:
$aro = array( 10 => 10, 12 => 12, 14 => 14, 16 => 16 );
Isso é GAMBIARRA!
2. No programa receptor, use o valor recebido para acessar a matriz criada:
$aro = $aux[ $_POST['aro'] ];
Não chega a ser gambiarra, mas é feio e improdutivo.
3. Use $value como valor do atributo value no HTML:
echo '<option value="'.$value.'">'.$value.'</option>'; //close your tags!!
Não é a melhor maneira, mas das três é a mais plausível.
Bruce, eu preciso do número que o cliente escolher.
Não sei como a sua sugestão pode me ajudar nisso.
>
3. Use $value como valor do atributo value no HTML:
echo '<option value="'.$value.'">'.$value.'</option>'; //close your tags!!
Não é a melhor maneira, mas das três é a mais plausível.
É a mesma coisa que [inline]<option>$value</option>[/inline]
É a mesma coisa que [inline]<option>$value</option>[/inline]
Sério? Todos os browsers informam mesma coisa para o programa independente da versão do PHP?
Supondo que sim, eu não sabia. :thumbsup:
Amigos Bruce, Bruno Augusto, Evandro Oliveira, experimentei echo '<option value="'.$value.'">'.$value.'</option>'; //close your tags!!
e deu certo.
Vou continuar trabalhando e se der algum problema volto a postar.
Por enquanto agradeço muito, mas muito mesmo.
Um abração,
Pienkovski
>
Sério? Todos os browsers informam mesma coisa para o programa independente da versão do PHP?
Supondo que sim, eu não sabia. :thumbsup:
Tem a ver com os browsers, não com o backend. http://www.w3.org/TR/html4/interact/forms.html#adef-value-OPTION
Pois é... Ainda acho mais confiável setar o atributo do que confiar em certos browsers que não precisam nem citar o nome. :assobiando:
Pois é... Ainda acho mais confiável setar o atributo do que confiar em certos browsers que não precisam nem citar o nome. :assobiando:
tbm n conhecia isso rs, geralmente o negocio é id e descrição.
Grava os valores em uma SESSÃO