[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите завершить операцию с сессиями
ybr
всем привет!
Есть такая проблемка......
Я делаю таблицу мотоциклов на сайте. Каждой строке соответствует Чекбокс. Мне нужно сделать так, чтобы когда я отметил нужные мне строки в чекбоксе я перешёл на страницу их редактирования. Страница редактирования должна выглядеть след. образом:
Нажимаем редактирование - открывается редактор для первого выбранного значения чекбокса, затем жмем кнопку "далее" и переходим ко второмe выбранному и т.д.

Я использовал для этого ПХП сессии. Смог запихнуть номера выбранных чекбоксов в массив сессию:

<?PHP session_start();
$_SESSION['number'] = array();
foreach($_POST['massiv'] as $checkbox) {
$_SESSION['number'][] = $checkbox;
}
print_r($_SESSION['number']);
?>


echo "<form action = 'untitled.php' method='POST'>";
echo "<input type='submit' value='>>' /><input type='hidden' value='$i' name='submitted' />";
echo"</form>";

альше ступор((( Не могу додумать как сделать по нажатию >> чтобы вывело первый номер отмеченного чекбокса, потом >> второй номер выбранного чекбокса и т.д.
Подкрепите, кому не лень кодом....... спасибо!



Спустя 8 минут, 51 секунда (30.04.2011 - 23:07) quickxyan написал(а):
что-то не понял в чем проблема.
думаю по нажатию кнопки далее, надо выбирать данные из БД типа такого


SELECT * FROM `table` WHERE `id`=$_SESSION["id"]

Спустя 9 часов, 38 минут, 7 секунд (1.05.2011 - 08:45) ybr написал(а):
Ну если я так напишу
if($_POST[`submitted`]
{
for(...)
SELECT * FROM `table` WHERE `id`=$_SESSION["id"]
}

Мне же на первой страничке редактирования выдаст сразу Все значения отмеченных чекбоксов.... А мне такое не надо. Допустим выбрал я 5 чекбоксов.... жму "Редактировать"
появляется 1-ый Отмеченный номер, жму кнопку ">>" появляется 2-ой отмеченный номер и так далее, пока не закончятся отмеченные номера

Спустя 44 минуты, 46 секунд (1.05.2011 - 09:30) quickxyan написал(а):
почему это появятся все отмеченые чекбоксы???
появиться только тот у которого id совпадает с сессионной переменной.

другое дело если на одном id несколько записей может быть, ну это в том случае если id не автоинкрементный и не уникальный

Спустя 44 минуты, 52 секунды (1.05.2011 - 10:15) ybr написал(а):
Я отметил ПРОИЗВОЛЬНОЕ КОЛИЧЕСТВО чекбоксов. Жму "Редактировать".
Получаю значение ПЕРВОГО отмеченного чекбокса!!!! жму "далее"
Получаю значение ВТОРОГО отмеченного чекбокса!!!! жму "далее"
...
Получаю значение N-ного отмеченного чекбокса!!!! всё, отмеченные значения закончились!

Откуда я знаю сколько я отмечу чекбоксов......

Подкрепляю кодом:
Файл, где обьявлен для каждой строки таблицы чекбокс: motorcycle.php
<FORM ACTION="proverka.php" METHOD="POST">

...
echo "<td valign=\"top\"><input type='checkbox' name = 'massiv[]' value = '$row[Carbody_number]'/></td>";
...


<input type="submit" value="Press_me"/>
</FORM>
По нажатию "Press_me" перехожу на proverka.php!!!!!!!!!!!!!!!!!! ;!!!!!!!!

Подкрепляю кодом proverka.php. Тут я создаю Массив сессионных переменных, куда записываются НОМЕРА отмеченных чекбоксов. НЕ 1,2,3,...,N. а значение полей в таблице. Каждому значению чекбокса соотв. значение в поле Номер Двигателя.


<?php
session_start();
//peremennaja sessii eto massiv
$_SESSION['number'] = array();
//zanosim elementi 4ekboxa v massiv
foreach($_POST['massiv'] as $checkbox) {
$_SESSION['number'][] = $checkbox;
}
//smotrim massiv
print_r($_SESSION['number']);
?>

<form action = 'proverka.php' method='POST'>
<input type='submit' value='>>' /><input type='hidden' value='1' name='submitted' />
</form>

Теперь в этом же файле proverka.php мне надо написать КОД, Я не понимаю какой, чтобы При нажатии на Кнопку Press_me, обьявленную в файле motorcycle.php, Я получил :
  • значение ПЕРВОГО отмеченного чекбокса!!!! жму "далее"
  • значение ВТОРОГО отмеченного чекбокса!!!! жму "далее"
  • значение N-ного отмеченного чекбокса!!!! всё, отмеченные значения закончились!

ВСЁ! П О М О Г И Т Е !!!!! Умоляю, я скоро сойду с ума(((((((((((((((

Спустя 6 минут, 45 секунд (1.05.2011 - 10:22) quickxyan написал(а):
может сделать выборку из таблицы по всем включеным чекбоксам. записать все что выбралось в массив и потом при нажатии на кнопку далее выводить первый элемент массива и дописать к адресу ?num=1, потом по еще одному нажатию далее, добавляем к num 1 и выводим второй элемент.

может как-то неясно написал, но сама идея в том, что на каждой странице будет GET-переменная или можно сессионную использовать и там будет значение индекса массива.

Спустя 22 минуты, 4 секунды (1.05.2011 - 10:44) ybr написал(а):
спасиб, советовали так уже... я это кодом не представляю.........

+Это всё будет реализовываться в ОДНОМ ЖЕ ФАЙЛЕ????

Спустя 6 минут, 56 секунд (1.05.2011 - 10:51) ybr написал(а):
как это сделать циклом не циклом............не пойму никак((((((((((
<?php 
session_start();
//peremennaja sessii eto massiv
$_SESSION['number'] = array();
//zanosim elementi 4ekboxa v massiv
foreach($_POST['massiv'] as $checkbox) {
$_SESSION['number'][] = $checkbox;
}
//smotrim massiv
print_r($_SESSION['number']);

if($_POST['submitted'])
{
echo"Что тут писать????? как передать Следующему нажатию какой-либо адресс(((((((((";
}
?>

<form action = 'proverka.php' method='POST'>
<input type='submit' value='>>' /><input type='hidden' value='1' name='submitted' />
</form>

Спустя 59 минут, 21 секунда (1.05.2011 - 11:50) Гость_liw написал(а):
Ну если в $_GET['num'] у тебя выбранный номер (далее $current)
а в $_SESSION['selected'] у тебя список всех выбранных номеров.

Тогда для кнопки >> тебе можно получить ссылку таким образом:

$res = array_search($current, $_SESSION['selected']);

if($res === false){
// тут косяк какой то ибо номер не найден

}elseif($res+2 > sizeof($_SESSION['selected'])){
// всё мотоциклов больше нет, не нужно рисовать кнопку >>

}else{
// в переменной $next следущий номер
$next = $_SESSION['selected'][$res+1];

}


И кстати пиши либо по-русски либо по-английски но ненадо делать вот такого
$_SESSION['massiv'] - смотрится.. эм.. короче некрасиво


Спустя 54 минуты, 36 секунд (1.05.2011 - 12:45) ybr написал(а):
Спасибо liw, буду разбираться
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.