Ir para conteúdo

POWERED BY:

Arquivado

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

sdvivi

Erro com "foreach"!

Recommended Posts

Olá...

Por que aparece esse erro:

 

Warning: Invalid argument supplied for foreach() in c:\apache\htdocs\humanos\admin\editarproc.php on line 406

 

referente a essa passagem do código.

 

Funciona porém dá esse erro!

 

foreach ($_POST["q1"] as $q1)

{

$insere = mysql_query("INSERT into sindicados(codigo, portaria, anoid, q1)

VALUES ('$max','$portaria','$anoid', '$q1')")

or die(mysql_error());

}

Valeu!!

obrigada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

po cara o seu $_POST['q1'] pode estar retornando vazio ou sem vários valores

 

 

se voce esta pegando ele de um checkbox verifique se esta correto.

ex:

 

<input type=checkbox name=q1[] value='teste' />

OS COLCHETES [] São essenciais nesses casos...

 

Vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Vivi,

 

Verifique se você está passando algum valor ao método Post.

 

Ex.:

<?php

echo '<pre>';

print_r($_POST['q1']);

echo '</pre>';

?>

Veja se vai exibir algo.

 

Sucesso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Este q[], é gerado através de uma fç em javascript...

 

Tipo assim, preciso gerar vários inputs, de acordo com a necessidade do cliente

 

Uso

 

<script language="JavaScript">

var mainDivName = 'eventDates';

function addEvent()
{
var ni = document.getElementById(mainDivName);

var numi = document.getElementById('theValue');
var num = (document.getElementById("theValue").value -1)+ 2;
numi.value = num;

var divIdName = "eventDate"+num+"Div";
var newdiv = document.createElement('div');
newdiv.setAttribute("id",divIdName);

newdiv.innerHTML = "<table><tr><td></td><b</b><td width=80 ><b>"+num+". Sindicado:</b></td><td width=100[b]><input type=\"text\" name=\"q1[]\" size=\"50\" onKeyUp=\"checkList(this,arvore)\" id=\"textbox["+num+"]\"> [/b]</td><td><a href=\"#\" onclick=\"removeEvent(\'"+divIdName+"\')\">Remover</a></td> </table> ";

// AQUI SÃO GERADOS OS INPUTS NECESSÁRIOS 

ni.appendChild(newdiv);

}

function removeEvent(divNum)
{
var d = document.getElementById(mainDivName);
var olddiv = document.getElementById(divNum);
d.removeChild(olddiv);
}
</script>

O erro se dá na inserção no BD, insere porém aparece o erro!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então,

 

esse erro é concerteza o metodo $_POST vindo vazio para o foreach....

 

pelo visto o name do seu codigo esta correto

 

verifique se o VALUE esta com conteudo tb

 

abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Gente acho que consegui resolve o problema...

 

Se puderem me ajudar com outra coisinha, vou agradecer... é referente ao mesmo assunto.

 

É o seguinte, este campo esta em um form. Assim insiro nomes no BD de acordo com a necessidade do cliente, só que esse form pode ser editado, assim o campo sindicado pode ter dados ou não.

Se caso tiver dados retorna o mesmo senão dá a opção de depois inserir os dados... porém é ai que dá dando erro...

 

Olhem...

 

<td><div align=\"right\"><b>Sindicado(s):</b></div></td> "; - SE CASO TEM DADOS INSERIDOS NA BD, MOSTRA OS MESMOS

FAÇO O SELECT----

$z = "SELECT c.*, s.codigo, s.anoid, s.q1 FROM tb_cadastroprimeira c, sindicados s WHERE s.codigo LIKE '$codigo' AND s.anoid LIKE '$anoid' AND s.codigo = c.codigo AND s.anoid = c.anoid";
				$y = mysql_query($z);
				while($v = mysql_fetch_array($y)) {
				$q1 = $v["q1"];

				if ($q1!=''){ COLOCO O TESTE AKI!! SE ESTIVER PREENCHIDO ESCREVE O VALOR DE Q1
				echo "
				<td  colspan=\"5\" valign=\"top\"><div align=\"justify\"><font size=\"1\">$q1</font></div></td>
				";
				}
				else { SENÃO DAREIA A OPÇÃO DE INSERIR 
				echo "

			<td colspan=\"5\"> <input type=\"hidden\" value=\"0\" id=\"theValue\">
			<p><a href=\"java script:;\" onClick=\"addEvent();\" class=campos_formulario><b>Adicionar Campos</b></a>
			</P>
			<div id=\"eventDates\"> </div>"; MINHA DÚVIDA É AKI, POIS CONSIGO VIZUALIZAR O CAMPO PARA INSERIR OS DADOS, MAS NÃO ESTOU CONSEGUINDO INSERIR.. TENTEI ASSIM E NÃO DEU CERTO

foreach ($_POST["q1"] as $q1)
{
$insere = mysql_query("INSERT into sindicados(codigo, portaria, anoid, q1)
VALUES ('$max','$portaria','$anoid', '$q1')")
or die(mysql_error());
}


				}
				}

 

 

O QUE VCS ACHAM??!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

O negócio não é o que vocês acham....

 

com isso você conseguiu inserir??

 

se sim pronto PROBLEMA RESOLVIDO...

 

 

Abraços

 

Coloquei "acho", pois não fiz todos os testes necessários...

E diante disso, surgiu outra dúvida referente ao mesmo assunto... ou seja mesmo tópico FOREACH, na inserção dos dados, por isso prolonguei o assunto.

Mas obrigada pela atenção e sutileza.

Att.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O negócio não é o que vocês acham....

 

com isso você conseguiu inserir??

 

se sim pronto PROBLEMA RESOLVIDO...

 

 

Abraços

 

Coloquei "acho", pois não fiz todos os testes necessários...

E diante disso, surgiu outra dúvida referente ao mesmo assunto... ou seja mesmo tópico FOREACH, na inserção dos dados, por isso prolonguei o assunto.

Mas obrigada pela atenção e sutileza.

Att.

 

 

Não me entenda mal...

 

eu tinha ficado feliz por você ter consiguido.....

 

Desculpa se me expressei meio rude...

 

Qual seria sua outra duvida para ver se eu posso te ajudar....

 

Desculpa a forma de falar...

Compartilhar este post


Link para o post
Compartilhar em outros sites

O negócio não é o que vocês acham....

 

com isso você conseguiu inserir??

 

se sim pronto PROBLEMA RESOLVIDO...

 

 

Abraços

 

Coloquei "acho", pois não fiz todos os testes necessários...

E diante disso, surgiu outra dúvida referente ao mesmo assunto... ou seja mesmo tópico FOREACH, na inserção dos dados, por isso prolonguei o assunto.

Mas obrigada pela atenção e sutileza.

Att.

 

 

Não me entenda mal...

 

eu tinha ficado feliz por você ter consiguido.....

 

Desculpa se me expressei meio rude...

 

Qual seria sua outra duvida para ver se eu posso te ajudar....

 

Desculpa a forma de falar...

 

 

No Problem... tudo tranquilo....

Mas a principio consegui resolver o problema sim...

Só que surgiu um outro probleminha sim...

É como relatei acima...

Os nomes são inseridos no BD de acordo com a necessidade do cliente, ou seja, pode ser 01, 02, 03 ou mais, só que esse form pode ser editado, assim o campo sindicado pode ter dados ou não, ou seja o cliente pode cadastrar os dados e deixar para cadastrar os sindicados depois, assim coloquei um IF realizando um teste depois do SELECT...

 

Olha...

 

<td><div align=\"right\"><b>Sindicado(s):</b></div></td> "; - SE CASO TEM DADOS INSERIDOS NA BD, MOSTRA OS MESMOS

FAÇO O SELECT----

$z = "SELECT c.*, s.codigo, s.anoid, s.q1 FROM tb_cadastroprimeira c, sindicados s WHERE s.codigo LIKE '$codigo' AND s.anoid LIKE '$anoid' AND s.codigo = c.codigo AND s.anoid = c.anoid";
$y = mysql_query($z);
while($v = mysql_fetch_array($y)) {
$q1 = $v["q1"];

if ($q1!=''){ COLOCO O TESTE AKI!! SE ESTIVER PREENCHIDO ESCREVE O VALOR DE Q1
echo "
<td colspan=\"5\" valign=\"top\"><div align=\"justify\"><font size=\"1\">$q1</font></div></td>
";
}
else { SENÃO É DADA A OPÇÃO DE INSERIR 
echo "

<td colspan=\"5\"> <input type=\"hidden\" value=\"0\" id=\"theValue\">
<p><a href=\"java script:;\" onClick=\"addEvent();\" class=campos_formulario><b>Adicionar Campos</b></a>
</P>
<div id=\"eventDates\"> </div>"; MINHA DÚVIDA É AKI, POIS CONSIGO VIZUALIZAR O CAMPO PARA INSERIR OS DADOS, MAS NÃO ESTOU CONSEGUINDO INSERIR, OU SEJA GERO OS DADOS MAS NA HORA DE GRAVAR OS DADOS, NÃO ESTA DANDO CERTO.. TENTEI ASSIM 

foreach ($_POST["q1"] as $q1)
{
$insere = mysql_query("INSERT into sindicados(codigo, portaria, anoid, q1)
VALUES ('$max','$portaria','$anoid', '$q1')")
or die(mysql_error());
}


}
}
O QUE você ACHA??!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que aquele JAVASCRIPT esta fazendo??

 

 

porque voce não coloca um campo normal type text para o usuário inserir o dado ou o sindicado e ao lado um botao cadastrar

 

que ai voce atualiza apenas aquele campo....

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que aquele JAVASCRIPT esta fazendo??

 

 

porque voce não coloca um campo normal type text para o usuário inserir o dado ou o sindicado e ao lado um botao cadastrar

 

que ai voce atualiza apenas aquele campo....

<a href=\"java script:;\" onClick=\"addEvent();\" class=campos_formulario><b>Adicionar Campos</b></a>
</P>
<div id=\"eventDates\">

Esse javascript, esta gerando os inputs para inserção dos dados, porque uso esse js, pois não se tem a certeza de quantos nomes serão inseridos, pode ser 01, 02, 03....., por isso estou tento probleminhas.

Mas até aki está funcionando... gerar os campos blza...

A questão é inserir esse dados pois este tratamento é feito na edição do form e não no cadastramento principal... entendeu?

 

Tentei fazer da forma que te mostrei , colocando

 

foreach ($_POST["q1"] as $q1)
{
$insere = mysql_query("INSERT into sindicados(codigo, portaria, anoid, q1)
VALUES ('$max','$portaria','$anoid', '$q1')")
or die(mysql_error());
}

este codigo abaixo do div, ou seja a idéia é...

cadastrou o form, na edição há sindicados? escreve esses sindicados, senão dá opção de inserir e gravar no bd...

entendeu?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tipo agora eu entendi +- oq você qr fzr

 

pelo visto teu codigo não esta errado

 

 

Faz o seguinte ve se seu SQL esta correto

 

Por exempli eu vi o CODIGO com aspas é isso mesmo??

 

O codigo não eh numerico n???

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tipo agora eu entendi +- oq você qr fzr

 

pelo visto teu codigo não esta errado

 

 

Faz o seguinte ve se seu SQL esta correto

 

Por exempli eu vi o CODIGO com aspas é isso mesmo??

 

O codigo não eh numerico n???

Não entendi... numerico??!!

As aspas no codigo é que ele esta dentro de um "echo " do php..

É justamente esse php que estou em duvida

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tipo agora eu entendi +- oq você qr fzr

 

pelo visto teu codigo não esta errado

 

 

Faz o seguinte ve se seu SQL esta correto

 

Por exempli eu vi o CODIGO com aspas é isso mesmo??

 

O codigo não eh numerico n???

Não entendi... numerico??!!

As aspas no codigo é que ele esta dentro de um "echo " do php..

É justamente esse php que estou em duvida

 

Desculpa não soube me expressar

 

olhe esse seu codigo:

 

foreach ($_POST["q1"] as $q1)
{
$insere = mysql_query("INSERT into sindicados(codigo, portaria, anoid, q1)
VALUES ('$max','$portaria','$anoid', '$q1')")
or die(mysql_error());
}

 

Entaop se no banco o campo CODIGO for numerico

Voce não pode inderir o valor '$max' com aspas deve inserir $max

 

As vezes o erro é bobeira... verifique essas coisas.... Banco e SQL

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá...

Por que aparece esse erro:

 

Warning: Invalid argument supplied for foreach() in c:\apache\htdocs\humanos\admin\editarproc.php on line 406

 

referente a essa passagem do código.

 

Funciona porém dá esse erro!

 

foreach ($_POST["q1"] as $q1)

{

$insere = mysql_query("INSERT into sindicados(codigo, portaria, anoid, q1)

VALUES ('$max','$portaria','$anoid', '$q1')")

or die(mysql_error());

}

 

Valeu!!

obrigada.

$_POST["q1"] é um vetor?

 

O erro está dizendo que é um argumento inválido, então, se o $_POST["q1"] não for um vetor, utilize o for ou o while

 

vlww!!

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.