в зависимости от значения переменной сделать одну или несколько записей MySQL

Статус
В этой теме нельзя размещать новые ответы.

funest

Постоялец
Регистрация
2 Июл 2007
Сообщения
146
Реакции
39
Есть переменная, в которой может находится несколько значений. Например $var = 1; либо $var = 1, 2, 3;
В зависимости от значения, мне нужно добавить в MySQl таблицу. Но если в переменной несколько значений, то действие нужно повторить с другим значением.
все это находится в цикле for
Если бы в переменной было одно значение, то сделал бы вот так:
PHP:
for (i=0; i<count($db); $i++) {
$id = $db[$i]->id;
 if(strstr($id, '1')) {
   добавление записи 1;
 } elseif (strstr($id, '2')) {
   добавление записи 2;
 } else {
   добавление записи 3;
 }
Но в переменной несколько значений и соответственно надо добавить несколько записей. Помогите, совсем запутался
 
PHP:
$ids = explode(',',$db[$i]->id);
foreach($ids as $id ) {
	switch($id) {
		case '1':
			добавление записи 1; 
			break;
		case '2':
			добавление записи 2; 
			break;
		default:
			добавление записи 1; 
	}
}
 
Сейчас попробую )
 
А зачем там switch?
Просто
PHP:
foreach($ids as $id) {
    $id = (int)$id;
    if($id != 0) {
        mysql_query('INSERT INTO `table` (`id`, `value`) VALUES ('.$id.', "blahblah")');
    }
}
 
А зачем там switch?
Просто
PHP:
foreach($ids as $id) {
    $id = (int)$id;
    if($id != 0) {
        mysql_query('INSERT INTO `table` (`id`, `value`) VALUES ('.intval($id).', "blahblah")');
    }
}
В переменной не цифровые значения, это я привел для примера
 
Тогда так:
PHP:
$values = explode(',',$db[$i]->id);
foreach($values as $value) { 
    mysql_query('...');
}
Ну и естественно $value нужно обезопасить, если она от пользователя приходит.
 
Тогда так:
PHP:
$values = explode(',',$db[$i]->id);
foreach($values as $value) { 
    mysql_query('...');
}
Ну и естественно $value нужно обезопасить, если она от пользователя приходит.
Это парсер XML.
То есть можно сократить этот код:
PHP:
$types = explode(',',$db[$i]->type);
foreach($types as $type ) {
    switch($type) {
        case 'Комедия':
			mysql_query("INSERT INTO jos_zoo_core_category_item VALUES (3, '1', $id)", $msconnect); 
            break;
        case 'Боевик':
			mysql_query("INSERT INTO jos_zoo_core_category_item VALUES (3, '2', $id)", $msconnect); 
            break;
        case 'Драма':
			mysql_query("INSERT INTO jos_zoo_core_category_item VALUES (3, '3', $id)", $msconnect); 
            break;
        case 'Детектив':
			mysql_query("INSERT INTO jos_zoo_core_category_item VALUES (3, '4', $id)", $msconnect); 
            break;
        case 'Мистика':
			mysql_query("INSERT INTO jos_zoo_core_category_item VALUES (3, '5', $id)", $msconnect); 
            break;
        case 'Фантастика':
			mysql_query("INSERT INTO jos_zoo_core_category_item VALUES (3, '6', $id)", $msconnect); 
            break;
		case 'Исторический':
			mysql_query("INSERT INTO jos_zoo_core_category_item VALUES (3, '7', $id)", $msconnect); 
            break;
        case 'Документальный':
			mysql_query("INSERT INTO jos_zoo_core_category_item VALUES (3, '8', $id)", $msconnect); 
            break;
        case 'Мультфильм':
			mysql_query("INSERT INTO jos_zoo_core_category_item VALUES (3, '9', $id)", $msconnect); 
            break;
        case 'Отечественный':
			mysql_query("INSERT INTO jos_zoo_core_category_item VALUES (3, '10', $id)", $msconnect); 
            break;
        case 'Семейный':
			mysql_query("INSERT INTO jos_zoo_core_category_item VALUES (3, '11', $id)", $msconnect); 
            break;
        case 'Мелодрама':
			mysql_query("INSERT INTO jos_zoo_core_category_item VALUES (3, '12', $id)", $msconnect); 
            break;
        case 'Приключения':
			mysql_query("INSERT INTO jos_zoo_core_category_item VALUES (3, '13', $id)", $msconnect); 
            break;
        case 'Военный':
			mysql_query("INSERT INTO jos_zoo_core_category_item VALUES (3, '14', $id)", $msconnect); 
            break;
        case 'Триллер':
			mysql_query("INSERT INTO jos_zoo_core_category_item VALUES (3, '15', $id)", $msconnect); 
            break;
        case 'Ужасы':
			mysql_query("INSERT INTO jos_zoo_core_category_item VALUES (3, '16', $id)", $msconnect); 
            break;
        case 'Фэнтэзи':
			mysql_query("INSERT INTO jos_zoo_core_category_item VALUES (3, '17', $id)", $msconnect); 
            break;
        case 'Спорт':
			mysql_query("INSERT INTO jos_zoo_core_category_item VALUES (3, '18', $id)", $msconnect); 
            break;
        case 'Телепередача':
			mysql_query("INSERT INTO jos_zoo_core_category_item VALUES (3, '19', $id)", $msconnect); 
            break;
        case 'Анимация':
			mysql_query("INSERT INTO jos_zoo_core_category_item VALUES (3, '20', $id)", $msconnect); 
            break;
        case 'Пародия':
			mysql_query("INSERT INTO jos_zoo_core_category_item VALUES (3, '21', $id)", $msconnect); 
            break;
        case 'Эротика':
			mysql_query("INSERT INTO jos_zoo_core_category_item VALUES (3, '22', $id)", $msconnect); 
            break;
        default:
           $janr = 0;
    }
	}
До этого:
PHP:
$values = explode(',',$db[$i]->id);
foreach($values as $value) { 
    mysql_query("INSERT INTO jos_zoo_core_category_item VALUES (3, '$value', $id)", $msconnect); 
}
Помоему я что-то упустил )))
 
Вы не уточняли этого :) И тем не менее, сократить можно:
PHP:
$values = 'Комедия, Драма';
$values = explode(',',$values);
$genres = array(
    'комедия'        => '1',
    'боевик'         => '2',
    'драма'          => '3',
    'детектив'       => '4',
    'мистика'        => '5',
    'фантастика'     => '6', 
    'исторический'   => '7', 
    'документальный' => '8',
    'мультфильм'     => '9',
    'отечественный'  => '10',
    'семейный'       => '11',
    'мелодрама'      => '12',
    'приключения'    => '13',
    'военный'        => '14',
    'триллер'        => '15',
    'ужасы'          => '16',
    'фэнтэзи'        => '17',
    'спорт'          => '18',
    'телепередача'   => '19',
    'анимация'       => '20',
    'пародия'        => '21',
    'эротика'        => '22'
);
foreach($values as $value) { 
    $value = strtolower(trim($value));
    if(array_key_exists($value, $genres)) {
        mysql_query("INSERT INTO jos_zoo_core_category_item VALUES (3, '".$genres[$value]."', $id)", $msconnect);
    }
}
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху