【问题标题】:While loop use variable 2 timesWhile 循环使用变量 2 次
【发布时间】:2017-06-02 15:12:46
【问题描述】:

大家好,我有一个 for 循环 cicle,它从 SQL 打印我的 div 和信息,我用 mysql 上的设置打印滑块字段,如滑块编号、字段位置等,问题是我有一个模态引导也要打印,但我不能在当前循环中打印它。 我的问题是,是否有存储来自 for cicle 的变量以便可以重复使用?

有代码

$ID=$row['ID'];
$sql = "SELECT NUM_Slides as valmax FROM slider_settings,Paginas, slider_config where slider_settings.ID = $ID and Paginas.ID= $ID and slider_config.ID=$ID";
$sqlconnect =$connect->query($sql);
$sqlresult =$sqlconnect->fetch_assoc();
for ($k = 1 ; $k <= $sqlresult['valmax']; $k++){	
    echo "<div class='slider1'>";
    $sql1 = "SELECT P$k as campos, tituloP$k as titulo FROM slider_settings, Paginas,slider_config where slider_settings.ID = $ID and Paginas.ID= $ID and slider_config.ID = $ID";				
    $sqlconnect1 =$connect->query($sql1);
    $sqlresult1 =$sqlconnect1->fetch_assoc();
    
    echo "<div class='titulo'>
        <h2>$sqlresult1[titulo]</h2>
    </div>";
    
    for ($l = 1 ; $l <= $sqlresult1[campos]; $l++){	
        $campo = "SELECT Butao,Titulo,Texto FROM slider_config, Paginas, slider_settings where slider_config.ID = $ID and Paginas.ID = $ID and slider_settings.ID =$ID and P_NUM = $k and Campo = $l";
        $sqlconnect2 = $connect->query($campo);
        $sqlresult2 = $sqlconnect2->fetch_assoc();

        echo "<div class='part' id='part".$l."'>
            <div id='imagem' class='button' data-toggle='modal' data-target='#myModal".$l."'>
                <img src='data:image/png;base64," . base64_encode($sqlresult2['Butao']) . "'/>
            </div>
            <div id='titulo'>
                <h4>$sqlresult2[Titulo]</h4>
            </div>
            <div id='texto'>
                $sqlresult2[Texto]
            </div>
        </div>";
    }	
    echo "</div>";
}

div里面有代码不能打印或者modal不显示

$modal = "SELECT Titulo_modal , Imagem_modal , Texto_modal FROM modal_settings , Paginas where modal_settings.ID = $ID and Paginas.ID= $ID and P_NUM_modal = $k and Campo_modal = $l";
$sqlconnect33 =$connect->query($modal);
$sqlresult33 =$sqlconnect33->fetch_assoc();
for ($n = 1 ; $n <= $sqlresult1[campos]; $n++){
    
    echo "<div class='modal fade' id='myModal".$n."'>
        <div class='modal-dialog modal-lg'>
            <div class='modal-content'>
                <div class='modal-header'>
                    <h4 class ='titulopopup'>$sqlresult33[Titulo_modal]</h4>
                    <button type='button' class='close' data-dismiss='modal'>
                    <span aria-hidden='true'>&times;</span></button>
                </div>
                <div class='modal-body'>
                    <div class='imagem'>
                        <img src='data:image/png;base64," . base64_encode($sqlresult33['Imagem_modal']) . "'/>
                    </div>
                    <div class='texto'>
                        $sqlresult33[Texto_modal]
                    </div>
                </div>
            </div>
        </div>
    </div>";
}

注意:$ID 来自另一个文件 :) 并且在代码的前半部分工作正常

【问题讨论】:

  • 取消缩进您的代码。
  • @u_mulder 我做了 :)

标签: php mysql for-loop


【解决方案1】:

也许像这样创建数组

$array = [];
for ($n = 1 ; $n <= $sqlresult1[campos]; $n++) {
    $array[$k] = $i;
}

这样你可以在其他for循环中重用存储在数组中的var

foreach ($array as $k => $i) {
    // and u get all your var :)
}

使用您的代码,您可以执行类似的操作

$ID=$row['ID'];
// here
$array = [];
//
$sql = "SELECT NUM_Slides as valmax FROM slider_settings,Paginas, slider_config where slider_settings.ID = $ID and Paginas.ID= $ID
and slider_config.ID=$ID";
$sqlconnect =$connect->query($sql);
$sqlresult =$sqlconnect->fetch_assoc();
for ($k = 1 ; $k <= $sqlresult['valmax']; $k++){    
    echo "<div class='slider1'>";
        $sql1 = "SELECT P$k as campos, tituloP$k as titulo FROM slider_settings, Paginas,slider_config where slider_settings.ID = $ID and Paginas.ID= $ID and slider_config.ID = $ID";              
        $sqlconnect1 =$connect->query($sql1);
        $sqlresult1 =$sqlconnect1->fetch_assoc();
            echo "<div class='titulo'>
                <h2>$sqlresult1[titulo]</h2>
            </div>";
        for ($l = 1 ; $l <= $sqlresult1[campos]; $l++){ 
            // here
            $array[$k] = $l;
            $campo = "SELECT Butao,Titulo,Texto FROM slider_config, Paginas, slider_settings where slider_config.ID = $ID and Paginas.ID = $ID and slider_settings.ID =$ID and P_NUM = $k and Campo = $l";
            $sqlconnect2 = $connect->query($campo);
            $sqlresult2 = $sqlconnect2->fetch_assoc();

            echo "
            <div class='part' id='part".$l."'>
            <div id='imagem' class='button' data-toggle='modal' data-target='#myModal".$l."'>
            <img src='data:image/png;base64," . base64_encode($sqlresult2['Butao']) . "'/>
            </div>
            <div id='titulo'>
                <h4>$sqlresult2[Titulo]</h4>
            </div>
            <div id='texto'>
                $sqlresult2[Texto]
            </div>
            </div>";
        }   
    echo "</div>";
}

【讨论】:

  • 我需要同时推送 $k 和 $l 以便在查询模式时使用它
  • 所以你可以用 $array[$k] = $i; 替换 array_push()
  • 你能给我一个代码示例,我在哪里定义这些数组,我可以在哪里推送它们?
  • @RafaelSousa 我编辑我的答案我希望这个答案对你有帮助:)
  • 你从哪里得到 $i ?
猜你喜欢
  • 2013-04-05
  • 1970-01-01
  • 1970-01-01
  • 2013-03-26
  • 2022-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-18
相关资源
最近更新 更多