Jump to content

Formulário com Arrays


Inferi
 Share

Recommended Posts

Já não pegava em PHP à uns dois anitos e ando meio enferrujado. Surgiu uma oportunidade de fazer uma brincadeira aqui para o meu chefe.

Então é o seguinte, tenho um formulário em que o utilizador pode inserir páginas pessoais. E adicionar mais se assim o entender.

Mas, dá-me erro na passagem do array do input da página pessoal.

Código php

<td align="left" id="dynamicInput">
<table>
<input type="text" size="25" maxlength="35" name="PagPessoal[]" id="fonttxt">
<img id="add" src="images/add.png" style="cursor: pointer;" onclick="addInput('dynamicInput');" height="15" width="15">
</table>
</td>

Código javascript

fields = 0;
function addInput() {
if (fields != 4) {
document.getElementById('dynamicInput').innerHTML += "<input type='text' size='25' maxlength='35' name='PagPessoal[]' id='fonttxt'><br>";
fields += 1;
} else {
alert ("Apenas são permitidas 5 páginas pessoais.");
document.ajaut.add.disabled=true;
}
}

Código php ao inserir na BD

$pgn = $_POST['PagPessoal'];
$pgnPessoal = implode(";",$pgn);
$sql = ("Insert INTO utilizador (nome, apelido, data_nasc, sexo, morada, codigo_post, localidade, mail, telefone, telemovel, alcunha,
habilitacoes, assocaja, numeroassoc, actividadeprof, organizacao, outrasact, utilidadeut, pgnpessoal, outrasinf)
VALUE ('$_POST[nome]','$_POST[apelido]','$dtNasc','$_POST[sexo]','$_POST[morada]','$codPost','$_POST[localidade]',
'$_POST[mail]','$_POST[telefone]','$_POST[telemovel]','$_POST[alcunha]','$_POST[habilit]','$_POST[assoc]','$_POST[NrAssoc]',
'$_POST[actividades]','$_POST[organ]','$_POST[outrAct]','$_POST[utl]','$pgnPessoal','$_POST[OutrInf]')");
$conn->query ($sql);

Imagem de Erro

aBAX1Yk.png?1

Edited by Inferi
Link to comment
Share on other sites

O erro que te é dado (na imagem) é diferente do que o que nos estás a dizer. Na imagem é dito Undefined Index: PagPessoal[].

O que significa que algures no teu código estavas (estás) a fazer referência a $_POST['PagPessoal[]'] e não a $_POST['PagPessoal'].

<input type="text" size="25" maxlength="35" name="PagPessoal[]">
<input type="text" size="25" maxlength="35" name="PagPessoal[]">
<input type="text" size="25" maxlength="35" name="PagPessoal[]">
<input type="text" size="25" maxlength="35" name="PagPessoal[]">

$paginas = $_POST['PagPessoal'];

foreach($paginas as $pagina)
  echo $pagina . '<br/>';
Link to comment
Share on other sites

apesar de ver dois problema, continuo a achar isso muito estranho, pois não deverá ser deles (provavelmente da maneira como estás a fazer o envio do formulário, código não apresentado)

- primeiro problema:

atributos id são para ser únicos, o que não acontece quando adicionas mais campos

- segundo problema:

o elemeno inserido fica fora da tabela onde se encontra o elemento já existente, fica ao nível após a tabela apresentada

IRC : sim, é algo que ainda existe >> #p@p
Link to comment
Share on other sites

@bioshock Notice: Undefined index: PagPessoal in C:\wamp\www\AJA\pages\insereform.php on line 48

@happyHippyHippo

Então nesse caso como consigo ir buscar os valores dos diversos campos que vão sendo adicionados pelo utilizador?

Tendo em conta que podem ser até 5 campos.

Será preciso do lado do formulario, juntar tudo num campo hiden e depois ir buscar a esse campo com o POST?

Edited by Inferi
Link to comment
Share on other sites

@bioshock Notice: Undefined index: PagPessoal in C:\wamp\www\AJA\pages\insereform.php on line 48

qual é essa linha ?

@happyHippyHippo

Então nesse caso como consigo ir buscar os valores dos diversos campos que vão sendo adicionados pelo utilizador?

Tendo em conta que podem ser até 5 campos.

não necessitas do id para serem enviados pelo formulário

IRC : sim, é algo que ainda existe >> #p@p
Link to comment
Share on other sites

sim, mas preciso do id para os css

usa classes ...

a linha é

$paginas = $_POST['PagPessoal'];

como o bioshock disse, estás a apresentar erros diferentes

u é sonre PagPessoal[] e outro é sobre PagPessoal o que demonstra que o código que apresentaste inicialmente já se encontra alterado.

logo, será impossivel te ajudar sobre o problema por falta de informação correcta

IRC : sim, é algo que ainda existe >> #p@p
Link to comment
Share on other sites

O código está igual.

Neste momento alterei os ID para CLASS e tenho o código assim:

Aqui é o código JS que acrescenta um input text quando o utilizador carrega na imagem "add"

fields = 0;
function addInput() {
 if (fields != 4) {
 document.getElementByClass('dynamicInput').innerHTML += "<input type='text' size='25' maxlength='35' name='PagPessoal[]' class='fonttxt'><br>";
 fields += 1;
 } else {
alert ("Apenas são permitidas 5 páginas pessoais.");
document.ajaut.add.disabled=true;
 }
}  

O HTML


<td align="left" class="dynamicInput">
 <table>
<input type="text" size="25" maxlength="35" name="PagPessoal[]" class="fonttxt">
<img  class="add" src="images/add.png" style="cursor: pointer;" onclick="addInput('dynamicInput');" height="15" width="15">
 </table>
</td>

E o PHP que faz a transição para a BD


$paginas = $_POST['PagPessoal'];
echo $paginas;

E o erro que me dá:

3pDbBdD.png?1

EDIT: Já está a passar o valor, usei o foreach, mas o javascript desde que mudei para class deixou de funcionar e não adiciona nada.

Edited by Inferi
Link to comment
Share on other sites

Array ( [nome] => Diogo [apelido] => Jesus [ano] => 1992 [mes] => 02 [dia] => 07 [sexo] => M [morada] => Ferraria - Rua Principal Nº 12 [codpost] => 3050 [codpost2] => 101 [localidade] => Barcouço [mail] => diogoj_1992@hotmail.com [telefone] => 916837624 [telemovel] => 916837624 [alcunha] => Baixinho [habilit] => 4 [assoc] => S [NrAssoc] => 2355584 [actividades] => Informática [organ] => Pavigrés [outrAct] => Futsal [utl] => Tudo um pouco [OutrInf] => Adoro carros [submit] => Enviar )

Edited by Inferi
Link to comment
Share on other sites

Mostra-nos o HTML do formulário completo.

Até agora tens mostrado apenas um excerto, portanto, eu presumo que estás a fazer algo do género (?):

<form method="POST" action="oTeuUrl.php">
  <input type="text" name="nome"/>
  <input type="text" name="mail"/>
  <!-- etc -->
  <input type="text" name="PagPessoal[]"/>
  <input type="text" name="PagPessoal[]"/>
</form>
Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.