副業PHP
| メイン | 簡易ヘッドライン |
リンク 単体表示
PHPプロ!Q&A掲示板
(2009-1-8 3:02:22)
現在データベースには 777 件のデータが登録されています。
セッションを破棄する方法
(2009-1-6 19:32:16)
以下のようにセッションを破棄しようとしましたが、
セッションが残ったままになっているようです。
セッションを正しく破棄する方法を教えてください。
$_SESSION["loginflag"] = "";
if (!isset($_SESSION["loginflag"])) {
print "セッション無し"; //こちらを通りたい
}else{
print "セッション有り"; //こちらを通ってしまいます
}
よろしくお願いします。
画像データDB格納メリット
(2009-1-6 14:08:32)
こんにちは、
PHP5、MYSQLの環境で
画像データの取り扱いの部分を勉強中なのですが、
そのなかで、
画像の格納方法に
DBにバイナリデータを保存する方法と
特定フォルダに格納する方法と
二通りあると思われるのですが、
それぞれ、どうゆうメリットがあるのだろうか?と
思いまして、メリットや、こうゆうサイトに使えるような
情報などありましたらお願い致します。
個人的には、下記のような感じたのですが、
記述コードは、画像名や幅などDBで管理すれば
あまり難しさに差がないように感じましたが。。
SBに格納の場合、セキュリティが向上するが
データから画像として構築する分、処理に負荷がかかる
フォルダ格納の場合、セキュリティが低下するが
負荷が少ない
ページのナビゲーションでの配列の受け渡し
(2009-1-5 16:20:49)
$PAGESIZE件ごとにページ分け表示する際のページのナビゲーションについて、
例えば、前のページに値($tcnt)をtcntという変数名で受け渡したいときは次のようにすると思います。このようにして配列を受け渡すことは可能ですか?
//ページのナビゲーション
if ($page > 1) {
//2ページ以降の場合は[前]を表示します
$body .= "<a href='$PHP_SELF?page=".($page-1)."&tcnt=$tcnt'>前の".$PAGESIZE."件</a>";
}
$dis[]という変数名の多次元配列で中身は次のようになっています。
Array ( [0] => Array ( [レシピNo.] => 10 [マッチ数] => 1 ) [1] => Array ( [レシピNo.] => 11 [マッチ数] => 1 ) )
PHPは初心者です。よろしくお願いします。
ランダム文字生成+重複チェック
(2009-1-5 14:59:15)
コード用のランダム文字を生成し、以前登録されたデータに重複するコードがあれば再生成する、というPHPを作りたいと思っています。
過去記事を探したところ、http://www.phppro.jp/qa/960にて、ほぼ私がやりたい事と同じ内容が回答されておりました。
2番目に回答されたsignalさんのサンプルコードを使用させていただきました。
「signalさんが書かれたコード」
function make_passwd( $length ) {
$char = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
$list = preg_split( '//', $char, -1, PREG_SPLIT_NO_EMPTY );
$rand = array_rand( $list, $length );
$str = '';
foreach ( $rand as $key ) $str .= $list[$key];
return $str;
}
function get_passwd( $conn, $length = 8 ) {
do {
$passwd = make_passwd( $length );
$result = mysql_query( "SELECT upw FROM tablepw WHERE upw = '$passwd'", $conn );
$count = mysql_num_rows( $result );
} while( $count > 0 );
return $passwd;
}
$conn = mysql_connect( $host, $user, $pw );
mysql_select_db( $db, $conn );
print get_passwd( $conn, 6 );
要らないと思われる部分を削り、以下のコードで動作は確認できました。
(重複チェックしているかは、まだなのですが・・・)
「私が書いたコード」
// DB接続
require_once('db_joint.php');
/* コード生成 */
function make_code($length) {
$rdm_str = md5(uniqid(rand(), true)); // ランダム文字生成
$rdm_str = substr($rdm_str,0,6); // 生成文字を6文字に縮小
$today = date("ymd"); // 現在の年月日
$cp_code = "CP_".$rdm_str.$today; // コード生成
return $cp_code; // 生成したコードを返す
}
/* 生成コードの重複チェック */
function get_code($length) {
do {
$cp_code = make_code($length);
$result = mysql_query("SELECT code FROM code_table WHERE code = '$cp_code'");
$count = mysql_num_rows($result);
}
while($count > 0);
return $cp_code;
}
// 生成コード表示
print get_code();
上記に書いたPHPコードで、文法的には間違っていないでしょうか?
また文法以外にも、何か間違っているなどありましたら、教えていただきたいです。
(コード自体理解しきれていないので、signalさんが書かれたコードを1行ずつ解説していただけると嬉しいです)
よろしくお願いいたします。
データベースの表示方法について
(2009-1-5 14:34:01)
mySQLデータベースにphpで接続し、一覧表示をさせるときに、基本、縦に一覧が表示されますが
例えば横にも5列表示させる方法は有りますでしょうか?
写真とコメントのデータベースを表示させるのに、例えば横に5列、縦に5列の25個を表示して、それ以上の場合はページングでページを変えたいと思っています。
<table>
<tr>
<td rowspan=2>
<?php echo $row [ " data1 " ] ; ?>
</td>
<td>
<?php echo $row [ " data2 " ] ; ?>
</td>
</tr>
<tr>
<td>
<?php echo $row [ " data3 " ] ; ?>
</td>
</tr>
</table>
例えば上記の場合、テーブルの形のまま、データが有るだけ下に表示されてしまいます。このテーブルの形を活かして横にも5列例えば表示させる様にするにはどのようにしたら良いのでしょう?
ご教授下さい。※テーブルやテーブルの形は例えです。
チェックボックスの判別について教えてください。
(2009-1-5 2:03:22)
以下のようなソースでチェックボックスを表示させ$strに何を選んだのかまではできています。
<input type="checkbox" name="flag[]" value="1" />aaa
<input type="checkbox" name="flag[]" value="2" />bbb
<input type="checkbox" name="flag[]" value="3" />ccc
foreach ($_POST['flag'] as $val) {
$str[] = $val;
}
例えば1と3を選んだ場合
$str[0] => 1
$str[1] => 3
となるのですがチェックしていない場合は常に0を配列に返し上記の例と同様に1と3を
選んだ場合以下のような配列で返すにはどうすればいいのでしょうか?
$str[0] => 1
$str[1] => 0
$str[2] => 3
セレクトボックスであればvalueに0を入れれば済むので問題ないのですがチェックボックスの
場合どうやっていいものか全くわからず悩んでおります。
pear DBを使ってテーブルをトランケート
(2009-1-4 21:32:54)
タイトルの通りなのですが、pearのDBを使ってテーブルをトランケートしたいと思っているのですが、そもそも可能なのでしょうか?
検索してもうまくヒットしなかったので・・・
imagickやpear-file_archiveからの書き込みで文字化け
(2009-1-3 12:49:15)
タイトルの通りなのですが、imagickから$image->writeimage(~やfile_archiveからFile_Archive::extract(~で書き込まれるファイル名が日本語の場合文字化けしてしまっています。
サーバのosはFreeBSDです。
文字コードの問題だとは思うのですが、imagickやpearからの出力時に文字コードを指定する方法がみつかりませんorz
もしご存じの方がいらっしゃいましたらご教授お願いいたします。
smarty ループ処理 多次元の場合
(2009-1-2 3:36:36)
こんにちは、
smartyのループ処理に関しまして
$conectdata配列の内になる、userid,userpassの値を
表に表示しようとしているのですが
多次元構成の場合、loop処理機能で表示させる方法はありますでしょうか。
$conectdata配列中身---------------------
Array ( [0] => OK
[1] => Array ( [userid] => testuser [userpass] => testpass )
[2] => Array ( [userid] => 1testuser [userpass] => testpass ) )
テンプレート-------------
<table border="3">
<tr>
<td>a</td>
<td>b</td>
<td>c</td>
</tr>
{section name=cnt loop=$data1}
<tr>
<td>{$data1[cnt][userid]}</td>
<td>{$data1[cnt][userpass]}</td>
<td>{$data1[cnt][userid]}</td>
</tr>
{/section}
</table>
PHP-------------------
$smarty->assign( 'data1' , $conectdata);
MySQLとQuickForm
(2009-1-1 10:29:45)
MySQLにフォームデータを格納し、スクリプトにアクセスされた際、そのデータを呼び出し、QuickFormでフォームを構成しています。
その際、 foreachで addelement や addRule を適用しているのですが、 addRuleが上手く機能しません。
foreach($res as $value)
{
$f->addelement($value['1'].......);
$f->addRule(.....);
}
表示の際、入力必須の * はcheckbox項目以外は問題なく表示されるのですが、checkboxだけ、 * が表示されません。
また、addRuleを適用しているはずなのに、全て空白でsubmitを押しても問題なく処理されてしまいます。(本当はエラーをはき出さなければならないのですが)
尚、
$f->addElement(....);
$->addRule(....)
... のように一つ一つ表記すれば問題なく処理されますので、QuickFormの問題ではありません。
どうぞよろしくお願いします。
MYSQL INSERT文のテーブルで変数を使いたいです。
(2008-12-31 11:19:55)
以下のように INSERT文のテーブル選択部分で変数を利用したいのですがそのまま変数を入れてもエラーがおきてしまいます。
また、SELECT文でも同様にテーブル選択で変数を利用したいのですがうまくいきません;;
ご指導お願い致します><
/*****データベースへ挿入*****/
mysql_query("INSERT INTO thread_$thread_name(write_time, ip_addres, host, shead_title, item1, item2, item3, item4, item5, item6, item7, item8, item9, item10)VALUES(now(), '$ip_addres', '$host', '$shread_title', '$item1', '$item2', '$item3', '$item4', '$item5', '$item6', '$item7', '$item8', '$item9', '$item10')");
$re = mysql_query("SELECT * FROM thread_$thread_name");
$kekka = mysql_fetch_array($re);
php5でのDB接続
(2008-12-31 5:52:14)
こんにちは、
PHP勉強中のものなのですが、
php5,smartyそれぞれ少し使えるようになったので、
DB接続をやってみようと試しているところで、
何かサンプルが無いかネットで調べていましたら、
(PHP5、MYSQL環境)
php5の場合、pear?、SQLite?というDB接続用のライブラリ?が
あるようなのですが、
どちらをメインに使用すればよいものなのでしょうか?
テーブルをまたぐ条件検索
(2008-12-30 19:17:56)
mysqlに登録しているデータを参照し条件検索を試みています。
テーブルAとテーブルBがあるとして2つのテーブルからの条件検索というのは可能でしょうか?
抜粋となりますが具体的にテーブルAには
id,name
1,名前1
2,名前2
3,名前3
(商品id,商品名)
テーブルBには
id,products_id,code,price
1,1,aaa,100
2,2,bbb,200
3,3,ccc,300
(id,テーブルAと同様の商品id,商品コード,価格)
となっております。
単純にテーブルAのみのデータ検索であればシンプルで大丈夫かと思うのですが・・・
例えば検索フォームの商品名に『名前』といれればlike検索で3件ヒットしますよね?
同時にフォームの商品コードの箇所に『aaa』といれれば商品名が『名前』で商品コードが『aaa』
なので1件のヒットとなるかと思うのですがこれはどうやって実現できるものでしょうか?
実際にテーブルのカラムとフォームは多数あり検索条件に価格の下限~上限の検索も入れたいと
思っており仕組みを考えてみましたが初めてのもので難しく考えてしまっているものか構造が具体化
できずにいる状態です。宜しくお願い致します。
mysqlのprimary keyで半角数値5桁を指定したい
(2008-12-29 23:00:22)
いつも勉強させていただいております。samoraiと申します。
mysqlにて、テーブル作成の際に、
primary keyを自動連番で付加させたいのですが、
1を00001としてDBに登録させる事は可能なのでしょうか?
それともこういう処理はphp側で行う事なのでしょうか?
検索したのですが、mysqlでの処理で1を00001にして自動保存するような記事が見つかりませんでした。
どなたか知っていましたらご教授お願い致します。
フォーム内容が誤っていた時の処理
(2008-12-29 1:16:23)
入力フォームからPOST送信によって○○.phpへ送信してフォームデータのチェックを行い、間違い等があった場合、入力フォームへ強制的に戻す方法が分からずこまっております。
何か便利な方法はありませんでしょうか?
お願いいたします。
CSVに書き出すと空行ができてしまいます・・・
(2008-12-28 21:03:57)
こんばんは初級です。
CSVデータをPHPでMySQLにインポートし、その後必要データを抽出して
今度はCSVに書き出していますが、1行ごとに空行ができてしまいます。
PHPの入力フォームやMySQLに直接書き込んだ場合のデータでは
空行はできません。
どうもインポート時か、CSVの作り方(?)に問題があるような気がするのですが、
原因がつかめず投稿しました。
書き出したCSVの状態
1行目,・・・
,
2行目,・・・
,
3行目,・・・
CSVインポートスクリプト
$inif2 = "CSV.csv";
$fp = fopen("$inif2", "r");
while(!feof($fp)){
$buf = fgets($fp, 2048);
list($f1,$f2,$f3,$f4) = preg_split("/,/", $buf);
$sql = "INSERT INTO $iar_event (euid, evid, epartic, eday) VALUES('$f1', '$f2', '$f3', '$f4')";
mysql_query($sql) or die("登録できませんでした。");
echo "管理者登録しました。";
}
fclose($fp);
ちなみに、エクスポートはこんな感じです。
while ($col = mysql_fetch_array($res, MYSQL_ASSOC)) {
print $col["no"] . ",";
print mb_convert_encoding($col["name1"], "SJIS", "UTF-8") . ",";
print mb_convert_encoding($col["com"], "SJIS", "UTF-8") . ",";
print mb_convert_encoding($col["apply"], "SJIS", "UTF-8") . ",";
print "\r\n";
}
インポートするCSVデータは、カンマ区切りです。
原因に心当たりがあるようでしたら、教えていただけないでしょうか?
宜しくお願いいたします。
ドロップダウンリストからアドレスを選択し送信したい
(2008-12-27 20:24:47)
こんにちは。今、PHPでドロップダウンリストに3つのメールアドレスの設定はできました。そこでこの中から一つのアドレスを選択し、送信したいのですがどのような方法をとればいいのか皆目検討がつきません。ご教授願います。
<select name="company" type="popup">
<option>
<option value="hoge@hoge.com" >hoeg株式会社
<option value="hoge@hoge.tv" >株式会社hogeTV
<option value="info@hoge.jp" >株式会社hoeg.JP</select>
tpl
(2008-12-27 18:14:27)
こんにちは、
PHPを勉強中にtplファイルを使用しているのですが、
tplファイルを自分で作成したいときに、
何か製作に便利なソフトなどありますでしょうか?
FORMで勝手に改行?
(2008-12-26 9:07:32)
メールフォームを作成してFCK Editorをあてて、デコメールがかけるようにしています。
フォームで記述 -> MySQLにinsert -> cronで配信
という流れで処理しています。(言語はもちろんphp
<font color=#DDDDDD size=4>ああああ</font>
とエディタで書いたものが(前後もありますが例なので省略)、DBに入れ込むと
<font color=#DDDDDD
size=4>ああああ</font>
のようになっていて、色が記述したものとは違うものが反映されたりします。
コレはformの仕様でしょうか・・・?
回避方法があれば教えていただければと思います。
よろしくおねがいします。
HTMLからphpファイルにsubmitするとアクセスが拒否される
(2008-12-26 1:52:21)
auのezwebではHTMLからphpファイルをsubmitで呼び出すと
なぜかアクセス拒否される。
DocomoとSoftbankは問題ありませんがauだけだめです。
phpファイルのurlを直入力するとphpも動作し結果も表示
されます。なぜかHTMLからsubmitするとNGです。
auは何か特殊なのでしょうか?ご存知の方ヘルプ願います。
execution time : 0.220 sec
