homepage Welcome to WebmasterWorld Guest from
register, free tools, login, search, pro membership, help, library, announcements, recent posts, open posts,
Become a Pro Member

Home / Forums Index / Code, Content, and Presentation / PHP Server Side Scripting
Forum Library, Charter, Moderators: coopster & jatar k

PHP Server Side Scripting Forum

Difficulty with PHP Arrays and HTML Forms

Msg#: 4431335 posted 2:57 pm on Mar 20, 2012 (gmt 0)

Hello dudes.

I'm pretty new to php ; used to program in c a long time ago.

Well, i've got an form to send a form trough e-mail from an website.

Changed it to my needs (added fields, changed stuff).

now i'm in the 2nd part of the process (submit the form and do some testing). But i'm having many erros while trying to submit it.

The errors are:
"Notice: Undefined variable: acesso_pastas in C:\xampp\htdocs\teste\enviar.php on line 33

Notice: Undefined index: email in C:\xampp\htdocs\teste\enviar.php on line 42

Notice: Undefined index: acesso_teknisa in C:\xampp\htdocs\teste\enviar.php on line 43

Notice: Undefined index: acesso_totvs in C:\xampp\htdocs\teste\enviar.php on line 44

Notice: Undefined index: pastas in C:\xampp\htdocs\teste\enviar.php on line 47

Notice: Undefined index: modulos_totvs in C:\xampp\htdocs\teste\enviar.php on line 48

Notice: Undefined index: modulos_teknisa in C:\xampp\htdocs\teste\enviar.php on line 49

Notice: Undefined index: mod_tek in C:\xampp\htdocs\teste\enviar.php on line 51

Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\teste\enviar.php on line 54

Notice: Undefined variable: modulos_teknisa in C:\xampp\htdocs\teste\enviar.php on line 57

Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\teste\enviar.php on line 57

Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\teste\enviar.php on line 60

Notice: Undefined variable: pastas_acessadas in C:\xampp\htdocs\teste\enviar.php on line 113

Notice: Undefined variable: email in C:\xampp\htdocs\teste\enviar.php on line 150

Notice: Undefined variable: assunto in C:\xampp\htdocs\teste\enviar.php on line 152"

As far i could see it isn't getting my arrays.
A friend of mine suggested me to use extract, but i really would like to use arrays , also for learning. Could someone help me , please :)

i'm posting my code so anyone with time to help can take a look

Thanks in advance


HTML Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<style type="text/css" media="screen">
body {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
margin: 15px;
background: #666;
width: 600px;
padding: 10px;
background: #ccc;
margin-top: 5px;
margin-bottom: 5px;
textarea {
resize: none;
<title> Formulário para criação de contas de usuário</title>
<center><h1>Formulário para criação de contas de usuário</h1></center>
<font color="yellow">Os campos marcados com * são de preenchimento obrigatório.<br /></font>
<form action="enviar.php" method="post">
<label for="nome">Nome Completo*: </label>
<input type="text" name="nome" id="nome" size="60" maxlength="80"/><br />
Sexo:<select name="sexo">
<option value="Masculino">Masculino</option>
<option value="Feminino">Feminino</option>
</select><br />
<label for="setor">Setor*:</label>
<input type="text" name="setor" id="setor" size="15" maxlength="15" />
<label for="funcao">Função*:</label>
<input type="text" name="funcao" id="funcao" size="15" maxlength="15" />
<label for="matricula">Matrícula*:</label>
<input type="text" name="matricula" id="matricula" size="5" maxlength="5" /><br>
<label for="data_adm">Data de admissão:</label>
<input type="text" name="data_adm" id="data_adm" size="10" maxlength="10" /><br>
<label for="ramal">Ramal telefônico:</label>
<input type="text" name="ramal" id="ramal" size="5" /><br><br>
<p><center><h2>Definições de acesso a rede</h1></center></p>
<input type="checkbox" name="pastas[]" id="pastas_doc" value="Documentos" />
<label for="pastas_doc">Documentos</label>
<input type="checkbox" name="pastas[]" id="pastas_pub" value="Publico" />
<label for="pastas_pub">Pastas Públicas</label><br>
<label for="pastas_especificas">Pastas Específicas:</label>
<input type="text" name="pastas_especificas" id="pastas_esp" size="30" maxlength="30" />
Criar conta de e-mail ?
<input type="radio" name="email" id="email_sim" value="sim" />
<label for="email_sim">Sim</label>
<input type="radio" name="email" id="email_nao" value="nao" />
<label for="email_nao">Não</label>
<label for="end_email">Endereço de E-mail:</label>
<input type="text" name="end_email" id="end_email" size="20" maxlength="30" />

<p><center><h2>Definição de acesso a sistemas</center></h2></p>
Acesso ao Teknisa:
<input type="radio" name="acesso_teknisa" id="tek_sim" value="teknisa_sim" />
<label for="tek_sim">Sim</label>
<input type="radio" name="acesso_teknisa" id="tek_nao" value="teknisa_nao" />
<label for="tek_nao">Não</label>

<h3><center>Módulos Teknisa:</h3>
<table border="0" cellpadding="1" cellspacing="1" style="width: 600px;">
<input type="checkbox" name="modulos_teknisa[]" id="mod_tek_producao" value="Produção" />
<label for="mod_tek_produção">Módulo Produção</label><br>
<label for="obs_mod_prod">Observações:</label>
<textarea name="obs_mod_prod" id="obs_mod_prod" rows="2" cols="20"></textarea></td>
<input type="checkbox" name="modulos_teknisa[]" id="mod_tek_compras" value="Compras" />
<label for="mod_tek_compras">Módulo Compras</label><br>
<label for="obs_mod_compras">Observações:</label>
<textarea name="obs_mod_compras" id="obs_mod_compras" rows="2" cols="20"></textarea></td>
<input type="checkbox" name="modulos_teknisa[]" id="mod_tek_contas_pagar" value="Contas a pagar" />
<label for="mod_tek_contas_pagar">Módulo Contas a Pagar</label><br>
<label for="obs_mod_contas_pagar">Observações:</label>
<textarea name="obs_mod_contas_pagar" id="obs_mod_contas_pagar" rows="2" cols="20"></textarea></td>
<input type="checkbox" name="modulos_teknisa[]" id="mod_tek_contas_receber" value="Contas a receber" />
<label for="mod_tek_contas_receber">Módulo Contas a Receber</label><br>
<label for="obs_mod_contas_receber">Observações:</label>
<textarea name="obs_mod_contas_receber" id="obs_mod_contas_receber" rows="2" cols="20"></textarea></td>
<input type="checkbox" name="modulos_teknisa[]" id="mod_tek_contr_banc" value="Controle Bancário" />
<label for="mod_tek_contr_banc">Módulo Controle Bancário</label><br>
<label for="obs_mod_contr_banc">Observações:</label>
<textarea name="obs_mod_contr_banc" id="obs_mod_contr_banc" rows="2" cols="20"></textarea></td>
<input type="checkbox" name="modulos_teknisa[]" id="mod_tek_contr_prod" value="Controle Produção" />
<label for="mod_tek_contr_prod">Módulo Controle Produção</label><br>
<label for="obs_mod_contr_prod">Observações:</label>
<textarea name="obs_mod_contr_prod" id="obs_mod_contr_prod" rows="2" cols="20"></textarea></td>
<input type="checkbox" name="modulos_teknisa[]" id="mod_tek_contabilidade" value="Contabilidade" />
<label for="mod_tek_contabilidade">Módulo Contabilidade</label><br>
<label for="obs_mod_contabilidade">Observações:</label>
<textarea name="obs_mod_contabilidade" id="obs_mod_contabilidade" rows="2" cols="20"></textarea></td>
<input type="checkbox" name="modulos_teknisa[]" id="mod_tek_doc_fisc_ent" value="Documentos Fiscais de Entrada" />
<label for="mod_tek_doc_fisc_ent">Módulo Documentos Fiscais de Entrada</label><br>
<label for="obs_mod_doc_fisc_ent">Observações:</label>
<textarea name="obs_mod_doc_fisc_ent" id="obs_mod_doc_fisc_ent" rows="2" cols="20"></textarea></td>
<input type="checkbox" name="modulos_teknisa[]" id="mod_tek_doc_fisc_saida" value="Documentos Fiscais de Saída" />
<label for="mod_tek_doc_fisc_saida">Módulo Documentos Fiscais de Saída</label><br>
<label for="obs_mod_doc_fisc_saida">Observações:</label>
<textarea name="obs_mod_doc_fisc_saida" id="obs_mod_doc_fisc_saida" rows="2" cols="20"></textarea></td>
<input type="checkbox" name="modulos_teknisa[]" id="mod_tek_gestao_qualif" value="Gestão de Qualificação" />
<label for="mod_tek_gestao_qualif">Gestão de Qualificação</label><br>
<label for="obs_mod_tek_gestao_qualif">Observações:</label>
<textarea name="obs_mod_gestao_qualif" id="obs_mod_gestao_qualif" rows="2" cols="20"></textarea></td>
<input type="checkbox" name="modulos_teknisa[]" id="mod_tek_expedicao" value="Expedição" />
<label for="mod_tek_expedicao">Expedição</label><br>
<label for="obs_mod_tek_expedicao">Observações:</label>
<textarea name="obs_mod_expedicao" id="obs_mod_expedicao" rows="2" cols="20"></textarea></td>
<input type="checkbox" name="modulos_teknisa[]" id="mod_tek_manutencao" value="Manutenção" />
<label for="mod_tek_manutencao">Manutenção</label><br>
<label for="obs_mod_tek_manutencao">Observações:</label>
<textarea name="obs_mod_manutencao" id="obs_mod_manutencao" rows="2" cols="20"></textarea></td>
<input type="checkbox" name="modulos_teknisa[]" id="mod_tek_pedidos" value="Pedidos" />
<label for="mod_tek_pedidos">Pedidos</label><br>
<label for="obs_mod_tek_pedidos">Observações:</label>
<textarea name="obs_mod_pedidos" id="obs_mod_pedidos" rows="2" cols="20"></textarea></td>
<input type="checkbox" name="modulos_teknisa[]" id="mod_tek_plan_alim_ind" value="Planejamento Alim. Industrial" />
<label for="mod_tek_plan_alim_ind">Planejamento Alim. Industrial</label><br>
<label for="obs_mod_plan_alim_ind">Observações:</label>
<textarea name="obs_mod_plan_alim_ind" id="obs_mod_plan_alim_ind" rows="2" cols="20"></textarea></td>
<input type="checkbox" name="modulos_teknisa[]" id="mod_tek_fiscal" value="Fiscal" />
<label for="mod_tek_fiscal">Planejamento Alim. Industrial</label><br>
<label for="obs_mod_fiscal">Observações:</label>
<textarea name="obs_mod_fiscal" id="obs_mod_fiscal" rows="2" cols="20"></textarea></td>
<input type="checkbox" name="modulos_teknisa[]" id="mod_suprimentos" value="Suprimentos" />
<label for="mod_tek_uprimentos">Suprimentos</label><br>
<label for="obs_mod_uprimentos">Observações:</label>
<textarea name="obs_mod_suprimentos" id="obs_mod_suprimentos" rows="2" cols="20"></textarea></td>
Acesso ao TOTVS:
<input type="radio" name="acesso_totvs" id="totvs_sim" value="totvs_sim" />
<label for="totvs_sim">Sim</label>
<input type="radio" name="acesso_totvs" id="totvs_nao" value="totvs_nao" />
<label for="totvs_nao">Não</label>
<h3>Módulos TOTVS</h3>
<table border="0" cellpadding="1" cellspacing="1" style="width: 600px;">
<input type="checkbox" name="modulos_totvs[]" id="mod_labore" value="Labore" />
<label for="mod_totvs_labore">Labore</label><br>
<label for="obs_mod_totvs_labore">Observações:</label>
<textarea name="obs_mod_totvs_labore" id="obs_mod_totvs_labore" rows="2" cols="20"></textarea></td>
<input type="checkbox" name="modulos_totvs[]" id="mod_chronus" value="Chronus" />
<label for="mod_totvs_chronus">Chronus</label><br>
<label for="obs_mod_totvs_chronus">Observações:</label>
<textarea name="obs_mod_totvs_chronus" id="obs_mod_totvs_chronus" rows="2" cols="20"></textarea></td>
<input type="checkbox" name="modulos_totvs[]" id="mod_vitae" value="Vitae" />
<label for="mod_totvs_vitae">Vitae</label><br>
<label for="obs_mod_totvs_vitae">Observações:</label>
<textarea name="obs_mod_totvs_vitae" id="obs_mod_totvs_vitae" rows="2" cols="20"></textarea></td>
<input type="checkbox" name="modulos_totvs[]" id="mod_portal" value="Portal" />
<label for="mod_totvs_portal">Portal</label><br>
<label for="obs_mod_totvs_portal">Observações:</label>
<textarea name="obs_mod_totvs_portal" id="obs_mod_totvs_portal" rows="2" cols="20"></textarea></td>
<input type="checkbox" name="modulos_totvs[]" id="mod_bi" value="BI" />
<label for="mod_totvs_vie">BI</label><br>
<label for="obs_mod_totvs_bi">Observações:</label>
<textarea name="obs_mod_totvs_bi" id="obs_mod_totvs_bi" rows="2" cols="20"></textarea>
<label for="obs_finais">Considerações Finais:</label>
<textarea name="obs_finais" id="obs_finais" rows="10" cols="60"></textarea><br>
<input type="submit" value="Enviar Formulário" />

PHP Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<style type="text/css" media="screen">
body {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
margin: 15px;
background: #666;

if (!isset($modulos_teknisa)) {
echo "Variável com problema";
Declaração de variáveis referentes a nome, sexo, setor, função, matrícula, ramal, endereço de
e-mail (caso seja selecionado pra criar e-mail), data de admissão, se vai acessar o
teknisa/totvs ou não, pastas a serem acessadas, pastas específicas a serem acessadas
/*if (($nome == "") || ($setor == "") || ($funcao == "") || ($matricula == ""))
echo "<script>alert('Preencha os campos em branco.');</script>";
echo "<script>history.go(-1);</script>";

$nome = $_POST['nome'];
$sexo = $_POST['sexo'];
$setor = $_POST['setor'];
$funcao = $_POST['funcao'];
$matricula = $_POST['matricula'];
$data_adm = $_POST['data_adm'];
$ramal = $_POST['ramal'];
$end_email = $_POST['email'];
$acs_tek = $_POST['acesso_teknisa'];
$acs_totvs = $_POST['acesso_totvs'];
$pastas_especiais = $_POST['pastas_especificas'];
$acesso_pastas = $_POST['pastas'];
$mod_totvs = $_POST['modulos_totvs'];
$mod_tek = $_POST['modulos_teknisa'];
//fim arrays

//Convertendo os Arrays em Strings
foreach ($acesso_pastas as $x)
$acesso_pastas .= $x."<br />";

foreach ($modulos_teknisa as $z)
$mod_tek .= $z."<br />";

foreach ($mod_totvs as $y)
$mod_totvs .= $y."<br />";

//Observações dos Módulos
$obs_mod_tek_prod = nl2br($_POST['obs_mod_prod']);
$obs_mod_tek_compras = nl2br($_POST['obs_mod_compras']);
$obs_mod_tek_contas_pagar = nl2br($_POST['obs_mod_contas_pagar']);
$obs_mod_tek_contas_receber = nl2br($_POST['obs_mod_contas_receber']);
$obs_mod_tek_contr_banc = nl2br($_POST['obs_mod_contr_banc']);
$obs_mod_tek_contr_prod = nl2br($_POST['obs_mod_contr_prod']);
$obs_mod_tek_contabilidade = nl2br($_POST['obs_mod_contabilidade']);
$obs_mod_tek_doc_fisc_ent = nl2br($_POST['obs_mod_doc_fisc_ent']);
$obs_mod_tek_doc_fisc_saida = nl2br($_POST['obs_mod_doc_fisc_saida']);
$obs_mod_tek_gestao_qualif = nl2br($_POST['obs_mod_gestao_qualif']);
$obs_mod_tek_expedicao = nl2br($_POST['obs_mod_expedicao']);
$obs_mod_tek_manutencao = nl2br($_POST['obs_mod_manutencao']);
$obs_mod_tek_pedidos = nl2br($_POST['obs_mod_pedidos']);
$obs_mod_tek_plan_alim_ind = nl2br($_POST['obs_mod_plan_alim_ind']);
$obs_mod_tek_fiscal = nl2br($_POST['obs_mod_fiscal']);
$obs_mod_tek_suprimentos = nl2br($_POST['obs_mod_suprimentos']);
$obs_mod_totvs1 = nl2br($_POST['obs_mod_totvs_labore']);
$obs_mod_totvs2 = nl2br($_POST['obs_mod_totvs_chronus']);
$obs_mod_totvs3 = nl2br($_POST['obs_mod_totvs_vitae']);
$obs_mod_totvs4 = nl2br($_POST['obs_mod_totvs_portal']);
$obs_mod_totvs5 = nl2br($_POST['obs_mod_totvs_bi']);
//Observações Finais
$cns_finais = nl2br($_POST['obs_finais']);

//Transformando os arrays em strings comuns

$para = "helpdesk@pharmascience.com.br";// e-mail que receberá a mensagem
$mensagem = "
<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">
<html xmlns=\"http://www.w3.org/1999/xhtml\">
Nome: <strong>$nome</strong><br />
Sexo: <strong>$sexo</strong><br />
Setor: <strong>$setor</strong><br />
Função: <strong>$funcao</strong><br />
Matrícula: <strong>$matricula</strong><br />
Data de Admissão: <strong>$data_adm</strong><br/ >
Ramal: <strong>$ramal</strong><br />
Pastas a Serem Acessadas: <strong>$pastas_acessadas</strong><br />
Pastas Especiais a Serem Acessadas:<strong>$pastas_especiais</strong><br />
Endereço de E-mail a Ser criado: <strong>$end_email</strong><br />
Acesso ao Teknisa ? <strong>$acs_tek</strong><br />
<br>Módulos Teknisa Selecionados:<br /><strong>$mod_tek</strong><br/><br />

Módulo Produção: <strong>$obs_mod_tek_prod</strong><br>
Módulo Compras: <strong>$obs_mod_tek_compras</strong><br>
Módulo Contas a Pagar: <strong>$obs_mod_tek_contas_pagar</strong><br>
Módulo Contas a Receber: <strong>$obs_mod_tek_contas_receber</strong><br>
Módulo Controle Bancário: <strong>$obs_mod_tek_contr_banc</strong><br>
Módulo Controle Produção: <strong>$obs_mod_tek_contr_prod</strong><br>
Módulo Contabilidade: <strong>$obs_mod_tek_contabilidade</strong><br>
Módulo Documentos Fiscais de Entrada: <strong>$obs_mod_tek_doc_fisc_ent</strong><br>
Módulo Documentos Fiscais de Saída: <strong>$obs_mod_tek_doc_fisc_saida</strong><br>
Módulo Gestão da Qualificação: <strong>$obs_mod_tek_gestao_qualif</strong><br>
Módulo Expedição: <strong>$obs_mod_tek_expedicao</strong><br>
Módulo Manutenção: <strong>$obs_mod_tek_manutencao</strong><br>
Módulo Pedidos: <strong>$obs_mod_tek_pedidos</strong><br>
Módulo Planejamento Alim. Industrial: <strong>$obs_mod_tek_plan_alim_ind</strong><br>
Módulo Fiscal: <strong>$obs_mod_tek_fiscal</strong><br>
Módulo Suprimentos: <strong>$obs_mod_tek_suprimentos</strong></br>
Acesso ao TOTVS ? <strong>$acs_totvs</strong><br />
Módulos TOTVS selecionados: <strong>$mod_totvs</strong><br />
Módulo Labore: <strong>$obs_mod_totvs1</strong><br />
Módulo Chronus: <strong>$obs_mod_totvs2</strong><br />
Módulo Vitae: <strong>$obs_mod_totvs3</strong><br />
Módulo Portal: <strong>$obs_mod_totvs4</strong><br />
Módulo BI: <strong>$obs_mod_totvs5</strong><br />
Considerações Finais: <strong>$cns_finais</strong>
$header = "MIME-Version: 1.0\r\n";
$header .= "Content-type: text/html; charset=iso-8859-15\r\n";
$header .= "From: $nome <$email>";

if (mail ($para, $assunto, $mensagem, $header))
echo "E-Mail enviado!";
echo "Erro ao enviar o E-Mail";



Msg#: 4431335 posted 8:51 pm on Mar 20, 2012 (gmt 0)


Just a few suggestions, and I'll take a stab at it if you can eliminate the css, comments and just keep one or two of the form fields. My Portuguese is a little, well, non-existent but that won't stop me.

So far:

Form field 'acesso_pastas' from the HTML document is blank when the form is submitted to PHP processing, i.e, foreach traversing.

Encapsulating input elements of the same type, for instance, the radio buttons, in fieldsets would enchance readability and you could then use the legend element in place of the <hn> heading element. It's not causing error, just something to consider.

Choosing a default value for input types radio and checkbox may eliminate the 'Undefined index' notice.

I'm not sure about 'name="pastas[]"' intention, but I know the name attribute must be a single token. Someone else may know for sure if this is legal or not.

Just some suggestions, I'm not the php expert here but I need the practice.


WebmasterWorld Senior Member 10+ Year Member

Msg#: 4431335 posted 8:14 am on Mar 23, 2012 (gmt 0)

$acesso_pastas = $_POST['pastas'];

For each of your posted variables try to do something like this:
$acesso_pastas = ''; // default value
if ( isset($_POST) && !empty($_POST['pastas']))
$acesso_pastas = $_POST['pastas']; // posted value
This will eliminate most of your undefined variable issues.


Msg#: 4431335 posted 2:00 pm on Mar 25, 2012 (gmt 0)

$acesso_pastas = $_POST['pastas'];

You have assigned a single value to $acesso_pastas above and trying to use it as an array in foreach. This might be the problem.

Global Options:
 top home search open messages active posts  

Home / Forums Index / Code, Content, and Presentation / PHP Server Side Scripting
rss feed

All trademarks and copyrights held by respective owners. Member comments are owned by the poster.
Home ¦ Free Tools ¦ Terms of Service ¦ Privacy Policy ¦ Report Problem ¦ About ¦ Library ¦ Newsletter
WebmasterWorld is a Developer Shed Community owned by Jim Boykin.
© Webmaster World 1996-2014 all rights reserved