Deutsch

PHP + MySQL

185  
Mik78 посетитель01.04.05 08:32
Mik78
01.04.05 08:32 
Привет!
У меня такой вопрос:
Как в МайЭсКуЭл-приказе (в ПХП-скрипте) сделать, чтобы при отсутствии Переменной он брал все данные.
Например:
"SELECT vName From dbase WHERE id = $VAR1";
Как сделать, чтобы при отсутствии $VAR1 показывал бы имена всех id (тоесть весь список)
Заранее благодарю.
Пьянство не рождает пороков: оно их обнаруживает. Нюрнбергская жизнь молодёжи
#1 
Uzbek коренной житель01.04.05 08:44
Uzbek
NEW 01.04.05 08:44 
в ответ Mik78 01.04.05 08:32
Можно сначала опросить значение переменной и уже исходя из этого делать селект или - или
Одна голова - хорошо, а в тюбетейке лучше!
http://www.urasbajew.de
Снаряды носите бережно, пусть вас видят, а не помнят!!!http://uzbek01.blogspot.com
#2 
Mik78 посетитель01.04.05 09:17
Mik78
NEW 01.04.05 09:17 
в ответ Uzbek 01.04.05 08:44
Да, но ето поможет только при одной Переменной.
А если их 5-10, причем если ее нет, то просто не спрашивать, а брать всех, то как тогда.
Например:
select vName from dbase where id = $VAR1 AND vDatum = $VAR2 AND muster = $VAR3...
Пьянство не рождает пороков: оно их обнаруживает. Нюрнбергская жизнь молодёжи
#3 
Tomasson коренной житель01.04.05 12:44
Tomasson
NEW 01.04.05 12:44 
в ответ Mik78 01.04.05 09:17
А если их 5-10, причем если ее нет, то просто не спрашивать, а брать всех, то как тогда.
Например:
select vName from dbase where id = $VAR1 AND vDatum = $VAR2 AND muster = $VAR3...

Сделай переменную со строкой запроса str = "select vName from dbase" и в зависимости от значний переменных $VAR1...$VARn, добавляй в нее переменные с допустимыми значениями: str = str + "where id=$VAR1" и т.д.
А еще лучше, при недопустимых значениях id после *select vName from dbase* ничего не добавлять.
Можно еще при недопустимых значениях присваивать промежутки: *vDatum > 12.04.2004*
Все зависит от конкретного случая и синтаксиса (в разных языках бывают особенности в строке запроса)
http://tomasson.strana.germany.ru/mp3/Skripka.mp3
#4 
Mik78 посетитель01.04.05 13:05
Mik78
NEW 01.04.05 13:05 
в ответ Tomasson 01.04.05 12:44
спасибо
Пьянство не рождает пороков: оно их обнаруживает. Нюрнбергская жизнь молодёжи
#5 
Murr свой человек01.04.05 18:09
Murr
NEW 01.04.05 18:09 
в ответ Mik78 01.04.05 09:17
Так и напиши :
МойСписокПеременных Список - пары имя и значение, а дальше в цикле проверочку и добавление sql-кода...
Делал такое для америкосов... посмотрели, сказали - слишком сложно, наши прораммеры не понимают как оно работает... А списки генерились прямо по именам полей в таблицах...
<--- nobody harmed in this action -->
#6 
digital_pilot коренной житель02.04.05 00:32
NEW 02.04.05 00:32 
в ответ Mik78 01.04.05 08:32
я, признаться, не знаю, как в php технически выглядит отсутствие значения переменной, но в похожей ситуации (на mssql) поступал примерно так:
SELECT vName From dbase
WHERE (($VAR1 <> пустое_значение AND [id] = $VAR1) OR ($VAR1 = пустое_значение))
--------------
FC Barcelona: 1:0 win at fucking Riazor
#7 
voxel3d свой человек02.04.05 00:42
voxel3d
NEW 02.04.05 00:42 
в ответ digital_pilot 02.04.05 00:32
Так не стоит делать, на ПХП проверка переменной и формирование WHERE- строки будет быстрее.
---
Идиотов и фриков перевоспитать невозможно!
Dropbox - средство синхронизации и бэкапа файлов.
#8 
digital_pilot коренной житель02.04.05 00:47
NEW 02.04.05 00:47 
в ответ voxel3d 02.04.05 00:42, Последний раз изменено 02.04.05 00:48 (digital_pilot)
ясно. Ну я это так, в копилку написал. На mssql меня оч сильно ломало динамические селекты генерить или с IF'ам возиться.
--------------
FC Barcelona: 1:0 win at fucking Riazor
#9 
  validol свой человек02.04.05 08:46
NEW 02.04.05 08:46 
в ответ Mik78 01.04.05 08:32
я вот тут такой скриптик набросал
Если переменная существует,то она вставляется в запрос.
Вначале, конечно надо определится с полями табелицы, какая переменная са какое поле отвечает

/*кейПеременной=>Имя поля ДБ*/
$Felder= array("id"=>"feldId","datum"=>"feldDatum","muster"=>"feldMuster",0);
/* Переменные*/
/*Если какойто переменной не будет существовать, она не появится в запросе*/
$VAR['id']=1;
$VAR['datum']=2;
$VAR['muster']=3;
// Формирование Запроса
$WHERE="";
$i=0;
foreach ($VAR as $Key=>$Value){
if($i==count($VAR)-1){$AND="";}else{$AND=" AND ";}
$WHERE.=$Felder[$Key]." = ".$Value.$AND ;
$i++;
}
$Query="SELECT vName FROM dbase WHERE ".$WHERE;
******
#10 
as400 старожил02.04.05 09:43
as400
NEW 02.04.05 09:43 
в ответ validol 02.04.05 08:46
скрипт
осталось только предусмотреть что все поля могут быть пустыми.
$aWhere = array(,0);
foreach ($VAR as $Key=>$Value){
if ($Value != ""){
$aWhere[] = $Felder[$Key]." = '".$Value."'";
}
}
if(count($aWhere)) {
$sWhere = " WHERE ".implode(" AND ",$aWhere,0);
}
$Query="SELECT vName FROM dbase".$sWhere;
http://as400.strana.de/tv/ajara_tv.xml
#11