スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

ループしながらDB登録してると上書きされる【CakePHP2.3】【凡ミス】

タイトル通り、上書きされる凡ミスのご紹介。

何らかの処理をしてDBに登録するとき↓な感じで書くと思う。


//forとかでぐるぐるまわしながら
$this->Hoge->save($hoge);
//↑で登録


そしてそれをn回ループすると、1つの行をn回も上書いてしまう。
結果、最後に登録したものしかDBになくて、あれ・・・?となる。

取りあえず「var_dump($this->Hoge->save($hoge));」すると、


array(1) {
["Hoge"]=>
array(3) {
["modified"]=>
string(19) "2013-10-20 00:33:53"
["created"]=>
string(19) "2013-10-20 00:33:53"
}
}
----
array(1) {
["Hoge"]=>
array(1) {
["modified"]=>
string(19) "2013-10-20 00:34:36"
}
}
----
array(1) {
["Hoge"]=>
array(10) {
["modified"]=>
string(19) "2013-10-20 00:35:10"
}
}



な感じになるのがわかる。

二回目以降はcreatedがないわけです。(たぶんidもあるとおもう、けしちゃったけど。)
なので、Hogeモデルで登録するときは、


//forとかでぐるぐるまわしながら
$this->Hoge->create();//<-NEW!!
$this->Hoge->save($hoge);
//↑で登録



な感じにcreate()しないといけない。

まじ凡ミス。
元々の仕様として既にある行に対してアップデートかける形だったのを一気に登録するようにしたのがミスの原因。




うぐぅ もうAM1時・・・
スポンサーサイト

デブフォとかiPadにデータを送る(映像、画像、PDF...etc)

デブフォ・・・手垢や油がついて汚いスマフォのこと。

嘘ですが。


二ヶ月か一ヶ月くらい前に左右分離型のキーボードについてガチで真面目に書こうと思い
大学の論文以上の文字数書いたけど煮詰められなかったから載せなかった。

今回はきちんと最後まで書けそうなので自分用に書きます。
あとソースコード見やすくしました。


さて表題の件です。
自炊した漫画や参考書などなど色々あるよね?
USBとかBlueTooth接続ですぐ転送できればいいんだけどiPadとかそうはいかない。
またiTunes入っていればすぐに転送できるんだけど、開発用PCとか出先で人のPCしかない・・・
ってことあるよね
だけど人のPCにあるiTunesを使うことにはいかない、入れるわけにはいかない。

だけどXAMMPはあるよ!ってことあるよね(笑
ローカルでPHP使える環境あるよってことあるよね(笑

さてそんな時ように下記サイトからもらってきたソースにちょっと追記しました。
9割方は下記サイトのものです。表示にリンク付けた程度です。 http://www.favorite-labo.org/view/173
ちなみにディレクトリをクリックするとダメになるので注意ね。

※ちなみに僕は電子書籍はPDF派です。WindowsMobile時代は画像ファイル直接派だったんですけど、
※PDFダイエットしろって言わなくても大丈夫なくらいのスペックにもなりましたし・・・。


[PDF]
1.WindowsにてPDFを作ります。
2.XAMPPで公開しているフォルダに下記ソースを「適当な名前.php」でアップロード



<?php
 
function get_tree($path)
{ 
  if (!is_dir($path)) {
    return;
  }
 
  $trees = array();
 
  if ($dir = scandir($path)) {
    foreach ($dir as $entry) {
      if ($entry == '.' or $entry == '..') {
        continue;
      }
      if (is_dir($path . '/' . $entry)) {
        $trees[$entry] = get_tree($path . '/' . $entry);
      } else {
        $trees[$entry] = $path . '/' . $entry;
      }
    }
  }
 
  return $trees;
}
 
function put_tree($trees)
{
  if (!is_array($trees)) {
    return;
  }
 
  echo '<ul>';
  
  foreach ($trees as $key => $value) {
    if (is_array($value)) { 
      echo '<li>[d] ' . $key;
      
      echo '<a href="./file/"';
      put_tree($value);
      echo '">';
      put_tree($value);
      echo '</a>';
      
      
      echo '</li>';
    } else {
      echo '<li>[f] '. '<a href="./file/'. $key . '">' . $key . '</a>' .'</li>';
    }
  }
 
  echo '</ul>';
 
  return;
}
 
$dir   = './file';
$trees = get_tree($dir);
 
?>
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=Shift_JIS">
<title>あなたに捧げたいファイルリスト</title>
</head>
<body>
<?php put_tree($trees); ?>
</body>
</html>
3.$dir = './file';のところを修正
(僕はC:\xampp\htdocsにソースを置き「file」ってフォルダに配信したいものを置いている)

4.端末からアクセスしてDL! 多分できる。
実行結果

<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=Shift_JIS">
<title>あなたに捧げたいファイルリスト</title>
</head>
<body>
<ul><li>[f] <a href="./file/すもももももも ~地上最強のヨメ~ 第01巻.pdf">すもももももも ~地上最強のヨメ~ 第01巻.pdf</a></li><li>[f] <a href="./file/すもももももも ~地上最強のヨメ~ 第02巻.pdf">すもももももも ~地上最強のヨメ~ 第02巻.pdf</a></li><li>[f] <a href="./file/すもももももも ~地上最強のヨメ~ 第03巻.pdf">すもももももも ~地上最強のヨメ~ 第03巻.pdf</a></li><li>[f] <a href="./file/すもももももも ~地上最強のヨメ~ 第04巻.pdf">すもももももも ~地上最強のヨメ~ 第04巻.pdf</a></li></ul></body>
</html>



以外とあるかなーって思うので是非ちょっとした時にはどうぞ。
追記、Win732bit XAMPPで動いていた。 [ニッキニッキ] ソースコードはhttp://www.mapee.jp/tools/pretagmaker/で表示されるときように変換かました。 SyntaxHighlighter向けになる
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。