0

ボタンを1回クリックするだけで、ユーザーがチェックボックスをオンにしたディレクトリの名前を変更したいUpdate。テキストボックスとチェックボックスの値は配列に収集され、jQuery 経由でサーバーに送信されます。Firebug は、渡された正しい配列値を示しています。Array問題は、テキストボックスに入力された新しい値ではなく、最初にチェックされたディレクトリの名前が変更され、他の値は変更されないことです。

このコードで何が間違っていますか?:

HTML:

<input type="text" name="album_text[]" id="album_text" class="album_text"  />
<input type="text" name="album_text[]" id="album_text" class="album_text"   />
<input type="text" name="album_text[]" id="album_text" class="album_text"  />

<input name="album_checkbox[]" type="checkbox" id="album_checkbox" value="' . $res. '">
<input name="album_checkbox[]" type="checkbox" id="album_checkbox" value="' . $res. '">

Jクエリ:

  $("#album_update").click(function() {
                var album_name = new Array();


                $("input[@name='album_checkbox[]']:checked").each(function() {
                    album_name.push($(this).val());
                });

                var album_text= new Array();

                $("input[name='album_text[]']").each(function(){

                    if( $(this).val() ) {
                            album_text.push($(this).val());
                    }

                });  



             var postData = { 
                        "album_name" : album_name,
                        "album_text" : album_text,
                        "album_update" : $("#album_update").val()
                };   


                      //make the call
                      $.ajax({
                        type: "POST",
                        url: "updalbums.php",
                        data: postData, 
                        dataType: "json",
                        success: function(data){
                            alert("updated");
                        }
                      });
        });

PHP:

public function updateAlbum() {

                if (isset($_POST['album_text']) && isset($_POST['album_name'])) {

                    $path = $_SERVER['DOCUMENT_ROOT'] . '/images/';

                    foreach ($_POST['album_name'] as $albums_name ) {
                        $album_text = $_POST['album_text'];
                        rename($path.$albums_name, $path.$album_text); 
                    }
                }
        }
4

1 に答える 1

0

$album_text は、配列である $_POST グローバル $_POST['album_text'] から直接描画しているため、配列です。正しいインデックスを識別する必要があります。

以下のようにインデックスにアクセスできますが、壊れやすいようです。

                    foreach ($_POST['album_name'] as $idx => $albums_name ) {
                    $album_text = $_POST['album_text'][$idx];
                    rename($path.$albums_name, $path.$album_text); 
                }
于 2011-08-24T18:15:45.123 に答える