Ir para o conteúdo
N3lson

[Resolvido] Combinar 2 Foreach

Mensagens Recomendadas

N3lson    17
N3lson

Boas tenho este Form

$users_id = mysqli_query($con, "SELECT id, nome, st FROM atletas WHERE st=1 ORDER BY nome");
	   while($r=mysqli_fetch_assoc($users_id)){
		   echo'<input type="hidden"  value="'.$r['id'].'" name="atleta_id[]"> '.nome($r['nome']);
		   echo'P -> <input type="checkbox" value="1" name="val"><br/>';
	   }

Na parte que recebe os dados tenho isto

foreach($_POST['atleta_id'] as $id){
//$query =  "INSERT INTO presencas VALUES (NULL, $id, '$_POST[data]', '$_POST['val']')";			
//mysqli_query($con, $query);
echo $id.'->';
echo $_POST['val'];
echo'<br>';
}

O que gostaria de saber era como fazer o seguinte por cada atleta_id marcado terá o valor 1 e desmarcado valor 0

Editado por N3lson

You can't do it, kid. But don't worry, my boy. You're not the only one. No one else can do it.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
HappyHippyHippo    1140
HappyHippyHippo

$users_id = mysqli_query($con, "SELECT id, nome, st FROM atletas WHERE st=1 ORDER BY nome");
while($r=mysqli_fetch_assoc($users_id)){
   echo'<input type="hidden"  value="'.$r['id'].'" name="atleta_id[]"> '.nome($r['nome']);
   echo'P -> <input type="checkbox" value="1" name="val['.$r['id'].']"><br/>';
}

foreach($_POST['val'] as $id){
}


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
N3lson    17
N3lson

Obrigado pela ajuda, mas testei com a solução colocada mas coloquei assim

foreach($_POST['val'] as $id => $val)

mas o resultado que obtive não é o que pretendo, pois gostaria que em caso da checkbox não ser seleccionada colocasse 0

Se selecionar um nome apresenta-me 2->1 , 5->1 mas quem não seleccionei não apresenta nem ID nem 0

Editado por N3lson

You can't do it, kid. But don't worry, my boy. You're not the only one. No one else can do it.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
HappyHippyHippo    1140
HappyHippyHippo

o checkbox funciona de uma forma um bocado estranha:

se tiver seleccionado, então o valor on será enviado, caso contrário, nada será enviado.

se pretendes ter uma funcionalidade semelhante a que descreves, terás sempre de saber qual a lista de elementos apresentados

$users_id = mysqli_query($con, "SELECT id, nome, st FROM atletas WHERE st=1 ORDER BY nome");
while($r=mysqli_fetch_assoc($users_id)){
   echo'<input type="hidden"  value="'.$r['id'].'" name="atleta_id['.$r['id'].']"> '.nome($r['nome']);
   echo'P -> <input type="checkbox" value="1" name="val['.$r['id'].']"><br/>';
}

foreach ($_POST['atleta_id'] as $key) {
 if (array_key_exists($key, $_POST['val'])) {
   // checked
 } else {
   // unchecked
 }
}

Editado por HappyHippyHippo

IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
N3lson    17
N3lson

Obrigado já deu para apresentar o 0 e o 1, agora vou tentar colocar isto a inserir esses mesmos valores na base de dados

Aqui está como ficou

foreach ($_POST['atleta_id'] as $key) {
 if (array_key_exists($key, $_POST['val'])) 
   {
    $val = 1;
   }
else
  {
   $val=0;
  }
  $query =  "INSERT INTO presencas VALUES (NULL, $key, '$_POST[data]', '$val')";		    
  mysqli_query($con, $query);   
} 

Obrigado


You can't do it, kid. But don't worry, my boy. You're not the only one. No one else can do it.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
HappyHippyHippo    1140
HappyHippyHippo

Aqui está como ficou

tanta linha quando bastava isto

foreach ($_POST['atleta_id'] as $key) {
  mysqli_query($con, "INSERT INTO presencas VALUES (NULL, {$key}, '{$_POST[data]}', '".(int)array_key_exists($key, $_POST['val'])."')");   
}

(não vou falar de problemas de SQL injection)


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
N3lson    17
N3lson

Isto está para inicio de funcionamento interno pessoal (pc)

$_POST[data] - vem de uma select box

$_POST[VAL] - checkbox

Obrigado pelo simplificado.

Editado por N3lson

You can't do it, kid. But don't worry, my boy. You're not the only one. No one else can do it.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.