Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá,
Tenho um form onde o usuário pode criar novos campos de texto imput pra inserir mais de um exemplo do item que quer através de JS. Com isso esses campos recebem atributos name e id concatenados com um valor numerico (Ex: campo_0, campo_1, campo_2, etc...). Até aí tudo sussa.
O meu problema começa na hora de recuperar esses dados e gravar no banco, pq não to sabendo fazer o php pra isso (sou meio ruim em php...)
Como vou jogar esses dados em um unico campo da tabela, então preciso tratar os dados pra depois, quando for mostrar de novo, poder separa-los. Fiz assim:
$$eventos_palestras ="";
for($i=0; $i<=$participacoes; $i++){
$eventos_palestras .= "$evento_".$i ."@"."$palestra_".$i."#"; // Aqui é que tá o meu erro...não sei como fazer essa sintaxe.
}
Só pra esclarecer....estou concatenando com o @ e com o # pra depois, quando for mostrar de novo esses dados, dar um explode() nessa string e separa-los de novo. Isso tbm parece estar funfando, pois até o momento esse script tá gravando o valor de $i no banco, sendo que precisava gravar o valor de $evento_0, $evento_1 , $evento_2...
Alguém poderia me ajudar a entender como seria essa sintaxe? Agradeço desde já
>
Faça destes campos um vetor. :D
Coloque todos com o name, por exemplo: campo[]
E na parte servidor, você terá o vetor $_POST['campo'] e com isto você faz uma iteração de tal forma que obtenha os dados e faça o que for.
[]'s
Cara....enquanto você respondia eu tava lendo um outro forum que dizia exatamente isso...rs...só que ainda não me foi suficiente pra entender como faria pra usar dessa forma, pois fiquei com a impressão que iria acabar no mesmo problema.
O form está sendo montado com este JS
function montaOpcoes(){
var values="";
var k;
for(k=0;k<i;k++){
var v_evento = document.getElementById("evento_"+k).value;
var v_palestra = document.getElementById("palestra_"+k).value;
values +="<fieldset style='width:680px;'><label></label>";
values +="<input type='text' name='evento_"+k+"' id='evento_"+k+"' size='40' value="+v_evento+" />";
values +=" - ";
values +="<input type='text' name='palestra_"+k+"' id='palestra_"+k+"' size='40' value="+v_palestra+" />";
values +="</fieldset>";
}
var opcoes = "<fieldset style='width:680px;'><label></label><input type='text' name='evento_"+i+"' id='evento_"+i+"' size='40' /> - <input type='text' name='palestra_"+i+"' id='palestra_"+i+"' size='40' /></fieldset>";
i++;
document.getElementById("op_eventos").innerHTML = values+opcoes;
document.getElementById("participacoes").value=i;
}
e o php que deveria pegar os valores que foram inseridos, tratar com explode e mostrar novamente no form pra poder editar está assim:
$eventos_palestras = explode("#", $dados['Eventos_Palestras']);
$tt_participacoes = count($eventos_palestras);
$edita_eventos = "";
for($i=0;$i<=$tt_participacoes;$i++){
$separa_dados=explode("@",$eventos_palestras[$i]);
$edita_eventos .= "
<fieldset style='width:680px;'>
<label></label>
<input type='text' name='evento_".$i."' id='evento_".$i."' size='40' value=" . $separa_dados[0] . " />
-
<input type='text' name='palestra_".$i."' id='palestra_".$i."' size='40' value=" . $separa_dados[1] . " />
</fieldset>";
}
Ou seja, se for pra usar os names e ids como array, tbm cairia no lance de concatenar variavel na variavel...
resolvi!
a sintaxe que eu tava procurando é esta:
for($i=0; $i<=$participacoes; $i++){
$eventos_palestras .= ${"evento_$i"} ."@".${"palestra_$i"}."#";
}
té +
Faça destes campos um vetor. :D
Coloque todos com o name, por exemplo: campo[]
E na parte servidor, você terá o vetor $_POST['campo'] e com isto você faz uma iteração de tal forma que obtenha os dados e faça o que for.
[]'s