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

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

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

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

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

CSS

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

Q&A

1回答

169閲覧

アップロードファイルの数によってCSSを変化させたい

homepage-site

総合スコア54

if

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

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

CSS

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

0グッド

0クリップ

投稿2024/12/15 12:43

実現したいこと

Q&A掲示板に最大3件のファイルアップロード機能を付けているのですが、ファイル1件またはファイル2件の時とファイル3件の時でデザインを変更したいと考えております。

発生している問題・分からないこと

PHP で CSS を分岐させるにはどのように書けばよいでしょうか?

該当のソースコード

PHP

1<?php 2$unique_id =substr($_SERVER['REQUEST_URI'], -36); 3$sql ='SELECT * FROM sortable WHERE unique_id = %s'; 4$query =$wpdb->prepare($sql, $unique_id); 5$rows =$wpdb->get_results($query); 6// アップロードディレクトリ(パス名)を取得する 7$upload_dir =wp_upload_dir(); 8echo '<div class="main_container">'; 9echo '<div class="quest_container">'; 10 11foreach ($rows as $row) { 12 $files =array_filter([$row->attach1, $row->attach2, $row->attach3]); 13 $views =[]; //HTMLをため込む配列の初期化する 14 15 foreach ($files as $file) { 16 $info =pathinfo($file); 17 $attach_url =$upload_dir['baseurl'] . '/attach/' . $info['basename']; 18 $ext =$info['extension']; 19 20 switch ($ext) { 21 case 'jpeg': 22 case 'png': $views[]='<img style="height:350px;width:530px" src="' . $attach_url . '">'; 23 break; 24 case 'mp4': 25 $views[]='<video style="height:350px;width:530px" src="' . $attach_url . '">'; 26 break; 27 case 'pdf': 28 $views[]='<iframe style="height:350px;width:530px" src="' . $attach_url . '"></iframe>'; 29 break; 30 default: 31 break; 32 } 33 } 34 35 $count =count($views); 36 37 if ($count ==1) { 38 // 1がtrueの場合 39 // ここの処理が実行される 40 $bmfloatLeft ='left'; // 画像が2つの場合のみ 41 } 42 43 elseif ($count ==2) { 44 // 1がfalseで2がtrueの場合 45 // ここの処理が実行される 46 $bmfloatLeft ='left'; // 画像が2つの場合のみ 47 } 48 49 else { 50 // それ以外(1、2ともにfalse)の場合 51 // ここの処理が実行される 52 $buafloatLeft ='left'; // 画像が3つの場合のみ 53 } 54 55 if (empty($row->usericon)) { 56 $usericon_src ='wp-content/themes/sample_theme/images/noimage.png'; 57 } 58 59 else { 60 $usericon_src =$upload_dir['baseurl'] . '/attach/' . $row->usericon; 61 } 62 63 // echo '<div><a href="'.$url.'">'.$row->unique_id.'</a></div>'; 64 echo '<div class="quest_header_title">' . mb_strimwidth($row->title, 0, 40, '・・・') . '</div>'; // タイトル30文字 65 echo '<div class="quest_usericon_img"><input type="radio" name="stamp" value="' . $row->stamp . '" id="stamp"><label for="stamp" class="quest_stamp_label"></label></div>'; // スタンプ画像 66 67 // 全体にのみ float: left; 68 echo '<div class="quest_markdown">'; 69 70 foreach ($views as $view) { 71 // 個別にのみ float: left; 72 echo '<div class="quest_item">' . $view . '</div>'; // アップロードファイル 73 } 74 75 echo '</div>'; 76 77 echo '<div class="quest_overview">' . mb_strimwidth($row->text, 0, 40, '・・・') . '</div>'; // 質問文 78 echo '<div class="quest_usericon_img"><img src="' . $usericon_src . '"></div>'; // アイコン画像 79 echo '<div class="quest_username">' . mb_strimwidth($row->name, 0, 10, '・・・') . '</div>'; // 名前 80} 81 82echo '</div>'; //<div class="quest_container"> の閉じタグ 83?>

CSS

1/* ファイルが3件の場合 */ 2.quest_container .quest_item { 3 float: <?php echo $buafloatLeft; ?>; 4 display: inline-block; 5 margin-bottom: 30px; 6 padding: 0px 18px 0px 5px; 7} 8 9.quest_container .quest_overview { 10 color: #e52d77; 11 font-size: 150%; 12 font-weight: 700; 13 width: 1098px !important; 14 margin-top: 25px; 15} 16 17/* ファイルが1か2件の場合 */ 18.image-partial { 19 float: <?php echo $bmfloatLeft;?>; 20}

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

var_dump($count); でアップロードファイル数のチェックを行ったところ正確な値が表示されております。

補足

特になし

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

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

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

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

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

guest

回答1

0

なんとも言えませんがアップロードされるたびにimg(サムネイル?)が増えるという仕様であれば、CSS側で場合分けもよいかも

html

1<style> 2.imgs:has(img){ 3 background-Color:yellow; 4} 5.imgs:has(img:nth-child(2)){ 6 background-Color:lime; 7} 8.imgs:has(img:nth-child(3)){ 9 background-Color:aqua; 10} 11</style> 12<div class="imgs"> 13<img src="https://placehold.jp/ff0000/00000/100x100.png?text=1"> 14</div> 15<div class="imgs"> 16<img src="https://placehold.jp/ff0000/00000/100x100.png?text=1"> 17<img src="https://placehold.jp/00ff00/00000/100x100.png?text=2"> 18</div> 19<div class="imgs"> 20<img src="https://placehold.jp/ff0000/00000/100x100.png?text=1"> 21<img src="https://placehold.jp/00ff00/00000/100x100.png?text=2"> 22<img src="https://placehold.jp/0000ff/00000/100x100.png?text=3"> 23<img src="https://placehold.jp/ffff00/00000/100x100.png?text=4"> 24</div>

投稿2024/12/16 01:42

yambejp

総合スコア116921

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.34%

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

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

質問する

関連した質問