biza 1 Denunciar post Postado Maio 9, 2011 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"].'"/> 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: Alguem me pode ajudar ? Compartilhar este post Link para o post Compartilhar em outros sites
ro.fonseca 1 Denunciar post Postado Maio 9, 2011 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
biza 1 Denunciar post Postado Maio 9, 2011 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 1 Denunciar post Postado Maio 10, 2011 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
biza 1 Denunciar post Postado Maio 10, 2011 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
ro.fonseca 1 Denunciar post Postado Maio 10, 2011 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
biza 1 Denunciar post Postado Maio 10, 2011 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
ro.fonseca 1 Denunciar post Postado Maio 10, 2011 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 http://php.net/manual/en/function.var-dump.php http://www.php.net/manual/en/function.print-r.php Nao adianta dar um echo direto na variavel. Compartilhar este post Link para o post Compartilhar em outros sites
biza 1 Denunciar post Postado Maio 12, 2011 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
hinom 5 Denunciar post Postado Maio 18, 2011 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
biza 1 Denunciar post Postado Maio 18, 2011 me explica como posso colmatar esse problema hinom Compartilhar este post Link para o post Compartilhar em outros sites
Periscuelo 20 Denunciar post Postado Maio 18, 2011 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
biza 1 Denunciar post Postado Junho 26, 2011 Resolvido Compartilhar este post Link para o post Compartilhar em outros sites