honoka-cha の回答履歴
- セレクトボックスの選択結果をキープする方法
PHP初心者です。よろしくお願いいたします。 drupalというCMSを使って、オークションサイトのようなものを作っています。 ubercartというモジュールで商品の投稿をするようにしていて、値段の設定をセレクトボックスで選ぶようにしています。 具体的には、uc_product.moduleというファイル内に以下のような配列があって、0・10・50・100の中から値段を選ぶようになっています。 ================================ $form['base']['prices']['sell_price'] = array( '#type' => 'select', '#title' => t('Sell price'), '#required' => TRUE, '#options' => array( '0' => ('0'), '10' => ('10'), '50' => ('50'), '100' => ('100'), ), '#default_value' => isset($node->sell_price) ? uc_store_format_price_field_value($node->sell_price) : 0, '#description' => t('Customer purchase price.'), '#weight' => 2, '#size' => 1, '#maxlength' => 35, '#field_prefix' => $sign_flag ? '' : $currency_sign, '#field_suffix' => $sign_flag ? $currency_sign : '', ); ================================ #default_valueで指定されているように、初期値は0になっています。そのため、商品の情報を編集する時に設定していた値段が初期値の0に戻ってしまうので、編集するたびに値段を選択しなければいけません。 保存時の値段をキープするようにしたいのですが、どうもやり方がわかりません。#default_valueのところを変えると思いますが、自分がやるとどうしてもページの表示自体できなくなってしまいます。。。 つたない文章で申し訳ありませんが、アドバイスをいただけると非常に幸いです。 よろしくお願いいたします。
- ベストアンサー
- PHP
- midorinodonchan
- 回答数3
- php5.2.9に変更後に不具合について
php初心者です。 レンタルサバ―なのですが、php4.4.7からphp5.2.9に変更後うまくいかなくて困っています。 header("Location: http://○○○/top.php");がうまく飛びません。 ページを実行すると真っ白の画面になってしまいます。 以前のバージョンですと、問題なく動いていました。 下記を見てください。 どうしたらよいのでしょうか? <?php mysql_query('SET NAMES ujis'); require_once( "function.php" ); session_start(); if ( $_REQUEST[ "SUBMIT" ] != "" ) { if ( ( $_POST[ "VALUE_ID" ] != "" ) && ( $_POST[ "VALUE_PW" ] != "" ) ) { $k_id = $_POST[ "VALUE_ID" ]; $k_pw = $_POST[ "VALUE_PW" ]; $con=mysql_connect('aaa','aaa','aaa') or die("MySQL接続エラー: ".mysql_error()); mysql_select_db('aaa',$con); $sql= "select * from あああ where id='$k_id' and pw='$k_pw'"; $result=mysql_query($sql); $rows=mysql_num_rows($result); if($rows==1){ while($row=mysql_fetch_array($result)){ $d_id = $row["id"]; $d_pw = $row["pw"]; } } } } if ( !isset( $_SESSION[ "D_ID" ] ) ) { $_SESSION[ "D_ID" ] = ""; } $_SESSION[ "D_ID" ] = $d_id; if ( !isset( $_SESSION[ "D_PW" ] ) ) { $_SESSION[ "D_PW" ] = ""; } $_SESSION[ "D_PW" ] = $d_pw; if ( !isset( $_SESSION[ "K_ID" ] ) ) { $_SESSION[ "K_ID" ] = ""; } $_SESSION[ "K_ID" ] = $k_id; if ( !isset( $_SESSION[ "K_PW" ] ) ) { $_SESSION[ "K_PW" ] = ""; } $_SESSION[ "K_PW" ] = $k_pw; if ( ( $_SESSION[ "D_ID" ] == "" ) || ( $_SESSION[ "D_PW" ] == "" ) ) { print( "<br><center>○○○○○○○○<br>" ); print( "<br>○○○○○○○○○○○○○○○○<br>" ); print( "<br>○○○○○○○○<br>" ); print( "<br><a href=\"index.html\">[ BACK ]</a></center>" ); exit(); }elseif( CheckID_PW( $_SESSION[ "K_ID" ], $_SESSION[ "K_PW" ], $_SESSION[ "D_ID" ], $_SESSION[ "D_PW" ] ) == false ) { print( "<br><center>○○○○○○○○<br>" ); print( "<br><center>○○○○○○○○○○○○○○○○<br>" ); print( "<br><center>○○○○○○○○" ); print( "<br><br><a href=\"index.html\">[ BACK ]</a></center></body>" ); } else {header("Location: http://○○○/top.php");} ?>
- コロン構文とは何でしょうか?
コロン構文とは何でしょうか? 次のページに、「PHPは、forループ用に"コロン構文"もサポートします」とあります。 http://php.net/manual/ja/control-structures.for.php
- phpでコマンドを実行する際の対策方法
言語はPHPです。 先日、ファイルのエンコードを調べる方法は無いかと質問をさせてもらい、 結果、「$default_charset = `nkf -g $charset_file_path`;」といった記述を行えば良いと教えて頂きました。 http://okwave.jp/qa/q7477016.html この回答により無事やりたかったことが出来たのですが、実際にこのコードをそのまま記述するのは大変危ないという話を聞きました。 理由としては変数「$charset_file_path」に「rm」などの削除系コマンドを仕込まれてしまう可能性があるからということです。 ここで質問なのですが、こういったコマンドを直接記述する際、どのような対策を行えばよろしいのでしょうか?(OSインジェクション?) もしご存知の方がいらっしゃいましたら宜しくお願い致します。
- ファイルの文字コードを調べるには?(php)
言語はphpです。 アップロードしたファイルをからデータを1行ずつ抜き取るという作業をしています。 その際にエンコードを下記の方法で行っています。 $lines = mb_convert_encoding(fgets($fp), 'utf-8','shift-jis'); この場合、元のファイルがshift-jisであればなんら問題は無いのですが、すべてのファイルがそうとは限りません。なので、アップロードしたファイルの文字コードを調べ、その文字コードを記述するようにしたいのですが、調べる方法は何か無いでしょうか? ※[auto]を試してみましたが、その際は文字化けが起きていましましたので、出来れば他の方法でお願いします。 自分なりに調べてみましたが、良い情報を見つけることが出来なかったので、ご存知の方は宜しくお願い致します。
- phpの画面表示が真っ白です
phpをXAMPPのサーバーでやろうとしているのですが、表示されずに真っ白です。 サーバーは出来ているようです。 コードをのせるのでもし間違っていたら教えてください。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitionl//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title></title> </head> <body> <?php print'ようこそ'; ?> </body> </html>
- phpの画面表示が真っ白です
phpをXAMPPのサーバーでやろうとしているのですが、表示されずに真っ白です。 サーバーは出来ているようです。 コードをのせるのでもし間違っていたら教えてください。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitionl//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title></title> </head> <body> <?php print'ようこそ'; ?> </body> </html>
- テーブルに入っているデータと重複チェックしたい
やりたいこと: phpを実行して取得したデータの内容と既にDBのテーブルに格納されているデータを 比較して、 異なっていれば、新しいデータとして INSERT INTO文で テーブルにデータを登録する。 同じであれば、登録しない。 という処理がしたいです。 $sql = "select * from hoge where url= $page_uri"; $kakunin = mysql_query($sql , $db ); if ( $page_uri == $kakunin ){ //同じデータならスキップ break; } else{ $sql = mysql_query("INSERT INTO hoge VALUES (0,'$page_uri','$pon')"); と書いているのですが、以下のエラーが出てしまいます。。 Fatal error: Cannot break/continue 1 level in /www/xx.php on line 42 これは、breakは使えないよ ってことでしょうか? breakでなくても やりたいことが実現できればこだわりはないのですが、、 アドバイスよろしくお願いします。
- .htaccessについて
PHPでの.htaccessを要してリダイレクトやアクセス禁止にするときは、どうすればいいのでしょうか? リダイレクトの例えとして、 訪問者がttp://www.abcde.com/にアクセスすると、 ttp://www.abcde.com/bbs/に移動する 初歩的な質問ですみません。 ご教授お願いします。
- PHPでMySQLのレコードを削除したい
現在「基礎からのMYSQL」という本でXAMPPを導入しMySQL,PHPの基礎を勉強中です。 (mysql_query() を初めて学習中です。) 例にならってスクリプトを書いてみたのですが、MySQL内にあるレコードを削除するためのスクリプトがうまく作動しません。 (SELECT, INSERT, SEARCH は正常に作動します。DELETEだけがなぜかうまくいきません。) ApacheとMySQLは起動しています。 考えられる原因をおしえていただけませんでしょうか。よろしくおねがいいたします。 ソースコードは下記のとおりです。 ★HTML(トップページ) //メッセージ表示のスクリプトを呼び出すフォーム <form method="post" action="kantan_select.php"> メッセージを表示します<br> <input type="submit" value="メッセージ表示"> </form> //挿入のスクリプトを呼び出すフォーム <form method="post" action="kantan_insert.php"> 名前を入力してください<input type="text" name="a1"><br> メッセージを入力してください<input type="text" name="a2" size=150><br> <input type="submit" value="送信"> </form> //☆☆☆削除のスクリプトを呼び出すフォーム☆☆☆ <form mothod="post" action="kantan_delete.php"> 削除番号<input type="text" name="b1"><br> <input type="submit" value="削除番号送信"> </form> //検索のスクリプトを呼び出すフォーム <form method="post" action="kantan_search.php"> 検索キーワード<input type="text" name="c1"><br> <input type="submit" value="検索開始"> </form> ★レコード削除のPHPスクリプト <?php $s=mysql_connect("localhost","root","パスワード") or die("接続失敗"); print "接続しました<br>"; mysql_select_db("db1"); $b1_d=$_POST["b1"]; mysql_query("delete from tbk where bang=$b1_d") ; $re=mysql_query("select * from tbk order by bang"); while($kekka=mysql_fetch_array($re)){ print $kekka[0]; print ":"; print $kekka[1]; print ":"; print $kekka[2]; print "<br>"; } mysql_close($s); print "<br><a href='kantan.html'>メニューに戻る</a>" ?> <環境> Windows 7 XAMPP導入するための付属CD-ROMの内容 ・Apache(HTTPD2.2.6 + Openssl0.9.8e) ・MySQL(5.0.45) ・PHP(5.2.4) ・PHP(4.4.7) ・phpMyAdmin(2.11.1) ・Zend Optimizer
- php演算子
独学で1週間程前からPHPの勉強を始めた超初心者です。 よろしくお願いします。 以下の式についてです。 ---------------------------------------------------------------------------------- (1) <?php (2) $a = 10: (3) print( ( $a>0 ? " プラスです。" : "マイナスまたはゼロです"). "<br />" ); (4) $a = 0; (5) print( ( $a ? : 10 )."<br />" ); (6) $a = 5; (7) print( ( $a ? : 10 )."<br />" ); ---------------------------------------------------------------------------------- ↓ ------------ プラスです。 10 5 ------------ となるようですが、 まず(3)行目の式は理解できます。$a>0ならば、"プラスです。"を返す。つまり$a>0が条件を提示している感じがあるのですが・・・ (5)行目の $a ?がTrueならば、$aを返し、そうでなければ10を返す、というここが問題なのですが そもそも 『 $a ? 』 が条件の式であるように理解できません。つまり『何何がなになにならば・・』と どう解釈するのでしょうか。 同じく(7)の条件部分も同じ事だと思うのですが、今度は$aが多分変化しているから 答えが違うと思うのですが、ここは今度どう理解するのでしょうか。 初心者ゆえ、子供でもわかるやさしい表現でお願いできれば幸いです。 よろしくお願いします。
- PHPで検索結果からさらに詳細な情報を表示させる
PHP5.3.3 + MySQL5でWebプログラムを勉強している者です。 現在フォームからの情報をキーにしてDBの検索結果を表示するプログラムを組んでいるのですが、検索画面(HTML)→DBへアクセス→検索結果の一覧表示というところまでは出来たのですがそこからさらに表示ボタンを使って個別の結果を表示させたいのですが今一上手い方法が思いつきません。 何か良い方法はありませんでしょうか? 下手糞な文章なのでイメージが付かないと思いますのでイメージに近いURLを張っておきます。 ttp://www.e-trader.jp/trader/contents/kaitorikensaku/kensaku.php こちらのトレーダーさんのサイトの様な形で結果一覧→個別の結果を表示させたいのです。 どなたかアドバイスをよろしくお願いします。
- ベストアンサー
- PHP
- asphalt-beach
- 回答数3
- 配列から順位を算出したい
MySqlから以下の配列を出力し、各店舗ごとにseihin_A~seihin_Dが何番目に安いのかを算出したいと考えています。 $arr[0][kihon][shop_name] = A社; $arr[0][kihon][shop_category] = 1; $arr[0][kakaku][seihin_A] = 1500; $arr[0][kakaku][seihin_B] = 21580; $arr[0][kakaku][seihin_C] = 400; $arr[0][kakaku][seihin_D] = 55000; $arr[1][kihon][shop_name] = B社; $arr[1][kihon][shop_category] = 1; $arr[1][kakaku][seihin_A] = 0; $arr[1][kakaku][seihin_B] = 18580; $arr[1][kakaku][seihin_C] = 500; $arr[1][kakaku][seihin_D] = 54800; $arr[2][kihon][shop_name] = C社; $arr[2][kihon][shop_category] = 2; $arr[2][kakaku][seihin_A] = 1600; $arr[2][kakaku][seihin_B] = 17000; $arr[2][kakaku][seihin_C] = 0; $arr[2][kakaku][seihin_D] = 65000; この配列から、たとえばC社を選んだとき、 製品A(seihin_A) 2位 製品B(seihin_B) 1位 製品C(seihin_C) 除外 製品D(seihin_D) 3位 と各製品ごとの順位結果を出力するには、配列をどのように処理したらよいでしょうか。 ご教示よろしくお願いいたします。 (ちなみにCakePHPを使っています)
- PHPが実行できない
CentOSでPHPの勉強をしています。 ですが、実行ができません。というより、ファイルを見つけることができません。 以下のようにやりました。 まずrootでログインし、httpdを起動させました。 [root@new-host ~]# /etc/init.d/httpd start httpd を起動中: 次にstudentというホストに切り替え、「studentのホーム」というフォルダにtest.phpを作成しました。 この後、 http://new-host/~student にアクセスすればtest.phpが選択できるかと思ったのですがそうすると Not Found The requested URL /~student was not found on this server. Apache/2.2.3 (CentOS) Server at new-host Port 80 と書いてある404 Not Foundの画面になってしまいます。 どこがいけないのでしょうか。よろしくお願いします。
- PHP returnについて
いつもお世話になっております。 PHPのreturn についてお伺いさせてください。 以下のように外部ファンクションを設けておりまして、本体から渡される値を、ファンクション側で計算させて、値を返す方法なのですが、どうもうまくいきません。 どこら辺が間違っているのでしょう? test_1.php ------------------------------------ require_once('test_2.php'); $a=0; $b=5; $c=5; $a = get_data(b,c); test_2.php ------------------------------------ function get_data($data1,$data2){ $data = $data1+$data2; return $data; } ------------------------------------ こんな感じで、本来であればtest_1.phpの$aにtest_2.phpの$dataの結果を渡したいのですが、どうもうまくいかないのです。 申し訳ありませんが、教えて頂けませんでしょうか。 よろしくお願い致します。
- CakePHP 1.3について
CakePHPが初心者です。 Views-userdetail-index.ctpにて <?php echo $form->create(null,array('type'=>'get','action'=>'./updateRecord')); ?> ~ <?php echo $form->textarea("User.remarks", array("cols" => 22,"rows" => 2)); ?> ~ を記述し、userdetail_controllerにて function updateRecord(){ if (!empty($this->data)){ $this->User->id = 1; $this->User->saveField('remarks','exists'); } else { $this->User->id = 1; $this->User->saveField('remarks','empty'); } $this->redirect('.'); } を記述しています。 しかし、どうしても「!empty($this->data)」の判別によってemptyとなってしまいます。 User.remarksの部分をUserdetailにして色々ためしましたが、どうしても値の受け渡しがうまくいかないのです。 どなたかご教授を宜しくお願い致します。
- PC固有の番号(シリアル番号等)を取得したい。
PHPを使用して、PC固有の番号(シリアル番号等)を取得したいのですが、どのように記述すればよいか分からないので教えて下さい。 ○やりたいこと 現在作成中のSNSサイトで友達を紹介する仕組みを作りたいです。 紹介する人にも紹介を受ける人にもメリットがあります。 紹介する人が、紹介を受ける人のメールアドレスをサイト内で入力・送信をすると、サイトから紹介を受けるに招待メールが送られます。 紹介を受ける人は、招待メールのリンクを辿りサイトの登録へと進みます。 メールアドレスは、WEBメールでの登録も許可しているので、1台のPCでいくつもアドレスを作ることができて、自作自演が可能です。 そこで、PC固有の情報を取得して登録メールアドレスと組み合わせてアカウントチェックをすることで、1台で複数のアカウントが取得できると考えています。 参考になる文献でもよいので、どうか皆さんのお知恵を貸して下さい。 宜しくお願い致しますm(__)m ■環境 windows vista xampp/apache 2.2.4 PHP Version 5.2.3
- 画像をDBに登録できない
現在、DBに画像を登録するプログラムを作成しているのですが、登録できません。ファイルの大きさが問題なのかと思い、小さい画像(1.5M)でためしてみましたが、やはりできませんでした。 DBのフィールド名なども正しいことを確認しています。 原因、対策がわかる方がいらっしゃいましたら教えてください。 よろしくお願いします。 ---------------------- <?php if($_POST["submit"]=="upload") { // データベースに接続する処理。 略 mysql_select_db( $dbname ); mysql_set_charset("utf8"); // 文字コードを指定します。 // ファイル情報を取得 $file = $_FILES["userfile"]["name"];// 元のファイル名 $type = $_FILES["userfile"]["type"];// MIME型 $tmpname = $_FILES["userfile"]["tmp_name"];// テンポラリファイル名 $size = $_FILES["userfile']['size"];//サイズ // 画像サイズを取得 list($width, $height) = getimagesize($tmpname); // 画像データを取得 $contents = file_get_contents($tmpname); // エンコード $contents = base64_encode($contents); // SQL用にエスケープ $contents = mysql_real_escape_string($contents,$conn); // 格納 $strsql = "INSERT INTO DBpractice ("."size, imgtype, width, height, imgdata ".") values ( "."$size, '{$type}', $width, $height, '{$contents}'".");"; $res = mysql_query($strsql,$conn); print mysql_error($conn); echo "更新を完了しました。"; mysql_close($conn); } ?> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> <title>test</title> <link href="common/css/base.css" rel="stylesheet" type="text/css" /> </head> <body> <form name="rfform" action="<?=$_SERVER['PHP_SELF'] ?>" enctype="multipart/form-data" method="post"> <input type="hidden" name="act" value="upload"> <input type="file" name="userfile"> <input type="submit" name="submit" value="アップロード"> </form> </body> </html> ---------------------------
- ベストアンサー
- PHP
- tanakataro2010
- 回答数9
- 画像をDBに登録できない
現在、DBに画像を登録するプログラムを作成しているのですが、登録できません。ファイルの大きさが問題なのかと思い、小さい画像(1.5M)でためしてみましたが、やはりできませんでした。 DBのフィールド名なども正しいことを確認しています。 原因、対策がわかる方がいらっしゃいましたら教えてください。 よろしくお願いします。 ---------------------- <?php if($_POST["submit"]=="upload") { // データベースに接続する処理。 略 mysql_select_db( $dbname ); mysql_set_charset("utf8"); // 文字コードを指定します。 // ファイル情報を取得 $file = $_FILES["userfile"]["name"];// 元のファイル名 $type = $_FILES["userfile"]["type"];// MIME型 $tmpname = $_FILES["userfile"]["tmp_name"];// テンポラリファイル名 $size = $_FILES["userfile']['size"];//サイズ // 画像サイズを取得 list($width, $height) = getimagesize($tmpname); // 画像データを取得 $contents = file_get_contents($tmpname); // エンコード $contents = base64_encode($contents); // SQL用にエスケープ $contents = mysql_real_escape_string($contents,$conn); // 格納 $strsql = "INSERT INTO DBpractice ("."size, imgtype, width, height, imgdata ".") values ( "."$size, '{$type}', $width, $height, '{$contents}'".");"; $res = mysql_query($strsql,$conn); print mysql_error($conn); echo "更新を完了しました。"; mysql_close($conn); } ?> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> <title>test</title> <link href="common/css/base.css" rel="stylesheet" type="text/css" /> </head> <body> <form name="rfform" action="<?=$_SERVER['PHP_SELF'] ?>" enctype="multipart/form-data" method="post"> <input type="hidden" name="act" value="upload"> <input type="file" name="userfile"> <input type="submit" name="submit" value="アップロード"> </form> </body> </html> ---------------------------
- ベストアンサー
- PHP
- tanakataro2010
- 回答数9
- $_COOKIEについて
はじめまして。 PHPを勉強中なのですが$_COOKIEを使った際にエラーになってしまいます。 それが何故なのか分からないのですが、この辺に詳しい方助けて下さい。 ↓↓状況は以下のとおりです。↓↓ ・開発環境:xampp、php、vista ・下記のスクリプトを記述してブラウザで表示すると、「1回目のアクセスです。」とともにエラー表示も出てきてしまう。 <?php if (isset($_COOKIE["count"])) { $count = $_COOKIE["count"] + 1; } else { $count = 1; } setcookie("count", $count); echo "${count}回目のアクセスです。"; ?> ・上記のスクリプトを実行した際のエラー表示は「 Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs(ディレクトリ)php:182) in (エラーの行数) ・ちなみに、練習で作ってるだけなので同じページに、「setcookie」と「$_COOKIE」を使っている。(ただし、クッキー名などは、前に使っているのとは被らないようにしている) 以上です。 やりたい事は、ブラウザにCookieを送り、読み込むたびに「?回目のアクセスです。」の回数を増やしていきたいです。 しかし、これも出来ずに何度読み込みしても「1回目のアクセスです。」とエラー表示しかでません。 この質問で上手く伝わったかわかりませんが、ご見識ある方お力添え下さいませ。