Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Простой массив
 
 автор: LuxeMate   (13.09.2006 в 20:28)   письмо автору
 
 

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

favcars.php

<form action="showcars.php" method="get">
<input type="checkbox" name="check" value="1"/> Land-Rover<br>
<input type="checkbox" name="check" value="2"/> BMW <br>
<input type="checkbox" name="check" value="3"/> Mercedes<br>
<input type="checkbox" name="check" value="4"/> Ford<br>
<input type="checkbox" name="check" value="5"/> Lamborgini<br><br>
<input type="submit" name="button" value="Submit"/>
</form>


и showcars.php

<?
    $car
[1] = "Land-Rover";
    
$car[2] = "BMW";
    
$car[3] = "Mercedes";
    
$car[4] = "Ford";
    
$car[5] = "Lamborgini";
?>
<table width="100" border="5">
<?
if($car[1])
{
echo 
"<tr><td>$car[$check]</td></tr>";
}
elseif(
$car[2])
{
echo 
"<tr><td>$car[$check]</td></tr>";
}
elseif(
$car[3])
{
echo 
"<tr><td>$car[$check]</td></tr>";
}
elseif(
$car[4])
{
echo 
"<tr><td>$car[$check]</td></tr>";
}
elseif(
$car[5])
{
echo 
"<tr><td>$car[$check]</td></tr>";
}
?>
</table>


Проблемма при выводе информайии,если выделить больше одного чекбокса выводится только последний,хотелось чтобы он выводил то что я выделил и забивал это в столбик по порядку,только не знал что дальше писать.
Прошу помощи!
Заранее спасибо!

   
 
 автор: LuxeMate   (13.09.2006 в 20:39)   письмо автору
 
   для: LuxeMate   (13.09.2006 в 20:28)
 

А ещё сразу спрошу насчёт чекбоксов,реально ли сделать так чтобы можно было выделить толко один бокс,и при выделении второго,с первого исчезала галочка?

   
 
 автор: Director_Of_Zoo   (13.09.2006 в 21:13)   письмо автору
 
   для: LuxeMate   (13.09.2006 в 20:39)
 

>А ещё сразу спрошу насчёт чекбоксов,реально ли сделать так чтобы можно было выделить толко один бокс,и при выделении второго,с первого исчезала галочка?
А радиогруппа не подходит?

   
 
 автор: EXP   (13.09.2006 в 21:15)   письмо автору
 
   для: LuxeMate   (13.09.2006 в 20:39)
 

У меня заработало так: если в первом файле сделать <input type='checkbox' name='car[]' value='x'>
A во втором
<?   $car=$_POST["car"];    foreach($car as $avto) {echo "$avto<br>\n"; } 
а чтобы один из инпутов это какойто радиочекед

   
 
 автор: Director_Of_Zoo   (13.09.2006 в 21:03)   письмо автору
 
   для: LuxeMate   (13.09.2006 в 20:28)
 

Если я правильно тебя понял надо исправить твой код на следующий:

<form action="index.php" method="get"> 
<input type="checkbox" name="check[]" value="1"/> Land-Rover<br> 
<input type="checkbox" name="check[]" value="2"/> BMW <br> 
<input type="checkbox" name="check[]" value="3"/> Mercedes<br> 
<input type="checkbox" name="check[]" value="4"/> Ford<br> 
<input type="checkbox" name="check[]" value="5"/> Lamborgini<br><br> 
<input type="submit" name="button" value="Submit"/> 
</form>

Ну и конечной серверный код:

<? 
    $car
[1] = "Land-Rover"
    
$car[2] = "BMW"
    
$car[3] = "Mercedes"
    
$car[4] = "Ford"
    
$car[5] = "Lamborgini"
?> 
<table width="100" border="5"> 
<? 

for($i=0;$i<count($_GET['check']);$i++){
    echo 
"<tr><td>".$car[$_GET['check'][$i]]."</td></tr>"
}
?> 
</table>

   
 
 автор: LuxeMate   (13.09.2006 в 21:48)   письмо автору
 
   для: Director_Of_Zoo   (13.09.2006 в 21:03)
 

Спасибо,теперь всё как надо работает,только я не понял как это сделать,надо мне в учебнике прочитать к чему всё то что вы написали :)

   
 
 автор: EXP   (13.09.2006 в 22:05)   письмо автору
 
   для: LuxeMate   (13.09.2006 в 21:48)
 

Насчёт радио Вот нашёл здесьhttp://www.softtime.ru/info/articlephp.php?id_article=96

   
 
 автор: LuxeMate   (13.09.2006 в 22:35)   письмо автору
 
   для: EXP   (13.09.2006 в 22:05)
 

Спасибо огромное! :)

   
 
 автор: DEM   (14.09.2006 в 01:13)   письмо автору
 
   для: LuxeMate   (13.09.2006 в 21:48)
 

У тебя это не работало так как ты ставил условие, Если=1, то сделать, то-то, а если=2, то сделать совсем другое... там можно и простым If работать (не elseif), но с FOR конечно же намного лучше выходить ;)

   
 
 автор: LuxeMate   (14.09.2006 в 20:06)   письмо автору
 
   для: DEM   (14.09.2006 в 01:13)
 

Меня интересует что значит

for($i=0;$i<count($_GET['check']);$i++)

Может ли кто нибкдь опиать ети действия,зачем $i=0;$i<count и $i++ и что это означает,или дайте пожалкйста ссылку на эту тему в учебнике,немогу её найти.

   
 
 автор: kasmanaft   (14.09.2006 в 20:14)   письмо автору
 
   для: LuxeMate   (14.09.2006 в 20:06)
 

Это цикл. Будет выполняться пока $i<count($_GET['check']) ... $i в начале цикла у нас 0 ($i=0), затем каждый раз значение $i будет увеличиваться на один ($i++) ... и так будет пока $i не станет равным количеству элементов в массиве $_GET['check'] ($i<count($_GET['check']))

здесь во время работы цикла выведутся элементы массива, начиная с нулевого (потому что $i в начале 0) и заканцивая последним, потому что каждый раз значение $i увеличивается

   
 
 автор: cheops   (14.09.2006 в 20:15)   письмо автору
 
   для: LuxeMate   (14.09.2006 в 20:06)
 

Это цикл, выражение $i = 0 задаёт начальные условия цикла, который будет работать до тех пор пока выражение $i<count($_GET['check']) будет истинным, проще говоря, пока $i будет меньше количества элементов в массиве $_GET['check']. Последнее выражение $i++ увеличивает значение переменной $i на единицу на каждой итерации цикла.

   
 
 автор: CrazyAngel   (14.09.2006 в 20:17)   письмо автору
 
   для: LuxeMate   (14.09.2006 в 20:06)
 

инициализируется счетчик $i со стартовым значением 0;
выполнять пока $i меньше count($_GET['check']);
каждый раз(каждое выполнение блока кода) привавлять к счетчику $i единицу...

   
 
 автор: LuxeMate   (14.09.2006 в 20:20)   письмо автору
 
   для: CrazyAngel   (14.09.2006 в 20:17)
 

Какое разнообразие ответов,но все сводятся к одному,к тому что я понял как это работает! :)
Спасибо вам!

   
 
 автор: CrazyAngel   (14.09.2006 в 20:25)   письмо автору
 
   для: LuxeMate   (14.09.2006 в 20:20)
 

лучше для этого использовать специальный цикл foreach

   
 
 автор: Wita1y   (14.09.2006 в 22:36)   письмо автору
 
   для: CrazyAngel   (14.09.2006 в 20:25)
 

Покажите как это будет выглядеть.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования