Определения переменной

usergeyv

Знаток
Регистрация
5 Июл 2013
Сообщения
152
Реакции
25
Собственно код
PHP:
if ($xfieldmode == "site") {
        $xfname = $fieldname;
        include "engine/modules/xtest.php";
$output .= <<<HTML
<tr id="$holderid" {$uid}>
<td class="addnews"></td>
<td class="xfields" colspan="2"><input type="text" name="xfield[$fieldname]" placeholder="Введите(через запятую) или выберите" id="xf_$fieldname" value="$fieldvalue" {$params}/>
{$value[18]}
</td>
<td class="xfields" colspan="2">
<div class="dropdown">
<ul class="{$fieldname}">
{$xflist} // с xtest.php
<li>
</ul>
</div>           
</td>

</tr>
HTML;
            $xfieldinput[$fieldname] = "<input type=\"text\" name=\"xfield[$fieldname]\" id=\"xf_$fieldname\" value=\"$fieldvalue\" {$params}/>";


        }
PHP:
<?php
if( ! defined( 'DATALIFEENGINE' ) ) { die( "Hacking attempt!" ); }


if(!$xflist) {
    $sql_result = $db->query( "SELECT xfields FROM " . PREFIX . "_post WHERE approve=1" );
    while ( $rows = $db->get_row( $sql_result ) ) {
        $xfieldsx[] = $rows;
    }   
    $stack = array();
    foreach($xfieldsx as $valuexf){
        if($valuexf[xfields]){
            $row = xfieldsdataload($valuexf[xfields]);
            if($row[$xfname]){
                $rowdata = explode( "~", $row[$xfname]);
                foreach($rowdata as $valuexf){
                    if($valuexf){
                        $valuexf = trim($valuexf);
                        array_unshift($stack, $valuexf);
                    }
                }
            }
        }
    }
     $stack = preg_replace('#,+#', ',',(implode(',',$stack)));
     $stack = str_replace(' ', '', $stack);
     $stack = array_unique(explode(",",$stack));
   
    sort ($stack);   
    foreach( $stack as $valuexf ){
         
        $xflist .="<li><input type=\"checkbox\" name=\"xf_" . $xfname . "\" value=\"" . $valuexf . "\" id=\"" . $xfname . "" . $valuexf . "\"><label for=\"" . $xfname . "" . $valuexf . "\">". $valuexf . "</label></li>";
         
    }
   
}

$fieldname; может иметь несколько значения:
Первое это:
god-vyhoda
другое:
kachestvo
трете:
strana-kino
и т.д.

Но почему то все input type имеют name "god-vyhoda" то есть переменная $xfname всегда определяется только как god-vyhoda и не берет другие, как исправить?
 
потому что переменная у вас объявляется один раз и больше не меняется
PHP:
if ($xfieldmode == "site") {
        $xfname = $fieldname;
        include "engine/modules/xtest.php";
 
объединил код для понимания вопроса
PHP:
if ($xfieldmode == "site") {
            /////////
     if(!$xflist) {
    $sql_result = $db->query( "SELECT xfields FROM " . PREFIX . "_post WHERE approve=1" );
    while ( $rows = $db->get_row( $sql_result ) ) {
        $xfieldsx[] = $rows;
    }
    $stack = array();
    foreach($xfieldsx as $valuexf){
        if($valuexf[xfields]){
            $row = xfieldsdataload($valuexf[xfields]);
            if($row[$fieldname]){
                $rowdata = explode( "~", $row[$fieldname]);
                foreach($rowdata as $valuexf){
                    if($valuexf){
                        $valuexf = trim($valuexf);
                        array_unshift($stack, $valuexf);
                    }
                }
            }
        }
    }
     $stack = preg_replace('#,+#', ',',(implode(',',$stack)));
     $stack = str_replace(' ', '', $stack);
     $stack = array_unique(explode(",",$stack));

    sort ($stack);
    foreach( $stack as $valuexf ){
      
        $xflist .="<li><input type=\"checkbox\" name=\"xf_" . $fieldname . "\" value=\"" . $valuexf . "\" id=\"" . $fieldname . "" . $valuexf . "\"><label for=\"" . $fieldname . "" . $valuexf . "\">". $valuexf . "</label></li>";
      
    }

}
////////

$output .= <<<HTML
<tr id="$holderid" {$uid}>
<td class="addnews">$value[1]: [not-optional]<span style="color:red;">*</span>[/not-optional]</td>
<td class="xfields" colspan="2"><input type="text" name="xfield[$fieldname]" placeholder="Введите(через запятую) или выберите" id="xf_$fieldname" value="$fieldvalue" {$params}/>
{$value[18]}
</td>
<td class="xfields" colspan="2">
<div class="dropdown"><a class="{$fieldname}" href="javascript:void(0);"><span class="open">Выбрать</span><span class="value"></span></a>
<ul class="{$fieldname}">

    {$xflist} ///инпуты

<li>
</ul>
</div>        
</td>

</tr>
HTML;


        }

результат
HTML:
<tr id="xfield_holder_kachestvo" >
<td class="addnews">Качество: </td>
<td class="xfields" colspan="2"><input type="text" name="xfield[kachestvo]" placeholder="Введите(через запятую) или выберите" id="xf_kachestvo" value="" data-rel="" />
</td>
<td class="xfields" colspan="2">
<div class="dropdown"><a class="kachestvo" href="javascript:void(0);"><span class="open">Выбрать</span><span class="value"></span></a>
<ul class="kachestvo">
<li><input type="checkbox" name="xf_god-vyhoda" value="2009" id="god-vyhoda2009"><label for="god-vyhoda2009">2009</label></li>
<li><input type="checkbox" name="xf_god-vyhoda" value="2010" id="god-vyhoda2010"><label for="god-vyhoda2010">2010</label></li>
<li><input type="checkbox" name="xf_god-vyhoda" value="2011" id="god-vyhoda2011"><label for="god-vyhoda2011">2011</label></li>
<li><input type="checkbox" name="xf_god-vyhoda" value="2012" id="god-vyhoda2012"><label for="god-vyhoda2012">2012</label></li>
<li><input type="checkbox" name="xf_god-vyhoda" value="2013" id="god-vyhoda2013"><label for="god-vyhoda2013">2013</label></li>
<li><input type="checkbox" name="xf_god-vyhoda" value="2014" id="god-vyhoda2014"><label for="god-vyhoda2014">2014</label></li>
<li><input type="checkbox" name="xf_god-vyhoda" value="2015" id="god-vyhoda2015"><label for="god-vyhoda2015">2015</label></li>
<li><input type="checkbox" name="xf_god-vyhoda" value="2016" id="god-vyhoda2016"><label for="god-vyhoda2016">2016</label></li>
<li><input type="checkbox" name="xf_god-vyhoda" value="2017" id="god-vyhoda2017"><label for="god-vyhoda2017">2017</label></li>
<li><input type="checkbox" name="xf_god-vyhoda" value="2018" id="god-vyhoda2018"><label for="god-vyhoda2018">2018</label></li>
</ul>
</div>        
</td>

</tr>
//////////////////////////////////////////
<tr id="xfield_holder_strana-kino" >
<td class="addnews">Страна: </td>
<td class="xfields" colspan="2"><input type="text" name="xfield[strana-kino]" placeholder="Введите(через запятую) или выберите" id="xf_strana-kino" value="" data-rel="" />
</td>
<td class="xfields" colspan="2">
<div class="dropdown"><a class="strana-kino" href="javascript:void(0);"><span class="open">Выбрать</span><span class="value"></span></a>
<ul class="strana-kino">
<li><input type="checkbox" name="xf_god-vyhoda" value="2009" id="god-vyhoda2009"><label for="god-vyhoda2009">2009</label></li>
<li><input type="checkbox" name="xf_god-vyhoda" value="2010" id="god-vyhoda2010"><label for="god-vyhoda2010">2010</label></li>
<li><input type="checkbox" name="xf_god-vyhoda" value="2011" id="god-vyhoda2011"><label for="god-vyhoda2011">2011</label></li>
<li><input type="checkbox" name="xf_god-vyhoda" value="2012" id="god-vyhoda2012"><label for="god-vyhoda2012">2012</label></li>
<li><input type="checkbox" name="xf_god-vyhoda" value="2013" id="god-vyhoda2013"><label for="god-vyhoda2013">2013</label></li>
<li><input type="checkbox" name="xf_god-vyhoda" value="2014" id="god-vyhoda2014"><label for="god-vyhoda2014">2014</label></li>
<li><input type="checkbox" name="xf_god-vyhoda" value="2015" id="god-vyhoda2015"><label for="god-vyhoda2015">2015</label></li>
<li><input type="checkbox" name="xf_god-vyhoda" value="2016" id="god-vyhoda2016"><label for="god-vyhoda2016">2016</label></li>
<li><input type="checkbox" name="xf_god-vyhoda" value="2017" id="god-vyhoda2017"><label for="god-vyhoda2017">2017</label></li>
<li><input type="checkbox" name="xf_god-vyhoda" value="2018" id="god-vyhoda2018"><label for="god-vyhoda2018">2018</label></li>
</ul>
</div>        
</td>

</tr>

не пойму почему в функции $xflis значения переменной $fieldname всегда "god-vyhoda" , а в $output html меняются
 
в множественных checkbox, radio и select нужно задавать имена как
Код:
name="xf_god-vyhoda[]"
тогда пхп будет воспринимать входяшие данные xf_god-vyhoda как массив
 
Назад
Сверху