1

ifステートメントをコンパイルして、応答タイプがであるかどうかを確認するか、mysqli変数を確認しようとしてSingleMultipleます。Single次にオプションをラジオボタンとして出力する場合はMultiple、オプションをチェックボックスとして出力します。

しかし、のifステートメント内で未定義の変数エラーを受け取ります$qandaReplyType。この問題はどのように解決できますか?

以下のコード:

    $qandaquery = "SELECT q.QuestionId, r.ReplyType
                    FROM Question q
                    LEFT JOIN Reply r ON q.ReplyId = r.ReplyId

                    WHERE SessionId = ?
                    GROUP BY q.QuestionId
                    ORDER BY RAND()";

    $qandaqrystmt=$mysqli->prepare($qandaquery);
    // get result and assign variables (prefix with db)
    $qandaqrystmt->execute(); 
    $qandaqrystmt->bind_result($qandaQuestionId,$qandaReplyType);


    $arrReplyType = array();


    while ($qandaqrystmt->fetch()) {

    $arrReplyType[ $qandaQuestionId ] = $qandaReplyType;
  }

    $qandaqrystmt->close();





    function ExpandOptionType($option) { 

    $options = explode('-', $option);
    if(count($options) > 1) {
        $start = array_shift($options);
        $end = array_shift($options);
        do {
            $options[] = $start;
        }while(++$start <= $end);
     }
     else{
        $options = explode(' or ', $option);
     }

     if($qandaReplyType == 'Single'){
     foreach($options as $indivOption) {
         echo '<div class="ck-button"><label class="fixedLabelCheckbox"><input type="radio" name="options_<?php echo $key; ?>[]" id="option-' . $indivOption . '" value="' . $indivOption . '" /><span>' . $indivOption . '</span></label></div>';
     }
 }else if($qandaReplyType == 'Multiple'){
           foreach($options as $indivOption) {
         echo '<div class="ck-button"><label class="fixedLabelCheckbox"><input type="checkbox" name="options_<?php echo $key; ?>[]" id="option-' . $indivOption . '" value="' . $indivOption . '" /><span>' . $indivOption . '</span></label></div>';
     }
}
}

foreach ($arrQuestionId as $key=>$question) {

echo ExpandOptionType(htmlspecialchars($arrOptionType[$key]));

}

?>
4

2 に答える 2

3

$qandaReplyType関数内には存在しません。

global $qandaReplyType変数のグローバルバージョンを使用する前に、関数内に含める必要があります。

PHPの可変スコープをブラッシュアップするのに害はありませんでした。


編集:見た目では$arrQuestionId$arrOptionType関数スコープにも含まれていません。
global $qandaReplyType, $arrQuestionId, $arrOptionType;

于 2013-02-13T21:08:09.603 に答える
0

うーん、うーん.....あなたの関数....これを試してみてください:

function ExpandOptionType($option) { 
$qandaReplyType = "Single";
$options = explode('-', $option);
if(count($options) > 1) {
    $start = array_shift($options);
    $end = array_shift($options);
    do {
        $options[] = $start;
    }while(++$start <= $end);
 }
 else{
    $options = explode(' or ', $option);
 }

 if($qandaReplyType == 'Single'){
 foreach($options as $indivOption) {
     echo '<div class="ck-button"><label class="fixedLabelCheckbox"><input type="radio"
    name="options_<?php echo $key; ?>[]" id="option-' . $indivOption . '" value="' . 
 $indivOption . '" /><span>' . $indivOption . '</span></label></div>';
 }
 }else if($qandaReplyType == 'Multiple'){
       foreach($options as $indivOption) {
     echo '<div class="ck-button"><label class="fixedLabelCheckbox"><input type="checkbox" name="options_<?php echo $key; ?>[]" id="option-' . $indivOption . '" value="' . $indivOption . '" /><span>' . $indivOption . '</span></label></div>';
 }
 }
 }

これが機能する場合、$ qandaReplyTypeは関数の「内部」で定義されていません。その値を回復する方法を見つける必要があります。または、関数に別のパラメーターを追加して、次のように$qandaReplyType値を渡します。

function ExpandOptionType($option,$qandaReplyType)

Saludos;)

于 2013-02-13T21:14:38.383 に答える