Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: ввести переменную в конструкцию switch-case
Покинул форум
Сообщений всего: 29
Дата рег-ции: Окт. 2009 Откуда: Екатеринбург, Россия
Помог: 0 раз(а)
Добрый вечер!
Объясню свою ситуацию: есть сайт, в index.php есть такая конструкция:
Цитата:
<?php
switch ($content){
case catalog: include "/catalog/123.htm"; break;
........
case (1) : include "/catalog/(2).htm";break;
}
Далее, необходимо "заинклудить" в место (1) переменную и в (2) название странички, ссылка на которую создается динамически, путем взятия информации из БД (эта страничка также "заинклудена" в index.php), а именно -
То есть, если ID строки равен 3, а значение столбца "b-k" равно "b", то ссылка примет вид index.php?content=b3.htm
Необходимо, чтобы в конструкции в index.php появилась ссылка вида /catalog/b3.htm, переход на которую осуществлялся бы при значении переменной $content=b3.
То есть, желаемый результат должен выглядеть вот так:
Цитата:
<?php
switch ($content){
case catalog: include "/catalog/123.htm"; break;
........
case b3 : include "/catalog/b3.htm";break;
}
Вроде понятно объяснил, если что непонятно, уточните, пожалуйста
Заранее премного благодарен.
Покинул форум
Сообщений всего: 29
Дата рег-ции: Окт. 2009 Откуда: Екатеринбург, Россия
Помог: 0 раз(а)
DeepVarvar пишет:
А что и в каком порядке инклудится? И выдает ли ошибки какие если вы чтото пробовали?
в index.php (с конструкцией case) инклудится файл catalog.php (с запросом в БД).
В итоге необходимо заинклудить страничку с непосредственно товаром, на которую ссылается catalog.php, вместо него же.
(сам знаю, что по-ламерски и совершенно неверно в корне, не ругайте) и получаю следующую ошибку: Parse error: syntax error, unexpected T_VARIABLE in index.php on line 198 (Добавление)
попробовал написать в конструкции case нечто вроде
теперь идет ошибка
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting ',' or ';' in index.php on line 200.
Ругается как раз на эту строку снова. (Добавление)
по большому счету, можно облегчить задачу: в index.php выбрать все записи и выбрать необходимые значения столбцов ID и b-k. В принципе, это можно сделать следующим путем:
Покинул форум
Сообщений всего: 29
Дата рег-ции: Окт. 2009 Откуда: Екатеринбург, Россия
Помог: 0 раз(а)
DeepVarvar пишет:
include ("/catalog/".$rows['b-k'].$rows['id'].".htm"); (Добавление)
КОНКАТЕНАЦИЯ..........
не сканало... так как должно появиться много строк case ... include (так как в БД далеко не одна строчка), то надо каким-либо образом вставить в конструкцию switch-case цикл с выводом.
я пробовал
switch ($content){
case catalog: include "catalog.php"; break;
........
$res = mysql_query("SELECT * FROM flowers", $link);
while($rows= mysql_fetch_array($res,MYSQL_ASSOC)) { case $rows['b-k'].$rows['id']: include ("/catalog/".$rows['b-k'].$rows['id'].".htm");}
}
не выходит, ругается на строку, выделенную красным, и пишет "Parse error: syntax error, unexpected T_CASE in index.php on line 221"
Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006 Откуда: Israel
Помог: 3 раз(а)
А зачем вам вообще в данном случае switch ?
Помимо того, что вы всунули case не в switch а в while.
----- Truly yours, Sasha.
DeepVarvar
Отправлено: 23 Октября, 2009 - 22:49:18
Активный участник
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
Помог: 353 раз(а)
аха....
1.принимаем $_GET
2.ищем в базе совпадение
if (true) {include("тот нужный шаблон");}
else {include("чтото еще - например !такого товара нет!");} (Добавление)
А если уж очень хочется заюзать "вилы" то спрячьте их в "кейс"... ::biggrin24.gif::
Покинул форум
Сообщений всего: 29
Дата рег-ции: Окт. 2009 Откуда: Екатеринбург, Россия
Помог: 0 раз(а)
DeepVarvar пишет:
аха....
1.принимаем $_GET
2.ищем в базе совпадение
if (true) {include("тот нужный шаблон");}
else {include("чтото еще - например !такого товара нет!");} (Добавление)
А если уж очень хочется заюзать "вилы" то спрячьте их в "кейс"... ::biggrin24.gif::
можно более развернуто? я пытаюсь понять 1 пункт... что имелось в виду?
Да и вынужден я через case делать, т.к. уже вся навигация на нем построена. А если делать отдельно новые ссылки (другим способом), получается косяк...
Сильно не ругайте, я лишь начинающий :)
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
Помог: 353 раз(а)
"вилы" в "кейс" - попробуйте всеже... хотя подозреваю что работать не будет... (Добавление)
так что скорее всего придется вам переписывать все заново...
Покинул форум
Сообщений всего: 29
Дата рег-ции: Окт. 2009 Откуда: Екатеринбург, Россия
Помог: 0 раз(а)
DeepVarvar пишет:
"вилы" в "кейс" - попробуйте всеже... хотя подозреваю что работать не будет... (Добавление)
так что скорее всего придется вам переписывать все заново...
пробовал всяко..... синтаксис case не позволяе реализовать необходимого ветвления (
Цитата:
switch(выражение) {
case значение: команды;
значение должно быть одно и неизменяемое, а меня это не устраивает.
Подскажите тогда, пожалуйста, другой способ инклуда... я уже моск весь иссушил исканиями верного алгоритма. Поиск не помогает....
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.