2016-09-08 3 views
0

У меня есть таблица для клиентов, которая хранит некоторую базовую информацию, но в одной строке она также хранит массив, который выглядит примерно так: «1-1, 2-1 , 3-1, 6-1, 7-1, 16-1, 17-1, 18-1 "Отправить массив в строку mysql и снова разбить на переменные

запятые разделяют« параметры », число перед тире - это идентификатор« option »и число после после тире - это «опция» «количество». у каждого клиента могут быть разные «варианты» с разными «величинами»

У меня есть это до сих пор, но я понятия не имею, куда идти отсюда.

<?php 
     $out = ""; 
     $id_client =""; 
     $id_client = $_SESSION['client_cod_card']; 
     $sql="SELECT * FROM customer WHERE client_cod_card='$id_client'"; 
    $result = mysql_query ($sql); 
    while ($row = mysql_fetch_array($result)){ 

     $in = $row['options']; 
     $out = str_replace(',', '<br />', $in); 

     echo $out;} ?> 

, и это дает мне эту

1-1
2-1
3-1
6-1
7-1
16-1
17-1
18-1

Есть ли способ отбросить эту строку во что-то вроде :

$ option_id - $ option_quantity
$ option_id - $ option_quantity
$ option_id - $ option_quantity
$ option_id - $ option_quantity
..

поэтому я могу использовать эти цифры и получить информацию каждый вариант от другую таблицу и отрегулируйте количество.

Надеюсь, мне удалось объяснить это несколько понятным, и я надеюсь, что кто-то может дать мне руку, поскольку это самая неприятная вещь, в которую я попал. Спасибо всем заранее!

+3

Не рекомендуется хранить значения, разделенные запятыми, в базах данных. Это затрудняет поиск и обновление. – Barmar

+0

хотя я полностью согласен с Barmar (кто не мог?), Это может помочь: http://php.net/manual/en/function.serialize.php – Jeff

+0

@Barmar ваше решение идеально! Я знаю, что я укусил больше, чем могу пережевывать этот проект, но застрять - это единственный способ узнать новые вещи в этой области :)) Спасибо! –

ответ

1

Вы можете использовать explode(), чтобы разделить значение на его части. Сначала разделите весь список на запятые, затем разделите каждый параметр на дефисы.

$option_array = explode(',', $row['options']; 
foreach ($option_array as $opt) { 
    list($option_id, $option_quantity) = explode('-', $opt); 
    // Use $option_id and $option_quantity here 
} 
Смежные вопросы