Вземане на информация от няколко чекбокса?

streleca_stz

Registered
Здравейте! Искам да ви попитам как с php мога да взема values само на чекнатите боксове от формата?

Пример: имам съобщения и искам да се изтриват само маркираните. :shock:
 
Value на полетата трябва да е със ид-то на нещото което ще триеш :
PHP:
<input type="checkbox" name="categories[]" value="1" />
 <input type="checkbox" name="categories[]" value="2" />
 <input type="checkbox" name="categories[]" value="3" />
 

if(isset($_POST['checkbox']))
 {
$i=0;
 foreach ($_POST['checkbox'] as $value){
 $id_query = "DELETE FROM table WHERE id='$value[$i]'";
 mysql_query($id_query) or die(mysql_error());
 $i++;
 }
 }

Тук имам повече обяснения по темата :

http://web-tourist.net/forum/viewtopic.php?p=630641&highlight=#630641
 
dakata__92 каза:
Value на полетата трябва да е със ид-то на нещото което ще триеш :
PHP:
<input type="checkbox" name="categories[]" value="1" />
 <input type="checkbox" name="categories[]" value="2" />
 <input type="checkbox" name="categories[]" value="3" />
 

if(isset($_POST['checkbox']))
 {
$i=0;
 foreach ($_POST['checkbox'] as $value){
 $id_query = "DELETE FROM table WHERE id='$value[$i]'";
 mysql_query($id_query) or die(mysql_error());
 $i++;
 }
 }

Тук имам повече обяснения по темата :

http://web-tourist.net/forum/viewtopic.php?p=630641&highlight=#630641
Warning: Invalid argument supplied for foreach() in ... on line 87
ред 87 -> foreach ($_POST['checkbox'] as $value){
 
PHP:
<input type="checkbox" name="checkbox[]" value="1" />
 <input type="checkbox" name="checkbox[]" value="2" />
 <input type="checkbox" name="checkbox[]" value="3" />
 

if(isset($_POST['checkbox']))
 {
$i=0;
 foreach ($_POST['checkbox'] as $value){
 $id_query = "DELETE FROM table WHERE id='$value[$i]'";
 mysql_query($id_query) or die(mysql_error());
 $i++;
 }
 }
 
dakata__92 каза:
PHP:
<input type="checkbox" name="checkbox[]" value="1" />
 <input type="checkbox" name="checkbox[]" value="2" />
 <input type="checkbox" name="checkbox[]" value="3" />
 

if(isset($_POST['checkbox']))
 {
$i=0;
 foreach ($_POST['checkbox'] as $value){
 $id_query = "DELETE FROM table WHERE id='$value[$i]'";
 mysql_query($id_query) or die(mysql_error());
 $i++;
 }
 }
Така работи, но ако изпълнява само 1 път заявката ако например са маркирани повече полета.. (т.е. все едно съм маркирал само един запис)
 
HTML:
<input type="checkbox" name="checkbox[]" value="1" />
<input type="checkbox" name="checkbox[]" value="2" />
<input type="checkbox" name="checkbox[]" value="3" />



PHP:
if(isset($_POST['checkbox'])) {
$checked = implode($_POST['checkbox'], ', ');
$id_query = 'DELETE FROM table WHERE id IN (' . $checked . ')';
mysql_query($id_query) or die(mysql_error());
}
 
djman каза:
HTML:
<input type="checkbox" name="checkbox[]" value="1" />
<input type="checkbox" name="checkbox[]" value="2" />
<input type="checkbox" name="checkbox[]" value="3" />



PHP:
if(isset($_POST['checkbox'])) {
$checked = implode($_POST['checkbox'], ', ');
$id_query = 'DELETE FROM table WHERE id IN (' . $checked . ')';
mysql_query($id_query) or die(mysql_error());
}
Пак само един резултат все едно е маркиран (О.О)
 
Eто нещо което написах и работи :
PHP:
$latest1 = mysql_query("SELECT * FROM table  ORDER BY id"); 
echo "<form method='POST' action=''>";
while($r = mysql_fetch_array($latest1))
{ 
 $clipid = $r['id']; 
 echo '<input type="checkbox" name="checkbox[]" value="'.$clipid.'"><br />';
} 
echo "<input type='submit' name='delete' value='Delete'><input type='submit' name='submit' value='Submit'></form>";
if(isSet($_POST['delete']))
{
 $i = 0;
 foreach ($_POST['checkbox'] as $value)
 { 
  mysql_query("DELETE FROM table WHERE `id` = '$value'");
  $i++;
  echo "$i-";
 } 
}
if(isSet($_POST['submit']))
{
   $io = 0;
   foreach ($_POST['checkbox'] as $value2)
   { 
      mysql_query("UPDATE table SET item_status='1' WHERE `id` = '$value2'");
      $io++;
      echo "$io-";
   } 
}
 
dakata, така правиш заявки колкото са чекнатите боксове, което не е хубаво. WHERE IN (1,2,3) е по-добре.......
 
djman каза:
dakata, така правиш заявки колкото са чекнатите боксове, което не е хубаво. WHERE IN (1,2,3) е по-добре.......
Именно ! Ако е чекнал 10 бокса които са с value=$id на съответния коментар примерно при натискане на бутон изтрии се трият само чекнатите полета, същото е и за ъпдейта или сюбмита само си нагажда нещата и е ток и жици :) Въпреки че си прав :)
 
djman каза:
dakata, така правиш заявки колкото са чекнатите боксове, което не е хубаво. WHERE IN (1,2,3) е по-добре.......
По принцип е наистина така, но как тогава ще стане с IN? Изпробвах и твоя случай, но просто пак изтриваше само 1 резултат от маркираните..
 
Ето пълен код който работи:

PHP:
<?php
if(isset($_POST['add'])) {
	mysql_query('INSERT INTO `table` (`time`) VALUES (' . time() . ')');
}
if(isset($_POST['delete'])) {
	$checks = implode($_POST['select'], ', ');
	mysql_query('DELETE FROM `table` WHERE `id` IN (' . $checks . ')');
	echo 'deleted: '. $checks;

}
?>
<form action="" method="post">
	<input type="submit" name="add" value="ADD" />
</form>

<form action="" method="post">
	<?php $q = mysql_query('SELECT * FROM `table` ORDER BY id ASC');
	while($row = mysql_fetch_array($q)): ?>
	<input type="checkbox" name="select[]" value="<?=$row['id'];?>" /> <?=$row['id'];?><br />
	<?php endwhile; ?>
	<input type="submit" name="delete" value="DELETE" />
</form>

Само си го направи под твоите изисквания, но така просто няма как да не работи :)
 

Back
Горе