Jump to content
Sign in to follow this  
N3lson

[Resolvido] Combinar 2 Foreach

Recommended Posts

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

Edited by 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.

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites
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

Edited by 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.

Share this post


Link to post
Share on other sites
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
 }
}

Edited by HappyHippyHippo
  • Vote 1

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

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites
N3lson

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

$_POST[data] - vem de uma select box

$_POST[VAL] - checkbox

Obrigado pelo simplificado.

Edited by 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.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.