2013-08-02 4 views
-2

У меня есть форма, сгруппированная в разные дни, с понедельника по четверг.Эффективный способ хранения данных

В большинстве дней есть два класса, каждый из которых имеет два разных доступных времени (некоторые содержат только 1)?

+0

Что вы на самом деле спрашиваете? Получить + магазин? Получить только? Магазин только? Каков ваш текущий код PHP? – AmazingDreams

+0

Хорошо, пожалуйста, в следующий раз придет к нам, если у вас возникнут проблемы с существующим кодом. Мы не здесь, чтобы написать ваш код для вас :) – AmazingDreams

+0

Мне не нужен кто-нибудь, чтобы написать код для меня, я прошу полезный пример: :)), Спасибо всем! – user2632667

ответ

1

Вы можете сделать это с помощью многомерного массива:

<?php 
echo '<pre>'; 
print_r($_POST); 
echo '</pre>'; 
?> 

<form method="POST" action=""> 
    <fieldset style="border:#00FFFF 3px solid"> 
     <legend>Monday</legend> 

     Yoga Class: (Becc)<br> 
     <input type="checkbox" name="classtimes[Yoga][monday][]" value="9am-11am">9am-11am<br> 
     <input type="checkbox" name="classtimes[Yoga][monday][]" value="12pm-3pm">12pm-3pm<br> 
     <br> 
     Muay Thai Fitness: (Royce)<br> 
     <input type="checkbox" name="classtimes[Muay Thai][monday][]" value="8am-10am">8am-10am<br> 
     <input type="checkbox" name="classtimes[Muay Thai][monday][]" value="3pm-6pm">3pm-6pm<br> 
    </fieldset> 

    <fieldset style="border:#00FFFF 3px solid"> 
     <legend>Tuesday</legend> 

     Yoga Class: (Becc)<br> 
     <input type="checkbox" name="classtimes[Yoga][tuesday][]" value="9am-11am">9am-11am<br> 
     <input type="checkbox" name="classtimes[Yoga][tuesday][]" value="12pm-3pm">12pm-3pm<br> 
     <br> 
     Muay Thai Fitness: (Royce)<br> 
     <input type="checkbox" name="classtimes[Muay Thai][tuesday][]" value="8am-10am">8am-10am<br> 
     <input type="checkbox" name="classtimes[Muay Thai][tuesday][]" value="3pm-6pm">3pm-6pm<br> 
    </fieldset> 


    <input type="submit"> 
</form> 

Выход будет:

Array 
(
    [classtimes] => Array 
     (
      [Yoga] => Array 
       (
        [monday] => Array 
         (
          [0] => 9am-11am 
         ) 

        [tuesday] => Array 
         (
          [0] => 9am-11am 
         ) 

       ) 

      [Muay Thai] => Array 
       (
        [monday] => Array 
         (
          [0] => 8am-10am 
          [1] => 3pm-6pm 
         ) 

        [tuesday] => Array 
         (
          [0] => 8am-10am 
          [1] => 3pm-6pm 
         ) 

       ) 

     ) 

) 
+0

Не могу вас поблагодарить! Я никогда не знал о многомерных массивах. Я думаю, что это будет очень эффективно. :) – user2632667

0
<fieldset style="border:#00FFFF 3px solid"> 
<legend>Tuesday</legend> 

Yoga Class: (Becc)<br> 
<input type="checkbox" name="classtimes[yoga][]" value="9am-11am">9am-11am<br> 
<input type="checkbox" name="classtimes[yoga][]" value="12pm-3pm">12pm-3pm<br> 
<br> 
Muay Thai Fitness: (Royce)<br> 
<input type="checkbox" name="classtimes[muay][]" value="8am-10am">8am-10am<br> 
<input type="checkbox" name="classtimes[muay][]" value="3pm-6pm">3pm-6pm<br> 

</fieldset> 

Затем в PHP:

foreach($_POST["classtimes"]["yoga"] as $classtimes){ 
    echo $classtimes; 
} 
+0

Это сработает, но на моем PHP после проверки массивов мне нужно будет открыть текстовый файл и сохранить информацию (например, opt1, opt4). Исправьте меня, если я ошибаюсь, но не будет ли этот код сохранять только значение, а не время (9 am-11am)? – user2632667

+0

Да, я просто ушел от того, что вы опубликовали. Редактирование ответа. –

+0

Спасибо, что будет работать хорошо. Я бы проголосовал, если бы мог! – user2632667

0

, когда я я обычно добавляю что-то к имя флажок, что дает мне дополнительную информацию, например:

Yoga Class: (Becc)<br> 
<input type="checkbox" name="0classtimes0" value="9am-11am">9am-11am<br> 
<input type="checkbox" name="0classtimes0" value="12pm-3pm">12pm-3pm<br> 
<br> 
Muay Thai Fitness: (Royce)<br> 
<input type="checkbox" name="0classtimes1" value="8am-10am">8am-10am<br> 
<input type="checkbox" name="0classtimes1" value="3pm-6pm">3pm-6pm<br> 

Таким образом, у вас есть: первый номер индекс дня недели, второе число является показателем класса указанного дня.

Вы можете захватить переменные в JQuery с чем-то вроде этого:

$("input:checked").each(function(){ 
    var id=$(this).attr("name"); //this gives you the XcasstimesY 
    var value=$(this).val(); //this gives you the value(time) of the checked value 
    //here you can get this info into an array, or any other variable you want to use to submit it! 
}); 

При получении этой информации в PHP, при условии, что вы используете POST:

$x=0; 
while($x<6) //6 days 
    $y=0; 
    while(isset($_POST[$x.'casstimes'.$y])){ 
     echo "On day $x class $y the selected time was".$_POST[$x.'casstimes'.$y]; 
     $y++; 
    } 
    $x++; 
}