|
|
|
| Добрый день! Данный код выводит массив чекбоксов и сверяет с записью в БД ($auto['integration'] = 1,2,3,4,5,6), если записи совпадают, то чекбоксы отмечаются, ошибка в том, что отмечается только последний чекбокс, подскажите в чем ошибка? Спасибо.
$p=1;
$ar = explode (',', $auto['integration']);
while(isset($integration_auto[$p]))
{
for ($i=0; $i<=count($ar) - 1; $i++)
{
if ($ar[$i] == $p) { $item = " checked"; } else { $item = ""; }
}
echo "<input type=\"checkbox\" id=\"adop\" name=\"adop[".$p."]\" value=\"".$p."\"".$item."> ".$integration_auto[$p]."";
$p++;
}
|
| |
|
|
|
|
|
|
|
для: kis-kis
(11.12.2008 в 12:10)
| | Исх.код HTML сгенерированной формы смотрели? | |
|
|
|
|
 4.5 Кб |
|
|
для: Trianon
(11.12.2008 в 12:12)
| | Да, вложение, отмечен только один. | |
|
|
|
|
|
|
|
для: kis-kis
(11.12.2008 в 12:10)
| | А как они вообще могут быть отмечены, если $p равно всегда 1? Что к чему тут у вас? | |
|
|
|
|
|
|
|
для: sim5
(11.12.2008 в 12:40)
| | $integration_auto - массив, лежит в файле.
$p=1;
while(isset($integration_auto[$p]))
{
for ($i=0; $i<=count($ar) - 1; $i++)
{
if ($ar[$i] == $p) { $item = " checked"; } else { $item = ""; }
}
echo "<input type=\"checkbox\" id=\"adop\" name=\"adop[".$p."]\" value=\"".$p."\"".$item."> ".$integration_auto[$p]."";
$p++;
}
|
| |
|
|
|
|
|
|
|
для: kis-kis
(11.12.2008 в 12:43)
| |
<?
$integration_auto = array(1=>1,5,12,4,6,9);
$ar = array(1,3,10,4,8,9);
for ($i=1; $i<count($integration_auto)+1; $i++) {
$item = in_array($integration_auto[$i], $ar) ? " checked" : $item = "";
echo "<input type=\"checkbox\" id=\"adop\" name=\"adop[".$integration_auto[$i]."]\" value=\"".$i."\"".$item."> ".$integration_auto[$i];
}
|
К чему у вас while так и не понял, уж если получете из базы, то раскладывайте сразу ресурс полученный, без дополнительных циклов. | |
|
|
|
|
 1 Кб |
|
|
для: sim5
(11.12.2008 в 12:58)
| | Так не работает, вложение - файл mods.php:
<?
include ('mods.php');
// $integration_auto = array(1=>1,5,12,4,6,9);
$ar = array(1,3,10,4,8,9);
for ($i=1; $i<count($integration_auto); $i++)
{
$item = in_array($integration_auto[$i], $ar) ? " checked" : $item = "";
echo "<input type=\"checkbox\" id=\"adop\" name=\"adop[".$integration_auto[$i]."]\" value=\"".$i."\"".$item."> ".$integration_auto[$i];
}
?>
|
| |
|
|
|
|
|
|
|
для: kis-kis
(11.12.2008 в 13:13)
| | Вы уж, если показываете, что нет, то лучше приведите значения элементов массива $integration_auto. Я предполагаю (в примере), что вам надо разложить массив $integration_auto, сравнивая его значения с $ar. Если счетчик цикла начинается с 1, то как вы получите последний элемент массива, не преплюсовав к числу его элементов единицу? | |
|
|
|
|
|
|
|
для: sim5
(11.12.2008 в 13:29)
| | Вот как вывожу я, и получаю как раз только последний элемент...
<?php
include ('auto.php');
$p=1;
$ar = array("1","2","3","5","6","8");
while(isset($integration_auto[$p]))
{
for ($i=0; $i<=count($ar) - 1; $i++)
{
if ($ar[$i] == $p) { $item = " checked"; } else { $item = ""; }
}
echo "<input type=\"checkbox\" id=\"adop\" name=\"adop[".$p."]\" value=\"".$p."\"".$item."> ".$integration_auto[$p]."";
$p++;
}
?>
|
| |
|
|
|
|
|
|
|
для: kis-kis
(11.12.2008 в 13:40)
| | Нашел ошибку, ваш и мой код работает если вот это переписать вот так:
$item = in_array($i, $ar) ? " checked" : $item = "";
|
Спасибо. | |
|
|
|
|
|
|
|
для: kis-kis
(11.12.2008 в 13:40)
| | Это я уже видел, я вас просил о другом - показать массив свой. Например, мне совсем не понятно, для чего прит каждом выводе, вы присваиваете итерацию цикла как значение элменту? Если эти номера величина постоянная, то отмеченные можно сравнивать по самой итерации. | |
|
|
|
|
|
|
|
для: sim5
(11.12.2008 в 13:55)
| | Массив я показал во втором вложении.
А сам вывод сделал так:
$p=1;
$ar = explode (',', $auto['integration']);
while(isset($integration_auto[$p]))
{
$item = in_array($p, $ar) ? " checked" : $item = "";
echo "<input type=\"checkbox\" id=\"adop\" name=\"adop[".$p."]\" value=\"".$p."\"".$item."> ".$integration_auto[$p]."";
$p++;
}
|
| |
|
|
|