• ベストアンサー

PHPのスクリプトで質問です。

いつもお世話になっています。 PHPのスクリプトで質問なのですが、 まずは以下のスクリプトを拝見下さい。 <?php $opname=""; $opt=""; for($i=0;$i<sizeof($options_name);$i++) { $opname.="<div id='opname$i'>".strip_tags($options_name[$i])."</div>"; $opt.="<div id='opt$i'>$0</div>"; ?> <?php if ($options_comment[$i] != '' and $options_comment_position[$i] == '0') { ?> <h3 class="attributesComments"><?php echo $options_comment[$i]; ?></h3> <?php } ?> <div class="wrapperAttribsOptions"> <div class="optionName back"><?php echo $options_name[$i]; ?></div> <div class="back"><?php echo "\n" . $options_menu[$i]; ?></div> <div><?php echo $opt; ?></div> このとき、 オプション名1 選択メニュー1 価格[表示]         選択メニュー2        選択メニュー3 オプション名2 選択メニュー1 \0         選択メニュー2 価格[表示]        選択メニュー3 オプション名3 選択メニュー1 \0         選択メニュー2 \0        選択メニュー3 価格[表示] という風になってしまいます。 \0は、不要のため、表示したくないのですが・・・ どなたかご存知の方ご教授お願いできないでしょうか!!! 宜しくお願いします!!!

  • PHP
  • 回答数5
  • ありがとう数5

質問者が選んだベストアンサー

  • ベストアンサー
回答No.4

補足いただいた値と、「$options_menu」に適当な値('選択1', '選択2'という配列)を入れて、出力を試してみました。結果が下記です。 --------test.php-------------------------- <div class="wrapperAttribsOptions"> <div class="optionName back">オプション名1</div> <div class="back"> 選択1</div> <div><div id='opt0'>$0</div></div> <div class="wrapperAttribsOptions"> <div class="optionName back">オプション名2</div> <div class="back"> 選択2</div> <div><div id='opt0'>$0</div><div id='opt1'>$0</div></div> -------------------------------------- 結局、 $opt.="<div id='opt$i'>$0</div>"; これが変数展開されていないんですけど、「$0」はなんでしょうか。 march4さんも質問をされていますが、「$0」が明らかに表示がおかしいです。 ここには実際はどのような値が与えられているのが正しいのでしょうか。

mihomama84
質問者

お礼

ご回答ありがとうございます! $0というのは、価格[表示]のことで、 JavaScript表示で、$0以上のときは、 大きい金額を取るように設定しています。 ですので、選択したオプションの値段が$300 の場合、$0は$300に置き換わります。

その他の回答 (4)

回答No.5

補足いただいた内容が全然分かりませんでした。 とりあえず、上記のPHPを走らせた後に取得されたHTMLのソースを、記載いただけませんか。 $0と表示されるので正しいのであれば、「\0」という値はどこからやってきたのか分かりません。 javascriptで自動的に算出しているようであればPHPの範疇ではないので、結果、「PHPでは不可能」という回答になります。

回答No.3

・変数$options_nameには、どのような値が含まれているのでしょうか。 ・変数$opnameにせっかく値を代入しているのに、下で呼び出していないですが、コレは呼び出す必要があるんじゃないでしょうか。 ・同様に$option_commentにはどのようなコメントが。 ・同様に$options_comment_positionにはどのような値が? 変数名や、HTMLのクラス名などと出力結果が、違いすぎて想像できませんでした。 少なくとも、「\0」という文字が含まれているのはどの変数か、が分かれば、条件分岐で表示しないようにするというアドバイスも出来るんですが・・・

mihomama84
質問者

お礼

ご回答頂きありがとうございます。 文字数の制限を超えてしまうため、一部分しかスクリプトを 入れていないないのですが・・・ $options_name は 「オプション名1」「オプション名2」・・・ の部分です。呼び出しは<div class="optionName back"><?php echo $options_name[$i]; ?></div> の部分です。 $option_comment部分はここでは呼び出す必要がないので、呼び出していません。オプションで特別な説明があるときにのみ、表示されます。 $options_comment_positionは上記の特別な説明があるときに、 左詰め、右詰のどちらで表示するかを定義したものです。 こんな説明でお分かりになりますでしょうか・・・。 お手数をおかけします!

  • march4
  • ベストアンサー率50% (12/24)
回答No.2

「$0」 ↑この子は、何者なんでしょう? これを使い続けている限り、エラーが出るかと思うのですが、どうなんでしょう? あと、前回同様、 4行目の、 'opname$i' ここも直さないと、希望とする結果は得られないと思います。 前回と同じように直してみてください。 全体を完全に把握しているわけではないので、 このようなアドバイスとなっておりますが、 この程度の修正で改善が見られたら儲けものだなと思っております。笑

mihomama84
質問者

お礼

再度ご回答頂いてありがとうございます! そうですよね・・・。こんな短いスクリプトで 分かっていただこうと思う方が無茶ですよね。。。 すみません(TдT) 実はページの下に下記のスクリプトがあり、 JavaScriptで動いています。 <table align="left" style="font-size:10pt; font-weight:bold; text-align:left"> <tr><td width=200 style="color:#4A854A">ベース価格: </td><td><div id="Base0"></div></td></tr> <tr><td width=200 style="color:#4A854A">ベース価格小計: </td><td><div id="Base1"></div></td></tr> <tr style="line-height:1em"><td width=200 style="color:#4A854A"><?php echo $opname; ?></td><td><?php echo $opt; ?></td></tr> <tr><td width=200 style="color:#4A854A">オプション価格小計: </td><td><div id="OptSum"></div></td></tr> </table> ここでは全てのスクリプトが正常に機能していますが、 先ほど記載したスクリプト部分でも、おなじものを 使用できないかと考えたのです・・・。 やはり無理があるのでしょうか。。。 何度もご回答頂いてすみません!

  • march4
  • ベストアンサー率50% (12/24)
回答No.1

回答ではありませんが、ちょこっと書いてみます。 >$opt.="<div id='opt$i'>$0</div>"; この部分の、「$0」というのは、何でしょう? また、「'opt$i'」の部分ですが、 「’」シングルクオテーションで、変数「$i」をくくると、 「$i」は展開されず、そのまま「$i」と表示されてしまいます。 なので、ダブルクオテーション「”」でくくるべきなのかな、と感じましたが、いかがでしょう? よって、 "<div id='opt$i'>$0</div>" は、 "<div id='opt".$i."'>$0</div>" とすべきかなと。(ただ、「$0」は、エラーだと思われます。) 変なことを言っていたら、ごめんなさい^^;

mihomama84
質問者

お礼

ご回答ありがとうございます! さっそく "<div id='opt".$i."'>$0</div>" で試してみたのですが・・・。 ダメでした(TдT) 同じ結果です。 別のところに原因がありそうです。 でも、ご回答頂いてありがとうございました!!

関連するQ&A

  • 検索フォーム(セレクトメニューについて)質問がございます。

    検索フォーム(セレクトメニューについて)質問がございます。 画像を添付いたしておりますが、用途種別の項目には事業用・居住用と2種類選択出来るようにしています。その用途種別の項目によって物件種別の項目を変更したいのですが、いろいろと試してみたのですが、PHP初心者の自分には良く分からず、皆様のお知恵をお借りしたいとおもい、質問いたしました。 <内容> (用途種別)事業用の場合 (物件種別)店舗・事務所・倉庫のメニュー (用途種別)居住用の場合 (物件種別)アパート・マンション・一戸建て・テラスハウス・その他 <ソース(html)> <div class="row"> <!-- item_type --> <?php $f = 'item_type'; echo $errors[$f]; ?> <label for="<?php echo $f ?>">物件種別</label> <span> <select name="<?php echo $f ?>" id="<?php echo $f ?>"> <optgroup class="jigyou" label="事業用"> <option value="6">店舗</option> <option value="7">事務所</option> <option value="8">倉庫</option> </optgroup> <optgroup class="kyojyu" label="居住用"> <option value="2">アパート</option> <option value="3">マンション</option> <option value="4">一戸建て・テラスハウス</option> <option value="22">その他</option> </optgroup> </select> </span> </div> <div class="row"><!-- app_type --> <?php $f = 'app_type'; echo $errors[$f]; ?> <label for="<?php echo $f ?>">用途種別</label> <span> <select name="<?php echo $f ?>" id="<?php echo $f ?>"> <option value="2" class="jigyou">事業用</option> <option value="1" class="kyojyu">居住用</option> </select> </span> </div> JS等も使用したのですが、jqueryを最初から使用しているため、上手く作動しません。 宜しくお願いいたします。

    • ベストアンサー
    • PHP
  • phpのpostについて

    a.phpの値をb.phpにpostしたいのですがうまく値が渡せません post元にはname属性に変数を用いているのですがpost先でnameをどのように指定したらいいかわかりません <a.php> <form action="foo.php" method="POST"> <div id="button"> <input type="submit" name ="PostGo" value="postTime" style="margin-right:30px;" /> </div> <table> <?php for ($data = 1; $data < 5; $data++) { ?> <tr><td> <select name="test<?php echo $data?>"> <option value=1>1 <option value=2>2 <option value=3>3 <option value=4>4 </select> <?php } ?> </table></form> <b.php> <?php for($i=1;$i<5;$i++){ $test =($_POST['test']);←ここの部分のpostをどう指定したらいいかわかりません echo $test; } ?> ※$_POST['test' + $i] これでも取れませんでした

    • ベストアンサー
    • PHP
  • PHPで日付の範囲検索

    PHPを使って日付の範囲検索を実装しています。日付をセレクトフォームで選択し、該当する日時をSELECT文で記述するという流れです。イメージは以下のような感じですが、大体合っていますか? <? php if (!empty(filter_input(INPUT_POST, 'day'))) { $day = filter_input(INPUT_POST, 'day'); ・・・・ SELECT 文   ・・・・ ?> <html> <div class="search"> <form method="post"> <select name="year"> <?php for ($i=2000; $i <= 2021; $i++) { $year .= '<option value="'.$i.'">'.$i.'年</option>'; } ?> </select> <select name="month"> <?php for ($i=1; $i <= 12; $i++) { $month .= '<option value="'.$i.'">'.$i.'月</option>'; } ?> </select> <select name="day"> <?php for ($i=1; $i <= 31; $i++) { $day .= '<option value="'.$i.'">'.$i.'日</option>'; } ?> </select> <input type="hidden" name="search" value="<?php echo $_POST['year'].'-'. $_POST['month'].'-'. $_POST['date']; ?>"> <input type="submit" value="検索"> </form> </div> </html>

    • ベストアンサー
    • PHP
  • はじめて質問させていただきます!

    はじめて質問させていただきます! 宜しくお願い申し上げます! 友人にajaxでmysqlから最新の1件のニュースデータを引っ張り出して表示させるphpスクリプトを作ってもらいました。 こんな感じになります。 <!---ここからがスクリプトで---> <?php $i = 0; foreach ($news as $thenews): $class = null; if ($i++ % 2 == 0) { $class = ' class="altrow"'; } ?> <dl> <dt> <?php echo $my->df($thenews['News']['date'],"Y.m.d"); ?>【<?php echo $thenews['News']['title']; ?>】</dt> <dd> <div style="height: 60px; overflow-y: auto;"> <?php echo $thenews['News']['body']; ?> </div> </dd> </dl> <hr /> <?php endforeach; ?> <dl> <dt><a href="news/">■過去のニュースはこちら</a></dt> </dl> <!---ここまでで終りっす---> このスクリプトを変えて、最新の2件のニュースデータを引っ張り出して表示させようと思って、こんな風にしてみたのですが、こうすると同じニュース(最新の1件)が2個表示されてしまいました。 <!---ここからがスクリプトで---> <?php $i = 0; foreach ($news as $thenews): $class = null; if ($i++ % 2 == 0) { $class = ' class="altrow"'; } ?> <dl> <dt> <?php echo $my->df($thenews['News']['date'],"Y.m.d"); ?>【<?php echo $thenews['News']['title']; ?>】</dt> <dd> <div style="height: 60px; overflow-y: auto;"> <?php echo $thenews['News']['body']; ?> </div> </dd> <dt> <?php echo $my->df($thenews['News']['date'],"Y.m.d"); ?>【<?php echo $thenews['News']['title']; ?>】</dt> <dd> <div style="height: 60px; overflow-y: auto;"> <?php echo $thenews['News']['body']; ?> </div> </dd> </dl> <hr /> <?php endforeach; ?> <dl> <dt><a href="news/">■過去のニュースはこちら</a></dt> </dl> <!---ここまでで終りっす---> 当の友人に直してもらおうと連絡してみても、音信不通でメールも帰ってこない状態なので困ってしまい、こちらに質問させていただきました。 こんなソース見ても、わからないのかも知れませんが、もし参考になるようなご意見をいただけましたら幸いです! 何卒、宜しくお願い申し上げます。

    • 締切済み
    • PHP
  • jquery上で2つのスクリプトの合体

    下記のように「サブページその1  hoge.ne.jp/read1000.php」からスクレイピングしたtakahashiという文字を、「メインページ hogehoge.jp/index.html」の<input type="text">内に表示可能なスクリプトがあります。【現在できていること その1】 また、メインページで取得した変数123456を、URLという形で「サブページ2 read2222.php」のPHPに渡し、サブページ2の中で「123456についてのPHP処理した結果」を、再度メインページで取得して表示するスクリプトがあります。【現在できていること その2】 【やりたいこと】 この2つのスクリプトを合体させ「サブページ1 read1000.php」からスクレイピングしたtakahashiという文字を、URLという形で「サブページ2 read2222.php」のPHPに渡し、サブページ2の中で「takahashiについてのPHP処理した結果」を、再度メインページで取得して表示したいというのが今回の趣旨で、スタックしている部分となります。 ***************************************************************** 【現在できていること その1】 【サブページその1 http://hoge.ne.jp/read1000.php】 <table border="1"> <tbody> <tr> <td class="class3_sql_name">takahashi</td> </tr> </tbody> </table> 【メインページ http://hogehoge.jp/index.html】 <script src="http://code.jquery.com/jquery-1.11.1.min.js"></script> <script src="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script> <script src="js/jquery.xdomainajax.js"></script> <script> // 引っ張ってきたいサイトのURL url = 'http://hoge.ne.jp/read1000.php'; $.get(url, function(data){ var content3_sql_name = $(data.responseText).find('.class3_sql_name').text();   $("[name='ca2_stock_name']").val(content3_sql_name); }); </script> <input type="text" name="ca2_stock_name" value="" /> ***************************************************************** 上記のスクリプトを実行すると、 <input type="text" name="ca2_stock_name" value="takahashi" /> という形が完成します。 ****************************************************************** 【現在できていること その2】 【サブページその2 http://hoge.ne.jp/read2222.php】 <div id="news200"> こんにちは <?php echo $_GET["name"]; ?> さん </div> 【メインページ http://hogehoge.jp/index.html】 <script type="text/javascript"> var usr_id='123456' $(function(){ $("#read200").load("https://hoge.ne.jp/read2222.php?name="+usr_id+" #news200 ul", function(data) { if(data == null){ $("#read200").append("読込みに失敗しました"); } }); }); </script> <div id="read200"></div> ***************************************************************** 上記のスクリプトを実行すると、 メインページ 上で、サブページ2の<div id="news200"/>....<div> 間を拾ってきて表示することができます。                → こんにちは123456さん メインページ内で「read2222.php?name="+usr_id+"」という形でURLとして一旦サブページ2にトスし、 $_GET["name"] でサブページで処理しものをあらためてメインページで表示させています。 ***************************************************************** 【やりたいこと】 上記の2つのスクリプトを合体させ、 var usr_id='123456' の代わりに、 【http://hoge.ne.jp/read1000.php】にある<td class="class3_sql_name">takahashi</td> のtakahashiを表示させたいと考えています。                → こんにちはtakahashiさん 考え方としては var content3_sql_name の変数をvar usr_idの代わりにすればいいだけです。 ************************************************************** 【試したがうまくいかなかったスクリプト】 <script type="text/javascript"> url = 'http://hoge.ne.jp/read1000.php'; $.get(url, function(data){ var content3_sql_name = $(data.responseText).find('.class3_sql_name').text(); $(function(){ $("#read200").load("https://hoge.ne.jp/read5555.php?name="+content3_sql_name+" #news200 ul", function(data1) { if(data1 == null){ $("#read200").append("読込みに失敗しました"); } }); }); }); </script> <div id="read200"></div> ********************************************************** どこがいけないのかご指導いただけませんでしょうか? 宜しくお願い致します。

  • phpのメール送信での質問になります

    メールとお問い合わせ内容は届くのですが、名前とアドレスが届かないので間違っている箇所を教えていただけるとありがたいです。 以下コードになります。 html <body> <main> <section> <h2>お問合せ内容の確認</h2> <form action="mailto.php" method="post"> <div class="contant-area"> <div class="label-container"> <label class="item intem-name">名前</label> <label class="item item-email">メールアドレス</label> <label class="item item-message">問い合わせ内容</label> </div> <div class="text"> <p class="item-post" name="name"><?php echo $_POST["name"]; ?></p> <p class="item-post" name="email"><?php echo $_POST["email"]; ?></p> <textarea class="item-post item-textarea" name="message"><?php echo $_POST["message"]; ?></textarea> </div> </div> <div class="button-area"> <input type="submit" value="送信"> </div> </form> </section> </main> </body> php <?php // フォームデータの取得 $name = $_POST[&#039;name&#039;]; $email = $_POST[&#039;email&#039;]; $message = $_POST[&#039;message&#039;]; // 送信先のメールアドレス $to = &#039;*****@gmail.com&#039;; // 件名 $subject = &#039;お問い合わせがありました&#039;; // メール本文 $body = "名前: $name\n"; $body .= "メールアドレス: $email\n"; $body .= "問い合わせ内容:\n$message"; // 送信元のメールアドレスと名前 $from = &#039;*****1690.xsrv.jp&#039;; $fromName = &#039;お問い合わせフォーム&#039;; // ヘッダー $headers = "From: $fromName <$from>"; // メール送信 $mailResult = mail($to, $subject, $body, $headers); ?>

    • ベストアンサー
    • PHP
  • PHPの解読しているのですが、Textを入力して…

    どこに行くのかがわかりません(涙 自分の持てる知識を全力使い、フル回転で探しているのですが、入力した文字がどこに行くのかが分からず苦戦しています。 ソースを辿って文字を入力しているページは分かったのですが、そこからが知識が足りなく断念しています…。 どなたか詳しい方いらっしゃいましたらご回答お願いします。 問題のソース <div class="widget-liquid-right"> <div id="widgets-right"> <?php $i = 0; foreach ( $wp_registered_sidebars as $sidebar => $registered_sidebar ) { if ( false !== strpos( $registered_sidebar['class'], 'inactive-sidebar' ) || 'orphaned_widgets' == substr( $sidebar, 0, 16 ) ) continue; $wrap_class = 'widgets-holder-wrap'; if ( !empty( $registered_sidebar['class'] ) ) $wrap_class .= ' sidebar-' . $registered_sidebar['class']; if ( $i ) $wrap_class .= ' closed'; ?> <div class="<?php echo esc_attr( $wrap_class ); ?>"> <div class="sidebar-name"> <div class="sidebar-name-arrow"><br /></div> <h3><?php echo esc_html( $registered_sidebar['name'] ); ?> <span class="spinner"></span></h3></div> <?php wp_list_widget_controls( $sidebar ); // Show the control forms for each of the widgets in this sidebar ?> </div> <?php $i++; } ?> </div> </div> <form action="" method="post"> <?php wp_nonce_field( 'save-sidebar-widgets', '_wpnonce_widgets', false ); ?> </form> <br class="clear" /> </div>

    • 締切済み
    • PHP
  • Wordpressでプラグイン内自作関数の有効範囲

    Wordpressでプラグインの作り方を勉強しています。 http://tachibanacw.mond.jp/techwiki/index.php?WordPress%A5%D7%A5%E9%A5%B0%A5%A4%A5%F3%BA%EE%C0%AE このページの中段以降にあるclass ShowTextを作ってみているのですが、このページこう書いてあります。 ※ ただし、footer.phpやheader.php、sidebar.phpでは呼び出し方法(1)は使えない!!! この通りプラグイン内で作った関数を呼び出す <?php echo esc_html($showtext->get_text()); ?> をsingle.phpへ書き込むと正常に表示されますが header.phpやfooter.phpなどでは Call to a member function get_text() on a non-object in C:\xampp\htdocs\~ というエラーが出ます。(ローカルでテストしています) ↑のページには理由が書いてないのですが、これはなぜなのですか? サンプルのソースは以下です。 <?php /* Plugin Name: Show Text Plugin URI: http://localhost/wordpress/plugin Description: テキストを表示するだけのプラグイン Author: A.Hiruta Version: 0.1 Author URI: http://localhost/wordpress */ class ShowText { //「 __construct」はインスタンス化するときに実行されるメソッド function __construct(){ //クラス内のメソッドを指定する場合は第2引数は$thisを含めた配列になる add_action('admin_menu', array($this, 'add_pages')); } function add_pages(){ add_menu_page('テキスト設定','テキスト設定', 'level_8', __FILE__, array($this, 'show_text_option_page'), '', 26); } function show_text_option_page() { //$_POST['showtext_options'])があったら保存 if ( isset($_POST['showtext_options'])) { check_admin_referer('shoptions'); $opt = $_POST['showtext_options']; update_option('showtext_options', $opt); ?><div class="updated fade"><p><strong><?php _e('Options saved.'); ?></strong></p></div><?php } ?> <div class="wrap"> <div id="icon-options-general" class="icon32"><br /></div><h2>テキスト設定</h2> <form action="" method="post"> <?php wp_nonce_field('shoptions'); $opt = get_option('showtext_options'); $show_text = isset($opt['text']) ? $opt['text']: null; ?> <table class="form-table"> <tr valign="top"> <th scope="row"><label for="inputtext">テキスト</label></th> <td><input name="showtext_options[text]" type="text" id="inputtext" value="<?php echo $show_text ?>" class="regular-text" /></td> </tr> </table> <p class="submit"><input type="submit" name="Submit" class="button-primary" value="変更を保存" /></p> </form> <!-- /.wrap --></div> <?php } //何故かfooter.phpにはecho esc_html($showtext->get_text());を記述してもダメだった。 function get_text() { $opt = get_option('showtext_options'); return isset($opt['text']) ? $opt['text']: 'null desu.'; } } //クラスを記述して、その場でインスタンス化(実行) $showtext = new ShowText; ?> よろしくおねがいいたします。

    • ベストアンサー
    • PHP
  • JAVAスクリプトでのFORM入力チェックの方法

    JAVAスクリプトでのFORM入力チェックの方法を教えてください。 ネットでいろいろ探してはめ込んだのですが、動作するプログラムが下記のしかありませんでした。 ラジオボタンの入力チェックとプルダウンの入力チェックを同時にしたいのですがよくわかりません。 今の状態ではラジオボタンをチェックしても未入力のアラートが出てしまいます。 あとこれにプルダウンの入力チェックをつけたいのですが… すいませんがどなたか教えてください。よろしくお願いします。 function Form_Validator(theForm) { var flag=false; var i; for(i=0; i<theForm.OPT-00-06.length; i++){ if (theForm.OPT-00-06[i].checked){ flag = true; break; } } if(!flag){ alert("\"OPT-00-06\" にチェックしてください。"); return (false); } if(confirm("入力もれはありません。")){ return (true); }else{ return (false); } <form name="form1" method="POST" action="~cgi?" onsubmit="return Form_Validator(this);"> ・ ・ <input type="radio" name="OPT-00-06" value="A"> <input type="radio" name="OPT-00-06" value="B"> ・ ・ <select name="OPT-00-07"> <option value="">選択してください</option> <option value="80">80</option> <option value="81">81</option> ・ ・ ・ <select name="OPT-00-08"> <option value="">選択してください</option> <option value="35">35cm</option> <option value="36">36cm</option> ・ ・ ・ <input type="submit" value="カートに入れる" name="submit">   <input type="reset" value="内容をクリア" name="reset"> </div> </form>

  • 簡単なPHPスクリプトを動的に生成したい

    PHPスクリプトを動的に生成することは可能でしょうか? たとえば [ index.php ] <html> <head></head> <body>  <?php   print file_get_contents('format.txt');  ?> </boy> </html> [ format.txt ] echo "aaa"; のようにスクリプトをformat.txtに記述しておき それをindex.phpを読み込んだときに展開するのです。 しかし、上記のスクリプトを実行するとecho "aaa";と表示され、 aaaとは表示してくれませんでした。 PHPでこういう動的にスクリプトを展開するようなことは出来ないのでしょうか?

    • ベストアンサー
    • PHP

専門家に質問してみよう