0

画像に問題があります。

ユーザーが画像をクリックしたときに画像IDを追加しようとすると、IDがDBに保存されます。

ページをリロードすると、id 属性を持つ画像の img タグに id が表示されます。

id 属性を持つ画像を識別する方法は、画像の src に基づいています。ただし、多くの重複した画像があり、私のコードはすべての重複した画像に id 属性を追加することがわかりました。

ユーザーがクリックする画像に id 属性を追加したいだけです。

私のコード

this.id画像の新しい id 属性で、DB から生成されます。

//click image codes....
//assign the id to the clicked image (not all duplicated images)
this.img.attr('id',this.id);

ページのリロード時...

 $doc = new DOMDocument();
 $doc->loadHTML($myHtml);

          $imageTags = $doc->getElementsByTagName('img');

          //get the images that has id attribute from DB
          $imgSource=$this->imgSource;    //imgSource is an array
          $imgID=$this->imgID;            //imgID is an array

          //search the htmlstring and add the id attribute to the images
          foreach($imageTags as $tag) {
            $source=$tag->getAttribute('src');

           //if the html contains the image that has id attribute..
              if(in_array($source, $imgSource)){

               $ids=array_keys($imgSource,$source);
               foreach($ids as $id){
                  $tag->setAttribute('id',$imgID[$id]);
                  $myHtml=$doc->saveHTML();
                }
              }
            }
          }

上記のコードは、ID が DB に保存されている画像に ID を割り当てます。ただし、複製されたすべての画像にも id が割り当てられます。これらの重複した画像を区別する必要があり、私の場合はphpでしかできません。この問題は私を夢中にさせました!誰かがそれについて私を助けることができれば、私は本当に感謝しています. 本当にありがとう。

4

1 に答える 1

1

問題が重複を区別することである場合、それらを回避するための適切な部分は、IDを重複画像に追加するコードを変更することですよね?

あなたが投稿したPHPコードがIDでどのように機能するかを完全には理解していませんが、次のようなものだと思い$this->imgSourceます$this->imgID

$this->imgSource = array(
  [0] => 'src/image/a',
  [1] => 'src/image/b',
  [2] => 'src/image/c',
  [3] => 'src/image/a'
);
$this->imgID = array(
  [0] => 111,
  [1] => 222,
  [2] => 333,
  [3] => 444
);

それで、いつそれ$source'src/image/a'次のようなことをしますか:

$tag->setAttribute('id', 111);
$tag->setAttribute('id', 444);

それを避けたい場合は、id 値を削除して、再度使用しないようにすることをお勧めします。

$ids = array_keys($imgSource, $source);
foreach($ids as $id) {
    if(isset($imgID[$id])) {
        $tag->setAttribute('id', $imgID[$id]);
        $myHtml = $doc->saveHTML();
        unset($imgID[$id]);
        break;
    }
}
于 2013-02-12T00:21:11.163 に答える