behz4d
behz4d

Reputation: 1849

Parse string and store it into db

Continuing this question:

I have this string:

$table_summary = '
    [Category Name 1=>Title x:Description y,Title q:Description n,Title r:Description m,]

    !£|£!

    [Category Name 2=>Title z:Description a,Title j:Description k,Title p:Description f,]

    !£|£!
';

As you see, there is a separator in the string as !£|£!, and I have 2 tables:

products_spec_subjects
id     product_id     val

products_spec_details
id     title     description    subject_id

I want to store the mentioned string into these tables, while category name will be stored into the 1st table, and it's details like title and description will be stored into the 2nd table and will be linked to the 1st table using subject_id as foreign key.

so after all, the mentioned string should be stored into db like (e.x $product_id=12):

products_spec_subjects
1      12      Category Name 1
2      12      Category Name 2


products_spec_details
1    Title x     Description y      1
2    Title q     Description n      1
3    Title r     Description m      1
4    Title z     Description a      2
5    Title j     Description k      2
6    Title p     Description f      2

Here is my incomplete code so far:

$technical_specifications_arr = explode('!£|£!', $table_summary);
        unset($technical_specifications_arr[count($technical_specifications_arr) - 1]);
        foreach($technical_specifications_arr as $main_value){
            $i = 0;
            $this_arr = explode('=>', $main_value);
            foreach($this_arr as $value){
                $cat_name = substr($this_arr[0], 1);
                $details = substr($this_arr[1], 0, -1);
                    if($i == 0){
                    $tech_main_insert = mysql_query("INSERT INTO products_spec_subjects (product_id, val) VALUES ('$product_id', '$cat_name')") or die(mysql_error());  
                    $this_main_id = mysql_insert_id($link);
                    }
                $i++;
                $another_arr = explode(',', $details);
                unset($another_arr[count($another_arr) - 1]);
                foreach($another_arr as $another_val){

                    $final = explode(':', $another_val);
                    foreach($final as $final_value){
                        // now I can't separate the titles and description here
                    }
                }   
            }   
        }

I appreciate any help.

Upvotes: 0

Views: 57

Answers (1)

Drew
Drew

Reputation: 4373

You don't need to iterate the $final loop. Just pull your values out:

            foreach($another_arr as $another_val){  
                $final = explode(':', $another_val);                    
                // $final[0] = title
                // $final[1] = desc
                echo $final[0].' - '.$final[1]."<br />\n";
            }

Upvotes: 2

Related Questions