改めてDOM関数で作成したXMLファイルの保存について質問させて頂きます。

DOMで作成したファイルの保存先を、

rootdir-xmlbox
      ∟1(フォルダ名=DBから取得したLabelID)
       ∟1.xml
      ∟2
       ∟2.xml 
      :
      :

↑のようになる様に指定するにはどうすればよいのでしょうか。
rootディレクトリとその一つ下のフォルダ(1、2・・・)は作成してあります。

回答の条件
  • 1人3回まで
  • 登録:2007/12/27 18:23:48
  • 終了:2008/01/03 18:25:02

回答(1件)

id:bayan No.1

bayan回答回数100ベストアンサー獲得回数132007/12/28 03:59:26

ポイント60pt

http://q.hatena.ne.jp/1197914708

http://q.hatena.ne.jp/1198351933

も拝見しました。

  • LabelIDは DB検索結果の 列 labelid に入っている
  • 1.xml 2.xml ..の 1, 2 は DB検索結果の列 hoge の値を使う
  • xmlbox はスクリプトを実行するカレントディレクトリの下にある

という前提で、下記のような書き方でどうでしょうか。

// データベース接続、SQL文は省略。。。
$res = mysql_query($sql, $conn);
while($row = mysql_fetch_array($res)){
  
  // ここらでDOMDocument でXMLを作成

  // ファイル名を決定
  $rootdir  = "./xmlbox";
  $filename = $rootdir."/".$row['labelid']."/".$row['hoge'].".xml";
  // 保存
  $dom->save($filename);
}

LabelIDごとのディレクトリは作成済みとのことですが、

やっぱり自動的に作る必要があるのであれば

次のような感じでどうでしょう(あんまり自身がないですが)

// データベース接続、SQL文は省略。。。
$res = mysql_query($sql, $conn);
while($row = mysql_fetch_array($res)){
  // ここらでDOMDocument でXMLを作成
  // ファイル名を決定
  $rootdir  = "./xmlbox";
  $dir      = $rootdir."/".$row['labelid'];
  $filename = $dir."/".$row['hoge'].".xml";  
  
  // ディレクトリがあるか
  if(is_dir($dir)){
    $ok = true;
  }else{
    // 無いので作る
    $ok = mkdir($dir);
  }
  if($ok){
    $dom->save($filename);
  }else{
    echo "ディレクトリが作成できません! ($dir) ";
  }
}
id:pinoco_5018

丁寧な回答ありがとうございました。解決しました!

2007/12/28 04:04:28

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません