2011-12-15 1 views
1

У меня есть таблица mysql с столбцами id, f1, f2, f3, ..., f20, где id is productID и f1, ... f20 являются функциями продукта. В зависимости от каждого продукта некоторые могут иметь все, ни один или только некоторые столбцы заполнены.php & mysql - цикл через столбцы одной строки и передачи значений в массив

Каждый столбец содержит строки с разделителями вроде # б # C# D, где а, б, в, г являются значения на разных языках (а = английский, Ь = французский и т.д.)

мне нужно выбрать row по его id, взорвать значение каждого столбца (f1, f2 ...) с помощью «#», чтобы получить нужную мне часть языка, а затем передать значения в массив для использования на странице спецификации продукта.

Как прокрутить выбранную строку (я использую $ row = my_fetch_array) и поместить взорванное значение в один размерный массив, например $ specs = ('green', 'M', '100', ' дети ...) и т. д.? PS: Я знаю, это сложно, но я не могу придумать лучшую идею прямо сейчас.

+0

Можем ли мы увидеть код? – Toto

+0

Можете ли вы дать нам один полный пример строки таблицы? – noob

+0

На данный момент у меня есть мой стол mysql и много эскизов на бумаге! – bikey77

ответ

4

Попробуйте это:

$result = mysql_query("..."); 

while ($row = mysql_fetch_array($result, MYSQL_NUM)) { 
    $arr = array(); 
    foreach ($row as $k=>$v) 
    { 
     $features = explode("#", $v); 
     $value = $features[1]; // get the specific language feature 
     $arr[] = $value; 
    } 
    $specs = join(", " , $arr); 
} 
+1

Это сработало сразу, спасибо! Я не знал о функции соединения, хорошо. – bikey77

+0

Привет, @swatkins ... не могли бы вы помочь мне в решении этого http://stackoverflow.com/questions/28493201/how-to-find-the-total-distance-traveled-based-on-ge-points-stored -in-database, связанная с тем же вопросом – Prabs

0

Не уверен, что это лучший способ Togo, но вы можете определить массив с LANGS, затем получить доступ к результату Ланг

<?php 
$langs=array('eng'=>0,'fr'=>1,'ger'=>2,'geek'=>3); 


while ($row=mysql_fetch_assoc($result)) { 
    $specs=explode('#',$row['f1']); 
    $other=explode('#',$row['f2']); 
    ... 
} 
//Get lang from cookie that you could set elsewhere 
$lang=(isset($_COOKIE['lang']))?$_COOKIE['lang']:'eng'; 

echo $specs[$langs[$lang]]; 

?> 
0

Мое решение для того, как я поймем вопрос:

// Make a MySQL Connection 

$sQuery = "SELECT f1,f2,... FROM table WHERE id = ..."; 

$oResult = mysql_query($sQuery) or die(mysql_error()); 

//Fetch assoc to use the column names. 
$aRow = mysql_fetch_assoc($oResult); 

//Prepare the product properties array 
$aProductProperties = array("English"=>array(),"French"=>array(),"Dutch"=>array()); 

//Loop over all the columns in the row 
foreach($aRow as $sColName=>$sColVal){ 
//Explde the column value 
    $aExplodedCol = explode("#",$sColVal); 
    //The code below could be nicer when turned into a looped that looped over every language, 
    //But that would make the code less readable 
    $aProductProperties['English'][$sColName] = $aExplodedCol[0]; 
    $aProductProperties['French'][$sColName] = $aExplodedCol[1]; 
    $aProductProperties['Dutch'][$sColName] = $aExplodedCol[2]; 

} 

//Done, you should now have an array with all the product properties in every language 
Смежные вопросы