2012-04-17 2 views
0

У меня есть система, в которой я переставляю навигационные элементы.Array, кажется, не хранит данные

Он сохраняет новый порядок в массиве, а затем я использую цикл for для прохождения массива и обновления базы данных.

<?php 
$apageid = array(); 
$apagename = array(); 
$apageorder = array(); 

$q = "SELECT g.id, g.title, n.order FROM tbl_general g INNER JOIN tbl_navigation n ON n.pageid = g.id WHERE n.type = '$_SESSION[parent]' ORDER BY n.order"; 
$return = $database->query($q); 
while($row=mysql_fetch_assoc($return)){ 
    $apageid[] = $row['id']; 
    $apagename[] = $row['title']; 
    $apageorder[] = $row['order']; 
} 

$count = count($apageid); 
$bpageid = array(); 
$bpageorder = array(); 
?> 
<div class="form-holder"> 
<?php 

//run through each page one at a time and update the order of the menu 
mysql_data_seek($return, 0); //reset the pointer to do the same query 
$i = 0; //the count for saving the new configuration 
while($row=mysql_fetch_assoc($return)){ 

    $id = $row['id']; 
    $title = $row['title']; 
    $order = $row['order']; 
    ?> 
    <div class="form-row"> 
     <div class="form-label"> 
      Page Name 
     </div> 
     <div class="form-field"> 
      <select class="select-small" name="<?php echo $bpageid[$i]; ?>"> 
       <?php 
       for($j=0; $j<$count; $j++){ 
        if($apageid[$j] == $id) { 
         $selected = true; 
        } else { 
         $selected = false; 
        } 
        ?> 
        <option value="<?php echo $apageid[$j]; ?>" <? echo ($selected == true) ? 'selected="selected"' : ''; ?>><?php echo $apagename[$j]; ?></option> 
        <?php 
       } 
       ?> 
      </select> 
      <select class="select-small" name="<?php echo $bpageorder[$i]; ?>"> 
       <?php 
       for($k=0; $k<$count; $k++){ 
        if($apageorder[$k] == $order) { 
         $selected = true; 
        } else { 
         $selected = false; 
        } 
        ?> 
        <option value="<?php echo $apageorder[$k]; ?>" <? echo ($selected == true) ? 'selected="selected"' : ''; ?>><?php echo $apageorder[$k]; ?></option> 
        <?php 
       } 
       ?> 
      </select> 
     </div> 
    </div> 
    <?php 
    $i++; 
} 
?> 

Этот первый фрагмент кода - это меню, в котором вы можете изменить порядок позиций.

Первоначально он загружает текущий выбор и позволяет вам изменить порядок.

function reorderChildren($pageid, $pageorder){ 
    global $database; 

    $count = count($pageid); 
    //run through each page one at a time and update the order of the menu 
    for($i=0; $i<$count; $i++){ 
     //set a few variables 
     $pid = $pageid[$i]; 
     $porder = $pageorder[$i]; 
     echo "pid = $pid porder = $porder"; 
     $q = "UPDATE tbl_navigation SET order = '$porder' WHERE pageid = '$pid' AND type = '$_SESSION[parent]'"; 
     $database->query($q); 
    } 
    return 0; 
} 

Затем информация передается здесь, и проблема в том, что цикл for никогда не выполняется.

Может ли кто-нибудь понять, почему это было бы?

Это не именование, я проверил их.

Я правильно храню информацию в массивах?

Могу ли я дать понять, что это $bpageid и $bpageorder, которые являются массивами, несущими информацию вперед.

Спасибо!

+0

Я не уверен на 100%, но вы можете [хотеть посмотреть на это] (http://bobby-tables.com/). – Bobby

+0

Это безопасная форма, доступ только администратора. – sark9012

ответ

0

Вы только initilized $bpageid = array(); на вершине после первой, а значение loop.No присваивается

после этого вы используете

<select class="select-small" name="<?php echo $bpageid[$i]; ?>"> 

но значение не в $bpageid[$i] так название этого выберите поле пустым.

Возможно, это проблема. проверьте это и выполните необходимые действия.

+0

Можете ли вы предложить альтернативный способ сделать это? Я пытаюсь найти способ сохранить значения элементов select и передать их. Количество выбранных значений будет меняться, но зависит от количества добавленных в настоящее время. – sark9012

0

вы можете попытаться построить json из опций элемента select, чтобы сохранить его в скрытом поле или отправить запрос ajax на скрипт php для обработки, заказ может быть сделан из значения «вес» 1,2,3 и т. Д. .... сортировать его с помощью php и loop для отображения

+0

Я не совсем понимаю, что вы предлагаете. Не очень хорошо знают JSON! – sark9012

+0

www.w3schools.com/json/json_intro.asp пример json, json_decode() - это php-функция, которая расшифровывает вашу строку json для использования в php – Gntem

+0

. Я возьму взгляд на почтовый ящик. Благодарю. – sark9012

1

Было простое исправление! Проблема заключалась в том, что имя select должно быть просто name = "bpageid []", а не то, что я перечислял выше. Глупо!

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