php mysql paralel dizi onay kutularını

4 Cevap php

Ben 'Tinyint' alanı kurmak için bir seferde düzenlemek checkboxe'larin bir dizi var. Sorun i onay kutusunun işaretini kaldırın ve mysql için vales göndermek zaman geliyor. o 0 değer PHP_POST tarafından göz ardı edilmiş ve dolayısıyla onay kutusunu dizi kontrolsüz değerlerin sayısına göre daha az olacak bir onay kutusu sonuçları unchecking onay kutularını ve düzenlemek için başka bir değer paralel dizinin bir dizi, nakleder beri Düzenlenecek dizi formda tüm kayıtları olurken oluştururlar.

Burada teslim kodu

while($row=mysql_fetch_array($result))
{

$checked = ($row[active]==1) ? 'checked="checked"' : '';
...

echo "<input type='hidden' name='TrID[]' value='$TrID'>";
echo "<input type='checkbox' name='active1[]' value='$row[active]''$checked' >";
...

ve işleme php script

$userid = ($_POST['TrID']);
$checked= ($_POST['active']);

$i=0;

foreach ($userid as $usid) 
{

if ($checked[$i]==1){
$check = 1;
}
else{
$check = 0;
}

$qry1 ="UPDATE  `epapers`.`clientelle` SET  `active` =  '$check' WHERE  `clientelle`.`user_id` =  '$usid' ";
$result = mysql_query($qry1);   
$i++;

}

4 Cevap

Gibi bir şey deneyebilirsiniz:

$i = 0;
while($row=mysql_fetch_array($result))
{

$i++;
$checked = ($row[active]==1) ? 'checked="checked"' : '';
...

echo "<input type='hidden' name='TrID[{$i}]' value='$TrID'>";
echo "<input type='checkbox' name='active1[{$i}]' value='$row[active]''$checked' >";
...

Onay kutularını o zaman en azından dizideki doğru yerde olmalı ...

Sen ikinci doğru elemanı almak için ilk dizinin tuşunu kullanabilirsiniz ...

$userid = ($_POST['TrID']);
$checked= ($_POST['active']);

foreach ($userid as $key => $usid) 
{

if ($checked[$key]==1){
$check = 1;
}
else{
$check = 0;
}

$qry1 ="UPDATE  `epapers`.`clientelle` SET  `active` =  '$check' WHERE  `clientelle`.`user_id` =  '$usid' ";
$result = mysql_query($qry1);   

}

EDIT If this doesn't work, try to add numeric indexes to the element names in the HTML code. Like this:

echo "<input type='hidden' name='TrID[".$i."]' value='$TrID'>";
echo "<input type='checkbox' name='active1[".$i++."]' value='$row[active]''$checked' >";

Açıkçası önce döngü $i sıfıra ayarlamak gerekiyor.

Kutularını aynı ada sahip olmamalıdır, ama her biri farklı adlandırılmış olmalıdır. Böyle ilk sayfasını değiştirerek sorunu çözmek olabilir:

$i = 0;
while($row=mysql_fetch_array($result))
{

$checked = ($row[active]==1) ? 'checked="checked"' : '';
...

echo "<input type='hidden' name='TrID[$i]' value='$TrID'>";
echo "<input type='checkbox' name='active1[$i]' value='$row[active]''$checked' >";
$i++;
...

Ve buna göre ikinci senaryoyu ayarlayabilirsiniz ...

Bunu gerçekleştirmek için ben kullanmak kendi senaryomu var ... Ne yapmaya çalışıyorsun ne yolda her yerde isem bunu adapte veya görmek.

Şema: Kullanıcı o ürünün fiyatını görmek için sepetinize eklenen gerektiğini belirtmek için kontrol edebilirsiniz ürünlerin Satırlar bir onay kutusu ile her.

Code:
<td><input type="checkbox" name="addforprice[<?php echo $record['id']; ?>]" /></td>

Sonra form gönderildiğinde:

if($_POST['addforprice']){
foreach(array_keys($_POST['addforprice']) as $var){
$data['add_for_price'] = 1;
$update = $db->query_update(TABLE_PRODUCTS, $data, "id=".$var);
echo "addforprice:".$var.' '.$data['add_for_price'].'
';
unset($data['addforprice']);
}
}

$record['id'] satırları yazdırırken oluşturulan veritabanı kimliği.