自分は現在、テーマ、結論、本文の3つを入力し投稿するとトップページに投稿されたデータの内テーマのみが新しい順に九つ並び、テーマをクリックするとリンク先でテーマ、結論、本文が見られる というサイトを作成中です。
投稿されたデータの内、テーマのみを新しい順に並べる為に下のようにコードを書いています
<?php $dsn = 'mysql:dbname=post;host=127.0.0.1;charset=utf8'; $user = 'xxx'; $password= 'xxx'; try{ $dbh = new PDO( $dsn, $user, $password ); }catch( PDOException $error ){ echo "接続失敗:".$error->getMessage(); die(); } $sql ="select * from toukou Where post_id = (Select Max(post_id) From toukou)"; $stmt = $dbh->query( $sql );?> <div class="top-wrapper top"> <div class="container"> <div class="heading"> <h1>新着</h1> </div> <div class="articles"> <div class="article"> <div class="article-left"> <a class="aa" href="detail.php?name=<?php foreach ($stmt->fetchAll() as $result){ echo " theme:". $result['theme']; } ?>"> <?php foreach ($stmt->fetchAll() as $result){ echo " theme:". $result['theme']; } ?> </a> </div> <div class="article-right"> </div> </div>
ここでは省いていますがと同じものが下に八つあります。
ですので一番目の<div class="article">....</div>では一番新しい投稿のthemeを、二番目の<div class="article">....</div>では二番目に新しい投稿のthemeを、、をいうように九つ目まで投稿のthemeを表示させたいです。
このように記述した際、themeがそもそも表示されず困っています。
<div class="article-left"> <a class="aa" href="detail.php?name=<?php foreach ($stmt->fetchAll() as $result){ echo " theme:". $result['theme']; } ?>">
この部分を削除すると一番新しいthemeのみが表示されるのですが、リンク先にクエリ情報が送信されません。
どうすればクエリ情報をdetail.phpに渡しつつ、新しい順にthemeを表示させることが出来るのでしょうか?
よろしくお願いします。
detailphp
1$post_id=$_GET['post_id']; 2$sql='select * from toukou where post_id=$post_id'; 3 4$stmt = $dbh->query( $sql ); 5 6foreach ($stmt as $row) { 7echo $row['theme'].':'.$row['conclusion'].':'.$row['body']; 8}
エラーメッセージ
Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\phptest\z.php on line 18