2012-06-04 2 views
0

Я пытаюсь дать каждому textarea имя, поэтому я могу использовать их позже, чтобы отправить обратно в базу данных. С помощью этого кода у меня есть некоторые странные результаты, и я думаю, потому что я использую str_replace.Php Str_replace с циклом for

Вот код:

$description2 = mysql_result($product, 0, 'productDescription2'); 
$totalteknisk = preg_match_all('/x(a|b|d|e)/', $description2, $matches); 
$searchArray = array('xa', 'xb', 'xc', 'xd', 'xe'); 

if ($description2 !=""){ 
for($z=1;$z <= $totalteknisk; $z++){ 
$xa = '<textarea name="'. $z .'" style="background-color:#FFFFFF;resize: none; height: 20px; width: 200px;">'; 
$z++; 
$xb ='</textarea><textarea name="'. $z .'" style="background-color:#FFFFFF;resize: none; height: 20px; width: 200px;">'; 
$z++; 
$xc = '</textarea><br>'; 
$xd = '<textarea name="'. $z .'" style="background-color:#EAF2D3;resize: none; height: 20px; width: 200px;">'; 
$z++; 
$xe = '</textarea><textarea name="'. $z .'" style="background-color:#EAF2D3;resize: none; height: 20px; width: 200px;">'; 
$replaceArray = array($xa, $xb, $xc, $xd, $xe); 
$teknisk .= str_replace($searchArray, $replaceArray, $description2); 
}        
} 

Пример строки из базы данных xa1xb2xcxd3xe4xcxa5xb6xc (DESCRIPTION2)

Как вы можете видеть, что я пытаюсь просто петлю это все и дать ему значение от 1 до $totalteknisk.

Я открыт для предложений о том, как я могу выполнить эту работу.

+2

И какими были бы эти «странные результаты»? – JJJ

+0

Дозатор дает значения 1,2, 3, 4, 5, 6, 7, 8 и т. Д., Но он повторяет значения 1,2,3,4 1,2,3,4 1,2,3,4 1 , 2,3,4 затем переходит к 5,6,7,8 5,6,7,8 .. и т. Д. – oBo

ответ

0

я решил его немного по-другому, с помощью preg_replace_callback (...)

$description2 = 'xa1xb2xcxd3xe4xcxa5xb6xc'; 

$html = preg_replace_callback('/x(?:a|b|c|d|e)/', function($match) { 
    static $count; 

    $count++; 

    switch($match[0]) { 
     case 'xa': 
      return "<textarea name=\"$count\" style=\"background-color:#FFFFFF;resize: none; height: 20px; width: 200px;\">"; 
     case 'xb': 
      return "</textarea><textarea name=\"$count\" style=\"background-color:#FFFFFF;resize: none; height: 20px; width: 200px;\">"; 
     case 'xc': 
      return "</textarea><br />"; 
     case 'xd': 
      return "<textarea name=\"$count\" style=\"background-color:#EAF2D3;resize: none; height: 20px; width: 200px;\">"; 
     case 'xe': 
      return "</textarea><textarea name=\"$count\" style=\"background-color:#EAF2D3;resize: none; height: 20px; width: 200px;\">"; 
    } 
}, $description2); 

$teknisk .= $html; 

Я также хотел бы предложить, что вы не используете только номера для атрибута «имя» в прокручиваемым. Вам может потребоваться использовать другое имя, например fields[$count], а затем обратиться к нему по адресу $_POST['fields'] ...

+0

Да, это был мой план, но мне нужно было что-то для начала: D Удивительный чувак! Большое спасибо! – oBo

Смежные вопросы