くだすれPHP(超初心者用)3
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2007/10/25(木) 16:04:31ID:???もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
PHP使いが優しくコメントを返しますが、
お礼はPHPの布教と初心者の救済をお願いします。
PHP Home Page
http://www.php.net/
http://jp.php.net/
---前スレのテンプレここまで---
前スレ: くだすれPHP(超初心者用)2
http://pc11.2ch.net/test/read.cgi/php/1164617202/
適当に関連スレ(マルチはだめぽ)
【PHP】下らねぇ質問はここに書き込みやがれ 57
http://pc11.2ch.net/test/read.cgi/php/1193062236/
△▲ WebProg 初心者の質問 Part16 ▼▽
http://pc11.2ch.net/test/read.cgi/php/1187729623/
完走したら、雑談スレで待機でどうでしょう
【総合】 Webprog板質問雑談スレッド 1
http://pc11.2ch.net/test/read.cgi/php/1131016915/
0713nobodyさん
2008/04/25(金) 10:37:24ID:???こういうことじゃね?
$ip = gethostbynamel($address);
$string = '<a href="http://'. $ip .'">'. $ip .'</a>';
$chars = preg_split('//', $string, -1, PREG_SPLIT_NO_EMPTY);
foreach($chars as $char) {
$result[] = $char;
}
echo implode('', $result);
0714nobodyさん
2008/04/25(金) 12:02:35ID:???0715nobodyさん
2008/04/25(金) 12:11:17ID:???0718nobodyさん
2008/04/25(金) 12:29:05ID:???$time=10:00;
この$timeを午前か午後か(am,pm)判別する関数はありますでしょうか?
0720nobodyさん
2008/04/25(金) 12:38:17ID:???0721nobodyさん
2008/04/25(金) 12:46:38ID:???<?php
$time = '10:00';
echo ampm($time);
function ampm($ntime){
if($ntime >= '12:00'){
return 'PM';
}else{
return 'AM';
}
}
?>
0724nobodyさん
2008/04/25(金) 14:41:01ID:???echo date('A', strtotime('10:00'));
0725nobodyさん
2008/04/26(土) 00:22:55ID:???defineしていない定数が使われた場合、
配列の値が入っていないインデックスを参照した場合に、
教えてくれるようにしたいです。
ググってerror_reportingはE_ALLのみにしたんですが、
それではダメでした。
0726nobodyさん
2008/04/26(土) 03:39:59ID:???0727nobodyさん
2008/04/26(土) 14:02:37ID:???ttp://search.net-newbie.com/php/function.gethostbynamel.html
>array gethostbynamel ( string hostname )
>hostnameで指定したインターネットホストを 検索して得られた IP アドレスのリストを返します。 もし hostname が解決できなかった場合は FALSE を返します。
このl(ist)ってのは配列ではないんですかね。。
>>710
>>1
自分でもよくわからないんです^^;
>>711
ありがとうございます!
なるほどforeachはこう使うんですね!
>>713
ありがとうございます!
preg
implode
がわからないので調べてきます!
0728nobodyさん
2008/04/26(土) 14:36:37ID:???ここは質問スレだが分からないことを開き直る勘違い野郎ならお断りだ。
0730nobodyさん
2008/04/26(土) 17:09:26ID:???> string gethostbyname ( string hostname )
> array gethostbynamel ( string hostname )
関数名の l は list の略だから戻ってくるのは配列っすよね、じゃなくて
array (または FALSE) を返しますよと書かれてるから、戻り値が配列。
こんな感じにしたいのかな。
<?php
$hosts = array('yahoo.com', 'google.com', 'example.com');
echo "<dl>\n";
foreach ($hosts as $host) {
$ip_list = gethostbynamel($host);
echo "<dt>$host</dt>\n";
if ($ip_list) {
foreach ($ip_list as $ip) {
echo "<dd><a href=\"http://$ip/\">$ip</a></dd>\n";
}
} else {
echo "<dd>unresolved.</dd>\n";
}
}
echo "</dl>\n";
?>
0731nobodyさん
2008/04/26(土) 17:35:07ID:???すみません><
>>730
ああようやく理解することができました><
どうもありがとうございます。
foreachで配列の中身をすべてぶちまける
ということがやりたかったんです。
$ip0 = $ip_list[0];
$ip1 = $ip_list[1];
みたいなことなんですね、asって。
お世話になりました><
0732nobodyさん
2008/04/26(土) 18:19:33ID:???純粋な質問なんだが,マニュアルのforeachのページ見ないのは何故だったの?存在しらなかった?難しくて理解できなかった?
0733nobodyさん
2008/04/26(土) 18:47:40ID:???0735nobodyさん
2008/04/27(日) 05:40:25ID:???0736nobodyさん
2008/04/27(日) 06:13:37ID:???$time = '9:00';
とかで試せばわかると思うけど何も切り捨てられてないよ。
というか、文字列。
0737nobodyさん
2008/04/27(日) 19:33:14ID:???http://loglog.jp/~php/tt/tt4.php
のサイトに書かれている
>次に書き込むのですが、fgetsで読み込んだ時にポインタが動いてファイルの最後に行っているので、ポインタを先頭に引き戻してから、書き込みます。
>ポインタを戻すのはfseek() 書き込みはfputs()です。追記:rewind($fp)の方がいいかも...
>
>fseek($fp, 0);
>fputs($fp, $count);
のポインタを先頭に戻すという意味がわかりません。
ためしに削ってみると、カウンターが凄い勢いで増えていくので重要な機能なのは分かるのですが・・・
0738nobodyさん
2008/04/27(日) 21:18:36ID:???0739nobodyさん
2008/04/27(日) 21:19:26ID:???レコードの針とかCDの走査点みたいのを想像すればいい。
凄い勢いで増えていくってのは、1→12→123→1234みたいな感じ?カオスだなw
0740nobodyさん
2008/04/27(日) 22:15:43ID:???ポインタですか
勉強になりました。ありがとうございました
>>739
そうなんです。
カオスです
0741nobodyさん
2008/04/28(月) 05:14:49ID:???増え方見てりゃなんとなく分かりそうなもんだけどな
0744nobodyさん
2008/04/28(月) 16:46:43ID:???「ID、値段」の並んだデータファイルから
$ar[$id] = $price;
でどんどん取り込んでいって、
if ($ar[$data] == "") {
echo "$dataは存在しません。\n";
どうのこうの
}
って常用してる…
0745nobodyさん
2008/04/28(月) 17:04:27ID:???csvファイルの5行目から20行目までを取得するにはどうすればよいのでしょうか?
$test = fopen("hoge.csv","r");
for($i=5;$i<20;$i++){
$row = $test[$i];
}
この方法ではうまくいかないです・・・
0746nobodyさん
2008/04/28(月) 17:20:40ID:???残らないのでは?
0747nobodyさん
2008/04/28(月) 17:42:10ID:???こっち使うとか。
http://www.php.net/manual/ja/function.file.php
fopen() は例で言えば $test とファイルを結びつけて、これから読み書きしたり
ファイルポインタを進めたり戻したりする操作を可能にする「準備」の担当さん。
0748nobodyさん
2008/04/28(月) 17:56:15ID:???ご返答ありがとうございます
$test = file("hoge.csv");
for($i=5;$i<20;$i++){
$row = $test[$i];
}
これではうまく行きませんでした
for文で行数を指定するやり方は間違っているのでしょうか?
0749nobodyさん
2008/04/28(月) 18:04:09ID:???>>746の意味をよく考えて、せめて
$row .= $test[$i];
にしてみるとか、もう少し考えてもいいと思うんですよ。
$row を各行=要素な配列として扱いたいのならまた別になるけど。
0750nobodyさん
2008/04/30(水) 11:54:01ID:???フォームから入力された月が一致するものを"可能"から"予約済み"に
上書きするスクリプトです。
$file = fopen("test.csv","r");
$file_bak = fopen("test.csv","w");
while ($data = fgetcsv($file,1024,",")) {
if($data[0]==$mon){
$data[1]="予約済み";
$rowc = implode(",", $data);
fputs ($file_bak, $rowc . "\n");
}
}
fclose($file_bak);
fclose($file);
フォームから入力するとデータがまっさら(0バイト)になってしまいます。
0751nobodyさん
2008/04/30(水) 11:59:58ID:???0752nobodyさん
2008/04/30(水) 12:03:22ID:???$mon=$_POST['mon'];
を、書き忘れてました。
データが書き込まれる(fputsが動いてる)ということはif文は正常に動作してると思います。
0753nobodyさん
2008/04/30(水) 12:57:48ID:???0754nobodyさん
2008/04/30(水) 13:12:18ID:???ご返答ありがとうございます。
fopenをfopen("test.csv","r+");という形で一つにしたらうまく行きました。
$file = fopen("test.csv","r+");
while ($data = fgetcsv($file,1024,",")) {
if($data[0]==$mon){
$data[1]="予約済み";
$rowc = implode(",", $data);
flock($file, LOCK_EX);
fputs ($file, $rowc);
}
}
fclose($file);
動作確認したところ、目的の行の、次の行が更新されてました・・・。
ファイルポインタを1行、後ろに戻すと考えていますが、考え方としては正しいのでしょうか?
0755nobodyさん
2008/04/30(水) 15:40:48ID:???シンプルにしたほうがいいんじゃないの?
一気にぜんぶ読み込んで、条件が合ったら変更。
最後に、変更が有ったなら書き出し。
あるいは、1行読んで、条件が合ったら変更。
その行を別ファイルに書き込んでいって、
最後に、変更が有ったなら旧ファイルを消して別ファイルを旧ファイルに
リネーム。
0757nobodyさん
2008/05/02(金) 14:05:14ID:G+oxjRCpBサーバで実行後に結果が返ってくるんでしょうか?
それともソースを展開するだけで実行するのはAサーバになるんでしょうか?
よろしくお願いします。
0758nobodyさん
2008/05/02(金) 14:24:41ID:IeUeB81Ghttp://www.php.net/manual/ja/function.include.php
"URL fopenラッパー"が 有効になっている場合(デフォルト設定では有効です)、
ローカルなパス名 の代わりにURL(HTTP経由)を用いて読み込むファイルを指定することが可能です。
URLで指定されたサーバがファイルをPHPコードとして解釈することが 出来る場合には、
HTTP GETを使用してURLリクエストに引数を指定することが 出来ます。
これはファイルの読み込み云々やスコープの継承とは関係なく、
ただ単純にスクリプトがリモートのサーバで実行されて結果がローカルの スクリプトに読み込まれる、というだけのことです。
0759nobodyさん
2008/05/02(金) 14:24:58ID:???0760nobodyさん
2008/05/02(金) 14:30:01ID:???書いてありましたねorz
申し訳ないです。
無性に気になってしまった…。
0761nobodyさん
2008/05/03(土) 18:24:53ID:???各種タグの数はどうやって数えたら良いのでしょうか?
0762nobodyさん
2008/05/03(土) 18:30:59ID:???よくわからないかもしれない
http://www3.uploader.jp/user/bl_radio/images/bl_radio_uljp00028.png
0763nobodyさん
2008/05/03(土) 18:54:43ID:???スペース区切りで入力されたキーワードの数を数える方法が分からないということ?
0764nobodyさん
2008/05/03(土) 19:11:05ID:???0766nobodyさん
2008/05/03(土) 19:45:56ID:???------+-----+-----+-----+
1| 果物| 豚肉| |
2| 牛肉| 野菜| 果物|
3| 果物| 豚肉| |
4| 鶏肉| 果物| 野菜|
5| 野菜| | |
------+-----+-----+-----+
こういうテーブルから
果物(4),野菜(3),豚肉(2),牛肉(1),鶏肉(1)
とか出力したいの・・・か?
0767nobodyさん
2008/05/04(日) 12:06:34ID:???テーブルに全部のキーワードをぶっこんで
あとはgroup byとcountで。
とりあえずママに絵の描き方を教えてもらいなさい
0768nobodyさん
2008/05/04(日) 22:00:27ID:kQgheGJFxamppでpear_infoをインストール後、
<?php
require_once('PEAR\Info.php');
$pearinfo = new PEAR_Info('c:\xampp\php');
$pearinfo->show();
?>
を実行すると以下のエラーが出てしまいます。
Fatal error: Call to undefined method PEAR_Error::getRegistry() in
C:\xampp\php\PEAR\PEAR\Info.php on line 277
ちなみに277行目は
$this->reg = &$this->config->getRegistry();です。
ググっても前例が見当たりませんでした。
0769nobodyさん
2008/05/04(日) 22:02:53ID:???0770nobodyさん
2008/05/04(日) 22:30:26ID:kQgheGJFpear_infoは最新の1.8.0(stable)でpear listでも正しく表示されています。
0771nobodyさん
2008/05/04(日) 22:39:55ID:???0772nobodyさん
2008/05/09(金) 22:48:31ID:???cent os 5
php 5.2.4
1,なんとか,かんとか,ぬんとか
2,なんとか2,かんとか2,ぬんとか2
のようなcsv的な形式のファイルの編集をHTMLのフォーム上から実現するにはどのような考え方でやればいいのでしょうか?
fgetsで指定行を読み込んで目的のカラムを編集することはできるけど,元のデータの消し方が見つかりません。
知ってる方,よろしくお願いします。
0773nobodyさん
2008/05/09(金) 23:01:53ID:???0774nobodyさん
2008/05/09(金) 23:05:34ID:???0775nobodyさん
2008/05/10(土) 01:18:48ID:???の混合ってできないの?
0776nobodyさん
2008/05/14(水) 17:30:23ID:???ページ1で
session_start();
$_SESSION['a']="test";
と入れ、
FORM ACTION先のページ2で
echo $_SESSION['a'];
と書いてみたのですが空になっています。
書き方がまずいのでしょうか。
それとも何か特別な設定をしなければいけないのでしょうか。
PHPのバージョンは5.1.6で、
session.use_cookiesはon
session.use_trans_sidは1にしています。
0779nobodyさん
2008/05/14(水) 19:11:39ID:Uo6TtfOsHTMLテンプレートを使って出力させているのですが、
*.html
{$imgsize[0]}x{$imgsize[1]}
のように書くと何も出力されないため、下のように書いて出力しています
*.php:
$imgsize = getimagesize($img);
$wsize = $imgsize[0];
$hsize = $imgsize[1];
*.html
画像サイズ: {$wsize} × {$hsize}
※実際の書式はもう少し長いですがこんな感じです
もう少し変数や出力をまとめられそうorスマートに出来そうでしょうか?
0780nobodyさん
2008/05/14(水) 19:32:10ID:???0781nobodyさん
2008/05/15(木) 18:03:18ID:???--------------------
○○さんのマイページ←リンク
--------------------
のようにリンクタグでフォームタグのように値を持てるようにしているものがありますが、
どういう風にしているのでしょうか。
フォームを使うと
--------------------
<input type="radio" name="choice" value="A">A
<input type="radio" name="choice" value="B">B
<input type="radio" name="choice" value="C">C
--------------------
のようになるんですが、
これをハイパーリンクを使い
--------------------
A←リンク(押すと変数にAと入る)
B←リンク
C←リンク
--------------------
の形にしたいと考えています。
0782nobodyさん
2008/05/15(木) 18:24:53ID:???すいません、getを使ってみます!
0783nobodyさん
2008/05/15(木) 18:31:14ID:???0784779
2008/05/15(木) 18:33:37ID:19IoKDUwlistの使いどころを実体験できて勉強になりました
お礼が遅くなってしまいましたが、教えていただきましてありがとうございました
0785nobodyさん
2008/05/16(金) 11:28:21ID:???PC画面内のボタンが定期的(2時間おき)に赤く光り(音付き)、それが10分以内にクリックされなければ指定したアドレスにメールで連絡がいくアプリを作成したいんですがPHPでつくれますか?
他に付けたい機能はPHPでできそうなのでできればPHPで一緒にしたいのですが
0786nobodyさん
2008/05/16(金) 11:33:44ID:???0787nobodyさん
2008/05/16(金) 12:01:11ID:tHyaUJSJまずは、2byte codeの文中の括弧は2byte codeで揃えてくれんか?
話はそれからだ
0788nobodyさん
2008/05/16(金) 12:10:33ID:???>プログラミング全くど素人です。
こういう書き方は嫌われるからやめるべきだ
0789785
2008/05/16(金) 12:14:05ID:???他所で質問して分かったからもういいですw
0790785
2008/05/16(金) 12:16:27ID:pBMB8YRN0792nobodyさん
2008/05/16(金) 13:51:37ID:???作ったらそのスクリプト参考にさせてください
0794nobodyさん
2008/05/16(金) 15:07:02ID:9KFEZNBm0795nobodyさん
2008/05/16(金) 15:36:43ID:OAE01NnQstr_replaceで文字の置き換えをしたいのです。
置き換える要素にはそれぞれ配列を使います。
その配列の中身はMySQLから値を格納しています。
しかしまったく置き換えしてくれません。
配列を $arr = array('要素1','要素2','要素3'); として作成すればちゃんと置き換えしてくれます。
MySQLから配列への値の格納はちゃんと出来ています。
置き換え用の文字は沢山あるので出来ればMySQLからデータを取得したいです。
0796nobodyさん
2008/05/16(金) 15:37:59ID:???0797nobodyさん
2008/05/16(金) 15:39:09ID:???0798nobodyさん
2008/05/16(金) 16:00:05ID:???0799795
2008/05/16(金) 16:37:58ID:???配列にデータを格納したあとで、function内で置き換え作業をしていたのですが、
せっかく作った配列を渡していなかったのでできなかっただけでした。
お騒がせしましたorz
0800nobodyさん
2008/05/16(金) 17:33:20ID:???\(.\ ノ
0801nobodyさん
2008/05/16(金) 23:41:19ID:???@
↑これってなんですか。
0804nobodyさん
2008/05/17(土) 09:13:11ID:???ifの条件文の中にforやwhileを入れられますか?
ifの条件文が多くて繰り返し処理にしたいのですが
このように書いてもエラーになります。
if(
for($i = 0; $i < 101; $i++){
if($i !==100){
($form[$i]!=="")or
}
else{
($form[$i]!=="")}
}
)
{
実行したい文
}
0805nobodyさん
2008/05/17(土) 09:44:35ID:???したいことを日本語で書いてくれ
0806nobodyさん
2008/05/17(土) 10:05:21ID:???forループで「条件」を変化させる
しかし、ifが判定を行なう前にforループが完了してしまうので意味なし
エラーは、例の中の or の後が空だから出るんでないの?
0808nobodyさん
2008/05/17(土) 10:39:34ID:???すいません。
$form[0]から$form[100]のどれかに何かしらの値が入っていれば実行させたいのです。
現状はこんな感じです。
if(($form[0]="")or($form[1]="")or($form[2]="")or...........($form[100]=""))
{
実行文
}
>806
ご回答ありがとうございます。
やりたいことはその通りです。
>807
ありがとうございます。
その方法でやってみます。
0809nobodyさん
2008/05/17(土) 10:45:13ID:???if文の前にループで処理しとけばいいんじゃないの?
$temp = "";
for(略) $temp .= $form[$i];
if ($temp != "") jikko();
0810nobodyさん
2008/05/17(土) 10:50:35ID:???if($form[i] !=""){
実行文
break;
}
}
0811nobodyさん
2008/05/17(土) 12:38:01ID:???forの中にifで期待通り実行されました。
本当にどうもありがとうございます。
0812nobodyさん
2008/05/17(土) 16:01:13ID:IP8xZiGoアッー!
■ このスレッドは過去ログ倉庫に格納されています