質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

977閲覧

Invalid argument supplied for foreach() //~ on line 24 について

Bernadotte

総合スコア310

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2017/02/09 10:34

はじめまして。
現在会社の課題で独自F/Wを使用して、ローカルにてブログ形式のフォーム作成しています。
環境は下記のとおりです。
言語:PHP5.6
DB:Mysql
サーバー:Apache

ブログ記事のソートをタイトル順、投稿(編集)順で並び替えられるように実現したいのですが、下記エラーで配列形式になっていないのかもしくはデータの引き渡しが出来てないかがわからない状態です。
また、修正の仕方もわからないため、ご教授いただければ幸いです。

Notice: Undefined variable: view in C:\xampp\htdocs\levis\app\views\blog\list.php on line 24 Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\levis\app\views\blog\list.php on line 24

Controllersファイル

<?php if (empty($_POST['sort'])){ $view['articles'] = select_articles(array( 'order_by' => 'id DESC', )); } if (isset($_POST['sort']) == 'title'){ $view['articles'] = select_articles(array( 'order_by' => 'created DESC', )); } elseif (isset($_POST['sort']) == 'created') { $view['articles'] = select_articles(array( 'order_by' => 'title DESC' )); }

Viewファイル

<html> <head> <meta charset="<?php t(MAIN_CHARSET) ?>" /> <title>ブログ</title> </head> <body> <h1>ブログ</h1> <form action="" method="post"> <div> <select name="sort" class="short"> <option value="created">日時</option> <option value="title">タイトル</option> </select> <input type="submit" name="" value="切替"> </div> </form> <table> <tr> <th>ID</th> <th>登録日時</th> <th>修正日時</th> <th>タイトル</th> </tr> <?php foreach ($view['articles'] as $article) : ?> <tr> <td><?php h($article['id']) ?></td> <td><?php h(localdate('Y/m/d H:i', $article['created'])) ?></td> <td><?php h(localdate('Y/m/d H:i', $article['modified'])) ?></td> <td> <a href="<?php t(MAIN_FILE) ?>/blog/view?id=<?php t($article['id']) ?>"><?php h($article['title']) ?></a> <a href="<?php t(MAIN_FILE) ?>/blog/edit?id=<?php t($article['id']) ?>">編集</a> <a href="<?php t(MAIN_FILE) ?>/blog/delete?id=<?php t($article['id']) ?>">削除</a> </td> </tr> <?php endforeach ?> </table> <p><a href="<?php t(MAIN_FILE) ?>/blog/add">新規登録</a></p> </body> </html>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

タイトルの下の<?php foreach ($view['articles'] as $article) : ?> のところの前で$vaiw['articles']の中身をvar_dumpかなにかで確認してみてください。select_articlesは何かの関数でしょうが検索しても見つかりませんでした。

投稿2017/02/09 11:04

toutou

総合スコア2050

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Bernadotte

2017/02/09 11:12

ご回答ありがとうございます。 独自フレームワークの為、SQLの関数が自前で用意されているためだと思います。 問題は解決いたしました。 フレームワークの仕様で、$view は$_view と定義しないといけなかったそうです。
guest

0

ベストアンサー

frameworkに何を使用sれているのかわかりませんがエラーメッセージ通りC:\xampp\htdocs\levis\app\views\blog\list.phpの24行目に記述されている変数viewが未定義なのでは?

Undefined variable: view in C:\xampp\htdocs\levis\app\views\blog\list.php on line 24

投稿2017/02/09 10:59

Y.H.

総合スコア7914

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Bernadotte

2017/02/09 11:13

ご回答ありがとうございます。 仰られているとおりコントロール側とビュー側の変数の定義がフレームワークの仕様とそぐわなかったみたいです。 $view を $_view へ変更しましたら直りました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問