Ir para conteúdo

POWERED BY:

Arquivado

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

biza

[Resolvido] Problema no update

Recommended Posts

Caros amigos tenho problemas em actualizar um campos da minha base de dados, será que alguem me poderá ajudar?!

Vou passar a descrever o meu problema.

Tenho os seguintes campos de texto que estão definidos da seguinte forma:

<input name="dia[]" type="text" size="25" value="'.$row2["dia_semana"].'"/>
<input name="hora[]" type="text" size="25" value="'.$row2["horario"].'"/>

horar.jpg

Eles passam a ser entendidos como um array.

Ao fazer o update destes campos tenho o seguinte code:

<?
$dia=$_POST["dia"];
for($i=0; $i<=count($dia); $i++){

mysql_query("UPDATE horario SET  dia_semana='$dia', horario='".$_POST['hora']."', detalhe_modalidade_id=".$_GET['id']) or die(mysql_error());
}
?>

o problema é que ele ao inserir na base de dados o respectivo update, preenche todos os campo da base de dados com "array";

como se pode ver nessa tabela:

table.jpg

Alguem me pode ajudar ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tu tem que pecorrer esse teu array, tu tas jogando direto e sem pecorrer, por isso que ta entrando "array" no BD, quando falo em pecorrer, falo nisso: $dia[$i] dentro do loop que tu criou. Só uma duvida, é necessario mesmo esses array's?

 

<input name="dia[]" type="text" size="25" value="'.$row2["dia_semana"].'"/>
<input name="hora[]" type="text" size="25" value="'.$row2["horario"].'"/>

Compartilhar este post


Link para o post
Compartilhar em outros sites

ro.fonseca eu nesses campos estou pondo vários dias e horários que outra sugestão você me dava. me podia dar um exemplo da inserção do $dia[$i] num ciclo

Compartilhar este post


Link para o post
Compartilhar em outros sites

ro.fonseca eu nesses campos estou pondo vários dias e horários que outra sugestão você me dava. me podia dar um exemplo da inserção do $dia[$i] num ciclo

dentro desse for, tu usa $dia[$i], ao inves de só $dia...

Compartilhar este post


Link para o post
Compartilhar em outros sites

continua a dar o mesmo erro , mas com uma agravante agora me troca todos os campos da base de dados e põem o ultimo id inserido em toda a tabela

Compartilhar este post


Link para o post
Compartilhar em outros sites

continua a dar o mesmo erro , mas com uma agravante agora me troca todos os campos da base de dados e põem o ultimo id inserido em toda a tabela

 

Hummm, eu nao sei como tá teu html, são vários campos do tipo

 

<input name="dia[]" type="text" size="25" value="'.$row2["dia_semana"].'"/>

 

correto??? Eu confesso q nao sou um expert em array no PHP, falei levando em consideração a linguagem C, mas suponho que a logica seja a mesma. Se tu cria a variavel "dia" como array, para você acessa-la, deve ser como array tb, e de jeito anterior tu nao estava acessando como um array, você obrigatoriamente deve pecorrer, de qualquer maneira tu deve debugar esse teu codigo, se nao me engano use o var_dump ou print_r na variavel $dia e veja o que sai.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro amigo ja tentei fazer um "echo" da variável a ver o que ela estava a passar e nesse echo ela passa array. se alguém me puder ajudar fico muito agradecido

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora fiz da sueguinte forma :


<?
$dia=$_POST["dia"];
for($i=0; $i<=count($dia); $i++){
mysql_query("UPDATE horario SET  dia_semana='".$_POST['dia'][$i]."', horario='".$_POST['hora'][$i]."', detalhe_modalidade_id=".$_GET['id']) or die(mysql_error());
}
?>

E me resulta do seguinte erro:

Notice: Undefined offset: 2 in /Applications/MAMP/htdocs/cab/admin/ed_det_modalidade.php on line 151

 

Notice: Undefined offset: 2 in /Applications/MAMP/htdocs/cab/admin/ed_det_modalidade.php on line 151

que são referentes a linha:

mysql_query("UPDATE horario SET  dia_semana='".$_POST['dia'][$i]."', horario='".$_POST['hora'][$i]."', detalhe_modalidade_id=".$_GET['id']) or die(mysql_error());

verifico a minha tabela na base de dados e observo que ele muda todos os campos dia_semana e horario, para campos vazios e , o detalhe_modalidade_id é assumido em toda a tabela pelo ultimo id inserido

ao usar print_r($_POST) para ver o que está vindo do formulário, ele me dá o seguinte:

 

 

Array

 

Array

(

[mod] => 3

[objectivo] => A prática do Karate tem como principais objectivos a aprendizagem do Karate-Do como uma arte marcial de auto-defesa, o conhecimento e aplicação das regras de conduta e etiqueta do Karate-Do e o desenvolvimento correto do corpo e do espírito.

[beneficio] => Do cumprimento dos objectivos, o Karate tem inúmeros benefícios físicos e espirituais. Fisicamente permite aumentar a coordenação psicomotora, velocidade de reacção, resistência física, flexibilidade e velocidade. Espiritualmente permite desenvolver a disciplina, perseverança e auto-controle, bem como, comportamentos sociais associados

[material] => Os uniformes do Karate (Karate Gi, erradamente conhecido como Kimono) devem ter o símbolo da FPKS.

[dia] => Array

(

[0] => Quinta - Feira

[1] => Terça - Feira

)

 

[hora] => Array

(

[0] => 18:00 às 20:30

[1] => 18:00 às 20:30

)

 

[destinatario] => O Karate é para todas as pessoas desde que assumam o compromisso de trabalhar para a sua progressão e cumprir com a disciplina de conduta/etiqueta como praticante de Karate. A aprendizagem do Karate dirigido às crianças privilegia o desenvolvimento das aptidões fundamentais da criança, consideradas como indivíduos em plena evolução e não como adultos em miniatura.

[geral] => Cada sessão prática de Karate inicia-se com exercícios de aquecimento seguido do treino de Karate. Este pode ser desenvolvido considerando três partes distintas de ensino:

• Kion (treino básico) - disciplina de aprendizagem das técnicas de Karaté. A repetição sistemática das técnicas de Karate são executadas no ar, sem adversário.

• Kata (treino de formas) - disciplina de aprendizagem de esquemas de movimentos pré-determinados que significam ataques e defesas contra adversários imaginários. Os Kata permitem desenvolver a força, a velocidade, o equilíbrio, a intenção e a dinâmica dos movimentos.

• Kumité (treino de combate) – disciplina que consiste no treino de combate entre dois praticantes que se defrontam, usando exercícios sistematizados, com objectivos bem definidos, e que progressivamente vão aumentando de exigência (conforme a graduação do praticante), até à fase em que o combate é completamente livre.

 

[orientador] => Luís Dias

[submit] => Guardar Alterações

)

Compartilhar este post


Link para o post
Compartilhar em outros sites

apenas um conselho..

 

não faça a construção das querys SQL desse modo direto, sem filtrar o que tem nas variáveis provindas de ações client-side..

 

desse modo está expondo a riscos de injeções SQL, por exemplo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

me explica como posso colmatar esse problema hinom

 

O tópico abaixo explica como matar o problema biza.

 

http://forum.imasters.com.br/topic/418290-filtro-de-injection/page__p__1647391__fromsearch__1#entry1647391

 

Abraços.

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.