2012-01-17 3 views
1

私は、MySQLクエリからすべての結果を出力するのに使うwhileループとforeachループを持っています。以下はwhile文とforeach文のコードです。php- foreach文の結果を複製する

WHILE:

while ($row_questions = mysql_fetch_array($result_questions)) { 

$step_number[]  = $row_questions['step_number']; 

if ($row_questions['step_number_sub'] != 0) { 
    $step_number_sub[] = $row_questions['step_number_sub']; 
} else { 
    $step_number_sub[] = "0"; 
}; 

if ($row_questions['step_required'] != 0) { 
    $step_required[] = "*"; 
} else { 
    $step_required[] = ""; 
}; 

$step_description[] = $row_questions['step_description']; 
$step_outcome[]  = $row_questions['step_outcome']; 
$step_equipment[] = $row_questions['step_equipment']; 
$test_changes[]  = $row_questions['test_changes']; 
}; 

と私のFOREACH:

foreach ($step_number as $i => $step){ 
    $even_odd = ('-odd' != $even_odd) ? '-odd' : ''; 
    echo '<section class="zebra'.$even_odd.'">'; 
    echo '<div class="span-2 number"><strong>'.$step_number[$i].'</strong></div>'; 
    echo '<div class="span-20 description">'.$step_description[$i].'</div>'; 
    echo '<div class="span-2">'.$step_required[$i].'</div>'; 
    if ($step_outcome[$i] != null) { 
     echo '<div class="span-22 outcome"><strong>Desired Outcome</strong><br>'.$step_outcome[$i].'</div>'; 
    } 
    echo '<div class="clear"></div>'; 
    echo '<article class="results">'; 
    echo '<div class="span-10">Did this step match the desired outcome?</div>'; 
    echo '<div class="span-10">Notes:</div>'; 
    echo '<div class="span-10"> 
      <select name="question_'.$step[$i].'" id="question_'.$step[$i].'" required aria-required="true"> 
      <option name="pass" value="Pass">Yes, this step was completed successfully</option> 
      <option name="fail" value="Fail">No, this step failed to complete. See notes below</option> 
      </select> 
      </div>'; 
    echo '<div class="span-10"><textarea name="question_'.$step[$i].'" id="question_'.$step[$i].'" class="nots"></textarea></div>'; 
    echo '</article>'; 
    echo '<div class="clear"></div>'; 
    echo '</section>'; 
}; 

私は同じ結果(4)の複数のバージョンを取得しています。事前にお手伝いをしていただき、他の情報が必要な場合はお知らせください。

+0

これらの2つのループの間の 'print_r($ step_number) 'の出力とは何ですか? – Corubba

+3

クエリが重複を作成しているかどうかを確認しましたか(たとえば、phpmyadminを使用していますか?) – Aerik

+0

Masterful!私のSQLでした。私はドルです。本当にありがとうAerik! – prosborne

答えて

1

複数の配列を使用しないでください。各要素にクラス構造または配列を使用します。これを行う簡単な方法は:

while ($row_questions = mysql_fetch_array($result_questions)) 
    questions[] = $row_questions; 

foreach($questions as $question) 
{ 
    $even_odd = ('-odd' != $even_odd) ? '-odd' : ''; 
    echo '<section class="zebra'.$even_odd.'">'; 
    echo '<div class="span-2 number"><strong>'.$question['step_number'].'</strong></div>'; 
    echo '<div class="span-20 description">'.$question['step_description'].'</div>'; 
    echo '<div class="span-2">'.$question['step_required'].'</div>'; 
    if ($question['step_outcome'] != null) 
    { 
     echo '<div class="span-22 outcome"><strong>Desired Outcome</strong><br>'.$question['step_outcome'].'</div>'; 
    } 
    ... you get the drift ... 
    }; 
+0

すごい!問題は私のSQLにあったにもかかわらず、これは私が持っていたよりもはるかに良い解決策です!ありがとうございます - – prosborne

+0

ようこそ。 – dar7yl

関連する問題