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

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

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

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

Bootstrap

BootstrapはウェブサイトデザインやUIのWebアプリケーションを素早く 作成する可能なCSSフレームワークです。 Twitter風のデザインを作成することができます。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

1回答

1770閲覧

phpのforeachに内にbootstrapを適応させたい

Ms.yy

総合スコア83

PHP

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

Bootstrap

BootstrapはウェブサイトデザインやUIのWebアプリケーションを素早く 作成する可能なCSSフレームワークです。 Twitter風のデザインを作成することができます。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2019/10/24 12:36

編集2019/10/24 14:28

前提・実現したいこと

下部のdetail.phpのコードを「bootstrapカード」の様に装飾したいのですが、具体的にどう書き換えたら仕上がりますでしょうか?

「bootstrapカード」のリスト1、リスト2、リスト3の部分にdetail.phpの「商品名」、「価格」、「個数」を当てはめたいです。

detail.php

イメージ説明

<?php $pdo=new PDO('mysql:host=localhost;dbname=shop;charset=utf8', 'staff', 'password'); $sql=$pdo->prepare('select * from product where id=?'); $sql->execute([$_REQUEST['id']]); foreach ($sql as $row) { echo '<p><img src="image/', $row['id'], '.jpg"></p>'; echo '<form action="cart-insert.php" method="post">'; echo '<p >商品名:', $row['name'], '</p>'; echo '<p>価格:', $row['price'], '</p>'; echo '<p>個数:<select name="count">'; for ($i=1; $i<=10; $i++) { echo '<option value="', $i, '">', $i, '</option>'; } echo '</select></p>'; } ?>

「bootstrapカード」

イメージ説明

<div class="card" style="width: 18rem;"> <img class="card-img-top" alt="カードの画像" src="..."> <div class="card-body"> <h5 class="card-title">カードのタイトル</h5> <p class="card-text">カードのタイトルに基づいて、カードのコンテンツの大部分を占める簡単なサンプルテキスト。</p> </div> <ul class="list-group list-group-flush"> <li class="list-group-item">リスト1</li> <li class="list-group-item">リスト2</li> <li class="list-group-item">リスト3</li> </ul> <div class="card-body"> <a href="#" class="card-link">リンク1</a> <a href="#" class="card-link">リンク2</a> </div> </div>

###試したこと
イメージ説明
detail.phpのforeach<p>タグ内を編集し線は表示されたがカードの外枠はどの様に設定すればいいか不明点です。

echo '<p class="list-group-item">商品名:', $row['name'], '</p>'; echo '<p class="list-group-item">価格:', $row['price'], '</p>'; echo '<p class="list-group-item">個数:<select name="count">';

###試したこと2

<?php $pdo=new PDO('mysql:host=localhost;dbname=shop;charset=utf8', 'staff', 'password'); $sql=$pdo->prepare('select * from product where id=?'); $sql->execute([$_REQUEST['id']]); foreach ($sql as $row) { <div class="card" style="width: 18rem;">//追加文 echo '<p><img src="image/', $row['id'], '.jpg"></p>'; echo '<form action="cart-insert.php" method="post">'; echo '<p >商品名:', $row['name'], '</p>'; echo '<p>価格:', $row['price'], '</p>'; echo '<p>個数:<select name="count">'; for ($i=1; $i<=10; $i++) { echo '<option value="', $i, '">', $i, '</option>'; } echo '</select></p>'; </div>//追加文 } ?>

###試したこと3

<?php $pdo=new PDO('mysql:host=localhost;dbname=shop;charset=utf8', 'staff', 'password'); $sql=$pdo->prepare('select * from product where id=?'); $sql->execute([$_REQUEST['id']]); foreach ($sql as $row) { echo '<p class="card" style="width: 18rem;">'//追加文 echo '<p><img src="image/', $row['id'], '.jpg"></p>'; echo '<form action="cart-insert.php" method="post">'; echo '<p >商品名:', $row['name'], '</p>'; echo '<p>価格:', $row['price'], '</p>'; echo '<p>個数:<select name="count">'; for ($i=1; $i<=10; $i++) { echo '<option value="', $i, '">', $i, '</option>'; } echo '</select></p>'; echo '</p>';//追加文 } ?>

補足情報(FW/ツールのバージョンなど)

OS:mac

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

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

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

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

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

guest

回答1

0

ベストアンサー

可変となる箇所を変数で埋めて出力すれば良いだけではないでしょうか。

投稿2019/10/24 12:38

m.ts10806

総合スコア80850

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

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

Ms.yy

2019/10/24 12:45

<p>タグに<p class="list-group-item">とすれば確かに行に枠組みは表示されるのですが、行ではなくカードの枠はどの様に行えばいいでしょうか?
m.ts10806

2019/10/24 12:59

どのクラスがどの役割をしているか分からずにモック作られてるんですか?
Ms.yy

2019/10/24 13:09

すみません・・・
Ms.yy

2019/10/24 13:12

カードの枠組みはclass="card" で合ってるのかと思いますが、これをどうやってforeach内に組み込んでいいのかが分からず、、 ご質問をさせていただきました。
m.ts10806

2019/10/24 13:14

怒っているわけではなく、「どこまで自分で書いたコードを認識できているか」の確認です。 基本に立ち返りましょう。 PHPはあくまで画面に対して「出力」を行っているだけで、その「出力」をブラウザで確認するからHTML、CSS、JavaScriptなどで解釈できるわけです。 ということはブラウザが解釈できる形で出力してあげればいいだけです。 echo "Hello World"; とすればブラウザには「Hello World」と表示されるように、「ブラウザが正しく解釈できるように」出力を書いてあげましょう。なので、ブラウザで確認するときはブラウザの「ソースを表示」で想定通りのHTMLになっているか確認します。 どのクラスがどの役割をしているかはとりあえずBootStrapのドキュメントを読めば良いです。
Ms.yy

2019/10/24 13:39

今回カードの枠組みとして設定したい部分を出力を確認してみました。 echo '<p >商品名:', $row['name'], '</p>';の部分が<p>商品名:松の実</p>と表示されていたのですがforeach内にカードの外枠クラスの <div class="card" style="width: 18rem;"> を入力してもvscode上ではエラーとなってしまいます。 どうしたらいいでしょうか?汗 エラー:syntax error, unexpected '<'
m.ts10806

2019/10/24 13:41

どこにどのように書いたのでしょうか。 変数を伴わないのであれば<?php ?>の外に出すので問題ないと思いますし、 見やすさを重視するならヒアドキュメントで一括出力書いても良いと思います。
Ms.yy

2019/10/24 14:08

detail内のforeach文に「<div class="card" style="width: 18rem;">」という文と閉じタグの</div>を追加しました。 試してみた2を新しく作成しコードを載せさせていただきました。 これではダメな様で^^;
m.ts10806

2019/10/24 14:15

予想通り。すでに書いた通り、PHPの構文で文字列を出力してください。 echo "Hello World"; とすればブラウザには「Hello World」と表示されるように、「ブラウザが正しく解釈できるように」出力を書いてあげましょう。 文字列出力の機能が使われていなければすべてPHPコードとして解析しようとしますからね。
Ms.yy

2019/10/24 14:29

すみませんできませんでした。 出力としてechoを使い試してみましたが難しく解決に至りませんでした。^^; ###試したこと3に載せさせていただきました。
m.ts10806

2019/10/24 14:42

文の終端[ ; ]がありません。
Ms.yy

2019/10/24 21:43

失礼しました。 無事にスタイルをつけることができました! ありがとうございます^^
m.ts10806

2019/10/24 22:17

プログラミングをするのであれば構文チェック機能のあるエディタは導入された方が良いです。 eclipseなどならすぐ導入できます。
Ms.yy

2019/10/25 10:19

ありがとうございます^^
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問