【PHP】下らねぇ質問はID出して書き込みやがれ 89 at PHP
[2ch|▼Menu]
[前50を表示]
550:nobodyさん
09/10/24 00:40:41 BvPjRTUm
new SQLiteDatabaseで作られたコンストラクタで
データベースをcloseするにはどうしたらいいですか?

551:nobodyさん
09/10/24 00:51:30
$db->close();

552:nobodyさん
09/10/24 00:54:41 BvPjRTUm
Fatal error: Call to undefined method SQLiteDatabase::close()

553:nobodyさん
09/10/24 04:14:41
そのクラスに閉じるメソッドが使われていなくて
コンストラクトでオープンするようになっている場合
デスクトラクト時にそのクラス側で勝手に終了してくれてると考えるきでは?

554:nobodyさん
09/10/24 04:18:45
なんか日本語が変だった・・・

そのクラスに閉じるメソッドが定義されていなくて
コンストラクターでオープンするようになっている場合
デスクトラクターで勝手に閉じてくれていると考えるべきでは?

実際にそのクラスの中身はみてないしどういうのもしらないが

555:nobodyさん
09/10/24 04:28:53
何言ってんの?

556:nobodyさん
09/10/24 04:43:06
分からないなら無理してレスしなくていいよ
教えてほしいならどこがどうわからないのかID出して質問してね

557:nobodyさん
09/10/24 05:22:59
>>555
554で言ったとおりどういうクラスかもしらないし中身もしらないけど(というよりSQLite使ったことない)

class SQLiteDatabase {

 private DB接続ポインタ;

 function __construct(接続情報) {
  $this->DB接続ポインタ = sqliteオープン(接続情報);;
 }

 function query($sql) {
  return 結果を配列で返す($sql);
 }

 function __destruct() {
  sqliteクローズ($this->DB接続ポインタ);
  //$this->DB接続ポインタ = null;
 }
}

$obj = new SQLiteDatabase(接続情報);
$res = $obj->query("SELECT * FROM hoge WHERE 1");
foreach ($res as $row) {
 echo $row."<br>";
}
//ここでデストラクターが呼ばれて勝手に終了する

たぶんこんな構造になってるんじゃないかと(間違ってるかもしれないけど)
SQLite自体明示的に終了させる必要がないDBかもしれないしその辺の事情は知らない

558:nobodyさん
09/10/24 05:24:18
下らんコード書く暇あったら確認しろよ

559:nobodyさん
09/10/24 05:28:37
>>558
そんなクラス見つからなかったんだけどなぁ
探し方が悪かったんだろうか
よかったらリンクはってちょうだい

560:nobodyさん
09/10/24 07:37:49
そしてリンクをはらない>>558であった

561:nobodyさん
09/10/24 08:20:12
>//ここでデストラクターが呼ばれて勝手に終了する
$objがスコープ内にいるのにデストラクタが呼ばれちゃまずいだろ。

562:nobodyさん
09/10/24 08:25:17
>>561
<?php
class Hoge {
function Hoge() {
echo "construct<br>\n";
}
function a() {
return array("a", "b", "c");
}
function __destruct() {
echo "destruct<br>\n";
}
}

$obj = new Hoge;
foreach ($obj->a() as $value) {
echo $value."<br>\n";
}
?>

563:nobodyさん
09/10/24 08:44:46
ほんとこのスレ初心者ばっかだなw

564:nobodyさん
09/10/24 09:21:19
URLリンク(www.php.net)

しかし相変わらずだな。

565:nobodyさん
09/10/24 09:29:15
URLリンク(www.php.net)

これ見方がわからないんだけど
SQLiteDatabase
SQLiteResult
SQLiteUnbuffered
に定義されてる各メソッドはそのクラスのみで使えて
目次のとこに書かれてるのは共通に使えるメソッド?

なんか無名関数のせいでマニュアルの見方がむずくなってきてる気がする・・・

566:nobodyさん
09/10/24 09:34:01
マルチパラダイムだから仕方ないがこれはひどい
明確に分ければいいのに

567:nobodyさん
09/10/24 09:49:09 o7jv7fS8
PHP、PEAR、Smartyはだいたい理解できました
しかし、実際HTMLなどのクライアントサイド側との連携がいまいち良く分かりません
本やちょっとしたPHP解説のサイトなどはメソッドとかプロパティなどの説明で終わっているもので

フォームなどの基本的な事は何処にでも書いてあるので分かるのですが、実践的なPHPとクライアントサイドとの連携したコードなど
書いてある書籍など自分の県では見つけられませんでした
実際にサイトを作る為のクライアント+サーバサイドを連携させたサンプルコードの載っているサイトや書籍は何かないでしょうか?
宜しくお願い致します

568:nobodyさん
09/10/24 09:50:26
Ajaxのことだろ
Ajaxスレいってください

569:nobodyさん
09/10/24 09:55:04
jquery

570:nobodyさん
09/10/24 10:02:54 o7jv7fS8
えっ?
Ajaxですか?
Ajaxの事ではなく、例えばテンプレートとか実際に実装して作ったサンプルとかです
説明不足だったようです、すみません

例えば、Webデザインブックなどはいくらでも出ていますが、それらはただHTMLとCSSで実装しています
まぁたまにJavaScriptなどもありますが
自分は、人がサイトにアップロードした画像をサイトに情報つきで載せてレイアウトも崩れないようにしたいとか
(つまり$_FILESの概念はわかるけれどそれを実際クライアント側のコードにどのようにテンプレート内に実装・レイアウトしていくか)、
PEARによるログイン認証を行った後でそのログインしたユーザーのみが動的コンテンツを利用するためにはどのようにすればいいのか、
とかまぁ書けば色々と長くなりそうですが、そういう事です
自分側がただ作ったサイトを公開するだけではなく、ユーザーの参加できるようなサイトの作り方を、簡単でもいいので解説しているサイトや書籍が知りたいのです


571:nobodyさん
09/10/24 10:05:27
>>557
おいおいwあんまり>>555をいじめんなよw
そんなの見せても>>555にはチンプンカンプンなんだぜwwwwwwww
今頃顔真っ赤にしてるだろうけど二度と出てこないよww

572:nobodyさん
09/10/24 11:35:30
>>571
そういうのは、実際に必要になった時に調べたり考えたりしてもいいと思う。
PHPで家計簿でも何でもいいんで作ってみれば、分かってくるんじゃないかな。
気力があるなら、人が作成したPHPのプログラムを落としてHTML部分がどうなってるか探してみるのが言いかと

573:nobodyさん
09/10/24 11:39:51
そりゃクライアント+サーバサイドの連携っていったら
JavaScriptとPHPの連携っていってるようなものだからAjaxって答えが返ってくるのも無理もない
MixiやYoutubeのようなSNSサービスをやりたいってことね
セッションとか勉強するといいよ

574:nobodyさん
09/10/24 11:55:49
>>562
閉じタグとファイル終端は、直接関係無い。
タグ閉じただけじゃスコープ閉じないんだぜ。

575:nobodyさん
09/10/24 11:58:58
日本語でおk

576:nobodyさん
09/10/24 12:00:54
でてこいよ>>555wwwwwwwwwwwwwwwGOGOGOwwwwwwwwwwwwwwwwww

577:nobodyさん
09/10/24 12:01:27 o7jv7fS8
>>572
レスアンカーは自分(>>570)にですよね?
そうだと思って返答させて下さい

>人が作成したPHPのプログラムを落としてHTML部分がどうなってるか探してみる

こういうのはWebサイトで検索して、人が書いたサンプルコードを集めて学習しろという事なのでしょうか?
それとも、自分は知らない(というかコードを読み取られると危険なのでそもそも出来ないのではと思うのですが)、ソース読み取りソフトとかあるのでしょうか?
例えばWebサイトであればIEのソース機能やFireFoxのFireBugのようなHTMLのコードを表示出来る様なソフトの事です



>>573
あぁ、すみませんでした
自分の表現がおかしかったようです
HTML+CSSにPHP(テンプレートやライブラリ含む)を組み込んで実装する、実際に運営する為の雛形コードを学習したかったのです


578:nobodyさん
09/10/24 12:05:25
>>570
単にフォームからのリクエストを処理するPHPのコード、ってんなら、
PHPの本で2〜3章かけて解説してるんじゃね?
あとは自分の作りたいものに似てるの探して、コード読むべし。

579:nobodyさん
09/10/24 12:05:29
>HTML+CSSにPHP(テンプレートやライブラリ含む)を組み込んで実装する、
>実際に運営する為の雛形コードを学習したかったのです

フレームワークのview部分とか見てみるといいかもしれない

580:nobodyさん
09/10/24 12:10:51
>>574
aaa<br>
<?php
>>562のコード
?>
bbb<br>

でbbb<br>より後にdestructが現れるってことか?
どっちみちDBクローズならそれでもいいだろ

581:555
09/10/24 12:11:40
すいませんでした
無知を晒してしまいました
ごめんなさい

582:nobodyさん
09/10/24 12:22:14
ちなみにスコープ閉じるってどうやるの?
objにnullいれるだけ?

583:nobodyさん
09/10/24 12:59:43
>>580
その下にまた<?phpが出てくるとか、include/requireされてるとか。

>>582
$objはスコープから外れてないけど、インスタンスは
ガベージコレクションで回収されるから、そのときに
デストラクタが起動されるんだと思う。

PHPで明示的なスコープって言ったら関数かな。
ローカル(グローバルでない)変数のスコープは関数内でしょ。

584:nobodyさん
09/10/24 13:03:20
>>281
いやだからそれは俺が振られた理由になってねえよ
なんで会社の休憩時間にイタリアフルコース頼まないといけないんだよ

585:nobodyさん
09/10/24 13:16:46
フラれたのか、ま、元気だせ、応援してるから。

586:nobodyさん
09/10/24 13:56:20
要らないもんはunsetしちゃおうぜ

587:552
09/10/24 14:16:10 BvPjRTUm
結局クラスを自作して対応しました。
class sqlite{
  var $_result = array();
  var $_pointer = null;
  var $_message = null;
  function connect($dbfile){
    return $this->_pointer = sqlite_open($dbfile,0666,$this->_message);
  }
  function close(){
    sqlite_close($this->_pointer);
  }
  function exec($que){
    return sqlite_exec($this->_pointer,$que,$this->_message);
  }
  function array_query($que){
    return sqlite_array_query($this->_pointer,$que,$this->_message);
  }
  function get_escape($str){
    return sqlite_escape_string($str);
  }
  function get_result(){
    return $this->_result;
  }
  function get_pointer(){
    return $this->$_pointer;
  }
  function get_message(){
    return $this->$_message;
  }
}

588:nobodyさん
09/10/24 14:37:03
>>587
オブジェクト指向スタイル用意されてる意味ねーw

589:nobodyさん
09/10/24 14:57:50
fscanfがおかしいです

590:nobodyさん
09/10/24 18:28:54
なるほどね、凸者さんの判断次第ってことか。
あと、ヤンデレこえぇwww

591:nobodyさん
09/10/24 18:29:35
誤爆

592:nobodyさん
09/10/24 19:04:29
どうしてもnewで作ってclose()したいんだ、という強い意志が感じられます。
若いっていいね。

593:nobodyさん
09/10/24 19:35:19
>どうしてもnewで作ってclose()したいんだ、という強い意志が感じられます。

はずかしいから黙ってて

594:nobodyさん
09/10/24 20:43:07
newで作ったらdeleteを使いたくなるよね。
で、ダミー関数であるdeleteが登録されてるせいで、
delete($classA)とか書いてもしばらく気がつけない

595:nobodyさん
09/10/24 20:45:44
え?

596:nobodyさん
09/10/24 20:47:28
え?

597:nobodyさん
09/10/24 21:14:45
これ何のスレだっけ

598:nobodyさん
09/10/24 21:21:53
質問じゃない時はsageで書きやがれスレ

599:nobodyさん
09/10/24 22:35:42 aM0DiAaq
【OS名】Windows xp
【PHPのバージョン】php5.2.10
【連携ソフトウェア】mysql
【質問内容】
心理テストのようなサイトを作ろうとしています。
何人がその答えを選んだかの集計と、
それとは別に選んだ答えがどのような性格をあらわすのかを表示できるようにしたいです。
チェックボタンを選んだ状態で「あなたはこんな人」のようなラジオボタンで
そのページに遷移させたいです。
どのようにしたらいいのでしょうか?
アバウトな質問でごめんなさい。


600:nobodyさん
09/10/24 22:39:54
>>599
で、何ができないの?PHP?本買え

601:nobodyさん
09/10/24 22:39:57
>>599
そのまんまじゃね?何が問題なんだ?

602:nobodyさん
09/10/24 22:40:40
全部作らせる気かww
最近の若者は安易だなぁ

603:nobodyさん
09/10/24 22:45:01 aM0DiAaq
くだらなすぎてごめんなさい・・・


604:nobodyさん
09/10/24 22:45:53
くだらないというか何が(どこが)できないのかが分からんのだよ

605:nobodyさん
09/10/24 22:50:44 aM0DiAaq
アンケートのページで「投票」を押したらその選んだ結果によって違うページに飛ばしたいです。
例えば赤を選んだら赤色を好きな人の性格について書いてあるページで、
青を選んだら青色が好きな人の性格について書いてあるページです。
アバウトすぎてごめんなさい。


606:nobodyさん
09/10/24 22:51:31 aM0DiAaq
今こんな感じで書いているところです。。

<html>
<head><title>心理テスト</title></head>
<body>
<h1>メンタル編</h1>
<p>あなたがいつか天国へ旅立つとしたら、何色の石をお守りにしたいですか?
<?php
// スクリプト名取得
$script = basename(__FILE__);
// メンバー名配列
$member = array("", "赤いルビー", "ピンクのローズクォーツ", "ゴールド",
"イエロートパーズ", "緑のヒスイ", "青のラピスラズリ", "紫水晶", "白の水晶");

// 投票がある場合
if ($_POST['COLOR'] > 0) {
// 投票者番号
$no = $_POST['COLOR'];
// MySQLに接続
$db = mysql_connect("localhost", "root", "root");
// DB選択
mysql_select_db("graduation", $db);
// insert文実行
mysql_query("insert into ninki values(null, {$no},
now())", $db);
// DB切断
mysql_close($db);
}
?>

607:nobodyさん
09/10/24 22:52:32 aM0DiAaq
<p><font color="red"><?= $msg ?></font></p>
<form method="POST" action="<?= $script ?>">
<p><input type="radio" name="COLOR" value="1">赤いルビー</p>
<p><input type="radio" name="COLOR" value="2">ピンクのローズクォーツ</p>
<p><input type="radio" name="COLOR" value="3">ゴールド</p>
<p><input type="radio" name="COLOR" value="4">イエロートパーズ</p>
<p><input type="radio" name="COLOR" value="5">緑のヒスイ</p>
<p><input type="radio" name="COLOR" value="6">青のラピスラズリ</p>
<p><input type="radio" name="COLOR" value="7">紫水晶</p>
<p><input type="radio" name="COLOR" value="8">白の水晶</p>
<p><input type="submit" value="投票"></p>

</body></html>


こんな感じです。
ごめんなさい。

608:nobodyさん
09/10/24 22:56:06
>>607
switch($COLOR){
case 1
処理&リダイレクト1
break;
case 2
処理&リダイレクト2
break;
case 3
処理&リダイレクト3
break;
.....
}

あとaction="<?php echo $script ?>"はまずくね?
それだったらaction=""で空でいいと思うよ

609:nobodyさん
09/10/24 22:58:11
case 1:

ね":"を忘れずに

610:nobodyさん
09/10/24 23:01:10 aM0DiAaq
>>608
>>609
やってみます
情けない質問に答えてもらってありがとうございます



611:nobodyさん
09/10/24 23:05:20
情けない質問wwww

612:nobodyさん
09/10/24 23:24:44 TvoLhocc
switch内のbreak;のインデントってたまに悩むけどどうしてますか?
俺はcaseからインデントつけて位置に書いてるけど
そうすると最後でインデントが2つ一気になくなってしまう違和感がある
>>608みたいに書くとcase処理内な感じがしない違和感

613:nobodyさん
09/10/24 23:34:28
>>612
その書き込みエスケープされただけだお

  case $a:

 break;

が多いけどおれも結構曖昧だ

614:nobodyさん
09/10/24 23:35:29
逆だ

 case $a:

  break;



615:nobodyさん
09/10/24 23:41:58
switch ($a) {
 case 0:
  do_something();
  break;
 case 1:
  do_something();
  break;
 default:
  do_something();
  break;
}

どの言語の解説でもたいていこうなってるしこれがスタンダードじゃないかね

616:nobodyさん
09/10/24 23:42:52
下らねぇ回答はID出さないでここに書き込みやがれ 90

617:nobodyさん
09/10/25 00:28:25
次スレの季節か

618:nobodyさん
09/10/25 00:56:35
switch文で気になったのでメモ
switch('a'){
 case 'a'; //末尾が ;
}

switch('a'){
 case 'a': //末尾が :
}
は等価


619:nobodyさん
09/10/25 05:29:05 TWuysydg
$test = " 1c 2c 3c!";
$search = "/([^0-9])([0-9])c([^0-9])/";
$replace = "$1c$2$3";
echo preg_replace($search, $replace, $test);

これで、期待する出力は
c1 c2 c3!
実際の出力は
c1 2c c3!

質問は、
・なぜこのような動作になるのでしょうか?
・どうすれば解決できるでしょうか?

後、欲しいアイデアとして
・"1c 2c 3c"のように、先頭にスペースを入れなくても"c1 c2 c3"に変える正規表現を教えてほしい
(ただし"11c"のような形の場合は変化させないでほしい)

620:nobodyさん
09/10/25 05:53:15
explodeで配列にわけて
substrで文字を抜き出したのを結合すえばええ

621:nobodyさん
09/10/25 10:22:02
認定回答者採用試験は今日までですので頑張って回答してください

622:nobodyさん
09/10/25 11:14:26
>>619
$test = "1c 2c 3c!";
$search = "/([^| ][0-9]{1})c/";
$replace = "c$1";


623:nobodyさん
09/10/25 13:01:49
トリもIDも出さずに試験官気取りとな?

624:nobodyさん
09/10/25 13:03:49
>>623
お前鬱病だろ

625:nobodyさん
09/10/25 21:45:40
phpでシングルトンって意味あるの?
リクエスト終わったらメモリ開放されるんでしょ?

626:nobodyさん
09/10/25 22:19:54
2行目は正解。
1リクエストの中だけでも必要なときはあるさ。

627:nobodyさん
09/10/25 22:38:37 Ltpwqrvc
mod_rewriteを使ってクリックカウントをとりたいのですが
以下のようにするとcount.phpにリダイレクトできるのですが、
count.phpからLocationで飛ばすとループしているのか404NotFoundになってしまいます。
どうすれば正常にできますか?

例:www.example.com/img/abc01.jpg をクリックしてcount.phpを介してカウント
www.example.com/img/abc01.jpgのまま表示する

//サーバー側
RewriteEngine on
RewriteRule ^/img/abc([0-9]+).(*)$ /img/count.php?id=$1&extension=$2

//count.php側
header("Location: URLリンク(www.example.com)");

628:nobodyさん
09/10/25 22:42:08
readfile使えばいいと思うよ

629:627
09/10/25 22:54:09 Ltpwqrvc
>>628
やってみましたがだめでした・・・。

630:nobodyさん
09/10/25 23:07:22
count.phpがabc01.jpgを出力するんだぜ。

631:nobodyさん
09/10/25 23:15:10
リライトログ見てみたら?吐いてなかったら吐かせて

632:627
09/10/26 00:20:09 8+sjsIrs
>>630-631
アドバイスありがとうございます。
何とか解決できたみたいです。
/img/を物理ディレクトリ、URL表示部分を新規に/img2/として(抽象ディレクトリ)
リライトしたらできるようになりました。

633:627
09/10/26 00:33:00 8+sjsIrs
>>628
readfileも必要だったみたいです。
ありがとうございました。

634:nobodyさん
09/10/26 05:27:50
質問させてください。

<html>
<body>
<?php include("./hoge.php");?>
</body>
</html>

で閲覧に問題はないのですが、
ソースを見ると

<html>
<body>
<html><body></body></html>
</body>
</html>

と2度使われ重複している状態です。

hoge.phpには<html><body></body></html>などの記述はしておりません。
問題の箇所等ご指摘願います。

635:nobodyさん
09/10/26 05:31:55
hoge.phpの中身書くのがいやなら簡略化したもの書いてくれないと
それだけではなんともいえない

636:nobodyさん
09/10/26 05:40:09
>>635
ありがとうございます。

hoge.phpの中身はモバイル版AdSenseコードのみです。

637:nobodyさん
09/10/26 05:48:48 n4efgg6U
質問です。MagpieRSSを使っています。
日付順に取得記事をソートしたいのですが、うまくいきません。
アドバイスお願いします。

$rssurl = array ();
$rssurl[] = "URLリンク(mainichi.pheedo.jp)";
$rssurl[] = "URLリンク(rss.asahi.com)";

foreach ($rssurl as $pre) {
$url = $pre;
$rss = fetch_rss($url);
$title = $rss->channel['title'];
$title = mb_convert_encoding($title, "shift_jis", "auto");
$url = $rss->channel['link'];
$rss->items = array_slice($rss->items, 0, 1);

foreach ($rss->items as $item ) {
$day = date('n/j',strtotime(substr($item['dc']['date'],0,10)));
$time = date('H:i',strtotime(substr($item['dc']['date'],11,8)));
$date = "$day $time";
$rdf = $item[link];
$article = $item[title];
$article = mb_convert_encoding($article, "shift_jis", "auto");
$linkstr = "$date $rdf $article $url $title<br>\n";
$rssarray["{$date}"] = $linkstr;

krsort($rssarray);
echo "$linkstr";

638:nobodyさん
09/10/26 05:52:16
>>637
$linkstrは全て想定通りになってるの?

639:nobodyさん
09/10/26 05:55:31 n4efgg6U
>>638
はい、順序以外は期待通りの実行結果です。

640:nobodyさん
09/10/26 06:00:30
じゃkrsortの問題ですね
どんな$linkstrを入れるとどのようなソート結果になるか例を出してもらえますか?

ちなみに第二引数にソートフラグを指定して挙動を変えることができる
URLリンク(www.php.net)
今回の場合は全て文字列だから関係ないかもしれないけど

641:nobodyさん
09/10/26 06:09:43 n4efgg6U
RSSの取得を下のようにしたとして
$rssurl[] = "URLリンク(mainichi.pheedo.jp)";
$rssurl[] = "URLリンク(mainichi.jp)";
$rssurl[] = "URLリンク(mainichi.jp)";
$rssurl[] = "URLリンク(mainichi.jp)";

10/26 05:00 ■URL ■人事:法務省(26日) ■URL ■毎日jp-ニュース速報(総合)
10/25 21:00 ■URL ■注目アニメ紹介:「空中 ■URL ■毎日jp-まんたんウェブ
10/25 22:14 ■URL ■the GazettE ■URL ■毎日jp-エンタメ
10/25 23:10 ■URL ■横浜:巨人・尾花コーチ ■URL ■毎日jp-スポーツ
(長いので削ってます)

このような結果が出ます。
日付でソートをかけているつもりですが、まったくされていません。
$rssurl配列の上から順に表示されています。

642:nobodyさん
09/10/26 06:10:21
>>636
echoで文字列を出力してるのか?
それともただアドセンス部分のHTMLだけ書いてるのか?
試してみたがhtml bodyタグが加わることはない
サーバかPHPの設定かもしれないがどの設定項目かはわからんわ
PHP使えるレン鯖が2つ以上あるなら両方で試してみ
ローカルに環境作るのが一番いいけど

643:nobodyさん
09/10/26 06:11:55
>日付でソートをかけているつもり
使う関数まちがってるんじゃね?
krsortって逆順ソートだよ

644:nobodyさん
09/10/26 06:15:55
日付だから逆順であってんでねーの?

645:nobodyさん
09/10/26 06:17:41
いやいや
ただ単にキーを逆順にするソートってこと
ユーザー定義のソートをしたいのならusort()とかじゃないと

646:nobodyさん
09/10/26 06:18:06 n4efgg6U
$rssurl[] = "URLリンク(mainichi.jp)"; //まんたんウェブ
$rssurl[] = "URLリンク(mainichi.jp)"; //エンタメ
$rssurl[] = "URLリンク(mainichi.pheedo.jp)"; //ニュース速報(総合)
$rssurl[] = "URLリンク(mainichi.jp)"; //スポーツ

10/25 21:00 ■URL ■注目アニメ紹 ■URL ■毎日jp-まんたんウェブ
10/25 22:14 ■URL ■the GazettE ■URL ■毎日jp-エンタメ
10/26 05:00 ■URL ■人事:法務省( ■URL ■毎日jp-ニュース速報(総合)
10/25 23:10 ■URL ■横浜:巨人・尾 ■URL ■毎日jp-スポーツ

例がわかりにくかったので書き直しました。

647:645
09/10/26 06:19:49
あ、ごめん。
よくよんでなかったw
>日付でソートをかけているつもりですが、まったくされていません。
ってかいてたからてっきり
データ見る限りだとkrsortでよさそうだね

648:645
09/10/26 06:20:38
とか書いた瞬間にデータの日付ルールが変わった件

649:nobodyさん
09/10/26 06:22:04 n4efgg6U
usortにしたらエラーがでました。
Warning: Wrong parameter count for usort() in C:\WWW\php.php on line 30

>>648
26日が真上だと日付でソートされているように見えたので…
配列順に表示されるだけでソート機能が働いていないというのが今回の悩みです。。。

650:nobodyさん
09/10/26 06:25:26
>usortにしたらエラーがでました。
マニュアルみようぜ
URLリンク(www.php.net)
krsort($rssarray);を
usort($rssarray);にかえただけじゃだめ
第2引数入れないと

651:nobodyさん
09/10/26 06:26:20
それぞれどんな$linkstrなの?

652:nobodyさん
09/10/26 06:34:30 n4efgg6U
>>650
すいません、ありがとうございます。
試している最中ですが、cmpの設定に少し時間がかかりそうなので結果が遅れます。

>>651
$day 記事の更新日
$time 記事の更新時間
$date 上記二つを合わせた文字列
$rdf 記事のURL
$article 記事のタイトル
$url 配信元のURL
$title 配信元のタイトル

です。

653:nobodyさん
09/10/26 06:41:45
>>652
ごめん、krsortに$linkstr関係なかったね

$array = array('10/25 21:00'=>1,'10/25 22:14'=>2,'10/26 05:00'=>3,'10/25 23:10'=>4);
var_dump($array);
krsort($array);
var_dump($array);

array(4) {
["10/25 21:00"]=>
int(1)
["10/25 22:14"]=>
int(2)
["10/26 05:00"]=>
int(3)
["10/25 23:10"]=>
int(4)
}
array(4) {
["10/26 05:00"]=>
int(3)
["10/25 23:10"]=>
int(4)
["10/25 22:14"]=>
int(2)
["10/25 21:00"]=>
int(1)
}
こちらで試してみたら想定どおりにソートされてる気がするけども

654:nobodyさん
09/10/26 06:43:43
usortの$aの部分を日付をunixタイムに変えたものいれればそのまま使えるんじゃね
$a部分を連想配列にしてキーを$rssarrayのキーと一致させておけば簡単
比較は値のunixタイムにしたものを比較する感じで
マニュアルの例そのまま使うならrsort()にしたほうがいいと注意書きに書いてるから
まずはusortで形をつくってからパフォーマンスのためにrsortで書き直してみては?

655:645
09/10/26 06:48:17
なんか話をややこしくしてすまんかった
krsortの使い方を勘違いしてたようだ
>>653でよさそう

656:nobodyさん
09/10/26 06:50:28
オマエラ馬鹿じゃね?
$rssarrayをソートかけてんのに$linkstr表示してっからだろ

657:nobodyさん
09/10/26 06:50:51
>>637
krsort($rssarray);
echo "$linkstr";

froeachの終わりがどこかわからんけど、echo結果を見ているなら$rss->itemsの順番に表示されてるんじゃ?
$rssarrayに入れたいものを全部入れてからkrsortしてprint_r($rssarray)で確認してみたらどうかな

658:nobodyさん
09/10/26 06:56:25 n4efgg6U
>>653
phpは昨日触ったばかりなのでじっくり参考にさせて頂きます。

>>654>>655
助言を求めたのは私なのでハマりから抜け出すためのしっかり参考にさせて頂きます。

>>656>>657
やっと原因が究明出来ました。
表示がまだ思い通りにいかないので試行錯誤してみます。

659:nobodyさん
09/10/26 07:00:40 n4efgg6U
foreachを閉じた後

krsort($rssarray);

for(reset($rssarray); $i=i($rssarray); next($rssarray)){
echo "$rssarray[$i]";
$count++;
if($count == 4){
break;
}
}

これでしっかりと表示出来ました。
原因はkrsort($rssarray);をforeachの中に入れていたことと
$linkstrを表示していたことです。
皆様ありがとうございました!

660:nobodyさん
09/10/26 07:01:41
echo "$linkstr";
の行は単にデバッグのためループの中で出力を確認しているだけで
当然そのあとにテーブルか何かで一覧を表示して、正しくソートされてないと言ってるもんだと思ってた。

$linkstrはkrsortどころか$rssarrayとも関係ない。foreachの順で表示されるだけじゃん。

661:nobodyさん
09/10/26 07:07:28
終わった後に言っても仕方ねぇだろ無能。
オマエラ馬鹿すぎ。

662:nobodyさん
09/10/26 07:23:29
煽るのすきだね
リアルでどういうやつなのかぜひ見てみたいわ

663:nobodyさん
09/10/26 07:36:34
>>662
的外れな回答する奴よりはマトモだよ

664:nobodyさん
09/10/26 10:20:50
それはない

665:nobodyさん
09/10/26 10:41:51
クッキーにパスワード保存するのはあれだよね。次回から自動でログインとかどうすればいいんだろう

666:nobodyさん
09/10/26 10:50:47
>>665

>>!

667:nobodyさん
09/10/26 10:58:01
>>665
何かユニークIDを発行してそれを保存

668:nobodyさん
09/10/26 11:15:48
>>665
なにか問題でも?

669:nobodyさん
09/10/26 11:27:59
他人の端末のクッキーコピって来たら、
俺が自動ログインで、そいつの振りして利用できる?

670:nobodyさん
09/10/26 11:33:33
できるよ

671:nobodyさん
09/10/26 11:34:10
そもそも他人に簡単に起動を許す、または誰でも簡単に利用できるようなPCのセキュリティに問題アリ

672:nobodyさん
09/10/26 11:44:57
パスワードだけは暗号化すれば良さそうだね

673:nobodyさん
09/10/26 11:49:41
暗号化が簡単ならね

674:nobodyさん
09/10/26 11:54:38
クッキーなんか暗号化必要ないんじゃない?

>>673
暗号化なんて簡単じゃん

675:nobodyさん
09/10/26 11:57:30
簡単ならおk

676:nobodyさん
09/10/26 12:18:54
そもそもクッキーコピーできるような状況なら、そのPCで他人がブラウザ使ってもログイン可能って
ことだしなあ。

677:nobodyさん
09/10/26 12:30:15
そもそも自動ログインなんて許すのは金の絡まないサイトとか
個人情報があまり意味ないサイトとかだよね。
ひまわり動画とか

678:nobodyさん
09/10/26 16:44:56
>>677
そういう問題か? 糞だな^^;

679:nobodyさん
09/10/26 17:53:40 +hgb+ZZq
一応>>1にMySQL等は別スレとありますが、php+MySQLに対してのスレがなかったので、此方で宜しかったでしょうか?
スレチでしたら誘導お願いします。
Sample.phpへ、buttonを配置し、JavaScriptでメソッドを定義。

function A1(){
if(confirm('ごまだれですか?')){
<?php
mysql_query("begin");
mysql_query("update `gomagoma` set `syurui` = 'くろごま' where `syurui` = 'alpha'") or die(mysql_error());
mysql_query("commit");
mysql_query("begin");
mysql_query("update `gomagoma` set `syurui` = 'しろごま' where `syurui` = 'beta'") or die(mysql_error());
mysql_query("commit");
mysql_query("begin");
mysql_query("update `gomagoma` set `syurui` = 'ごまふあざらあし' where `syurui` = 'hex'") or die(mysql_error());
mysql_query("commit");
?>
window.alert('内容を変更しました。')
}
}

としていますが、DBを覗いてみたところ、アップデートされていませんでした。
ですが、MysqlErrorは返ってきておらず、そのままJavaScriptで記述したalertが実行されます。


原因を現在当たっていますが、何か思い当たる点がありましたらご指摘お願いします。

680:nobodyさん
09/10/26 18:00:11
>>678
677じゃないけど、そんなもんだと思うぞ
大して重要でもないのに何を気にする事あるんだ?
そんなに気になるなら自動ログインなんてしなきゃいいだけじゃないか

681:nobodyさん
09/10/26 18:08:17
>>679
サーバサイドとクライアントサイドがごっちゃになってないか?

「function A1()」ってのはjavascript側で定義している関数だろ?
その中のphp(mysql_query)は、button押下に関係無くそのページロードしたら実行されるぞ?
ブラウザのソース見てみなよ。

682:nobodyさん
09/10/26 18:09:49
>>679
そのHOSTからmysqlで同じSQLを手で入れるとどうなるよ
トランザクションの使い方も間違ってる

683:nobodyさん
09/10/26 18:17:35
>>679
PHPの中身はともかくとしても、

PHP部が実行されて、DBが書き換えられるなどした後、
出力などがなければ<?php から ?>までが無くなったテキストが、
ヘッダなどがついてブラウザに渡され、それからjavascriptが動くので、
ブラウザがうけとるのは
function A1(){
if(confirm('ごまだれですか?')){

}
}
になります。



684:nobodyさん
09/10/26 19:14:03
function A1(){
if(confirm('ごまだれですか?')){

window.alert('内容を変更しました。')
}
}
抜けてた

685:nobodyさん
09/10/26 21:38:32
>>683で答えでてるじゃん

686:nobodyさん
09/10/26 22:16:19
初心者相手に悪いけど、これは吹いたww>>679

687:nobodyさん
09/10/26 22:27:35
mysqlの問題と思ってる時点でアレだな

688:nobodyさん
09/10/26 23:39:47
「ごまふあざらあし」が気になってプログラムが進みません!

689:nobodyさん
09/10/27 00:54:28
クライアントへhtmlを送る時に、ボタンと、押した時にサーバーサイドで実行する
クエリを書いておく事が出来る。
というフレームワークのアイデアを頂きました。
クレームワームの名前は「ごまふあざらあし」にしようと思います。

690:nobodyさん
09/10/27 10:58:21
ごまだれですか?

691:nobodyさん
09/10/27 11:16:23
いえ、「ごまふあざらあし」です

692:nobodyさん
09/10/27 11:34:04
いっそPHPonJavascript HTTP通信で。

693:nobodyさん
09/10/27 11:44:23
PHP側で実行する内容が、htmlソースから丸見えになるんで良くないなw

694:nobodyさん
09/10/27 15:59:34
>>693
SQLをクライアントで構築して送信する前システムを思い出した
最悪だな

695:nobodyさん
09/10/27 19:25:48
"name":"名無し","body":"あいうえお"
このように書かれたテキストファイルから「名無し」「あいうえお」を取得する方法は
正規表現でひとつずつ抜き出すほかにありますか?

696:nobodyさん
09/10/27 19:26:58
>>695
explode

697:nobodyさん
09/10/27 19:33:13
>>696
できました!
ありがとうございます

698:nobodyさん
09/10/27 19:39:41 73GIvY2U
サーバ変数のQUERY_STRINGのPOST版を取得したいのですがどのようにしたら取れますか?

また、上で取得した文字列を$_POSTのような配列形式に変換したいのですが、そのような関数はありますか?

699:nobodyさん
09/10/27 19:44:58
意味が分からん
$_REQUEST

700:nobodyさん
09/10/27 19:59:04
>>698
何もしなくても良いのではないだろうか。

701:nobodyさん
09/10/27 19:59:55
>>698
POSTされた生のデータが欲しいって事かい?

parse_str(file_get_contents('php://input'), $f);
var_dump($f);

702:nobodyさん
09/10/27 21:21:52
fopen("php://memory", "r+");

すげえ

703:698
09/10/27 21:41:14
>>701
すばらしい。ありがとうございます。

704:nobodyさん
09/10/28 01:05:41 EMbPGL3Y
simplexmlについての質問です。

simplexml_load_fileで読みこんだObjectから
$q = $_GET["q"];
echo $xml->item[$q]->name;
としたいのですが、何も表示されません。

echo $xml->item[0]->name;
だと正しく表示され

$q = 0;
echo $xml->item[$q]->name;
でも正しく表示されます。

$q = $_GET["q"];
echo $q;
echo $xml->item[$q]->name;
とした場合は、$qだけが表示されました。

simplexmlでは$_GETが使えないのでしょうか?
解決策をお教えいただきたいです。


705:nobodyさん
09/10/28 01:09:43
>>704
$qの中身の問題だろそれは

706:nobodyさん
09/10/28 01:12:57 EMbPGL3Y
>>705
ありがとうございます!

$q = $_GET["q"]+1-1;
と試してみるとうまくいきました。

ホントにお恥ずかしい限りです・・・

707:nobodyさん
09/10/28 01:16:08
型違うと検索してくれないんだ?

708:nobodyさん
09/10/28 01:17:19
$q = (int)$_GET["q"];
でおk

709:nobodyさん
09/10/28 01:18:34
includeって必要なときにだけ呼び出したほうがいいの?
負荷とかそんなに変わらないのならクラス定義をまとめて最初に読み込んだほうがらくだよね。。。

710:nobodyさん
09/10/28 01:20:18
えっ

711:nobodyさん
09/10/28 01:27:19
>>709

>>1

712:nobodyさん
09/10/28 02:52:06
Javaのimportのようなもんだと思ってるんだろう
ただJavaの場合コンパイラが最適化してくれるので問題ないが
PHPはインタプリタなので最適化のしようがないという
つまり全部includeなんてしたらそりゃ遅くなる

713:nobodyさん
09/10/28 05:46:33
>>712
なるほど、ありがとう。必要なときにincludeしたほうが良いってことね


714:nobodyさん
09/10/28 09:18:20
>>695-697
文字列中に,も出てくるかもしれないから
json_decode()を使ったほうがよくない?

715:nobodyさん
09/10/28 10:42:00 v0axKvNX
セッションの開始をつげるsession_start()って
セッションを使用する場合は必ずつけなければならないのですよね?
これを記述するのはMVCモデルだとVの部分に記述するのであってますでしょうか?

716:nobodyさん
09/10/28 10:43:21
コントロールじゃね?

717:716
09/10/28 10:45:50
コントロールですか?
ありがとうございます
早速組み方を考えて見ます

718:nobodyさん
09/10/28 10:47:23
bootstrapだろ

719:679
09/10/28 14:53:16 op4mA5/p
返答遅くなりました。
そうか・・・表示されてる時には既にHTMLとして返ってきてるんですよね。

この場合は、dbedit.phpのようなものを別途つくり
<?php
include("dbedit.php");
A1();
?>
という風にすればいいのかな?

しかし、この場合でも、A1だけではなく、A2,A3と続く様であれば
それの振り分けはどう実装したらいいでしょうか?
ご意見や、実装例等がありましたら、ご教示よろしくお願い致します。

720:nobodyさん
09/10/28 15:23:46
>>719
まずjavascriptなしでやることを考えてみ。

721:nobodyさん
09/10/28 15:30:07
ちょっと答え方まちがったかな。

まずそのA1, A2, A3でなにをするのか書かないと。あと関数ってわかってる?振り分けってどういうことするの?

722:nobodyさん
09/10/28 15:43:14
>>719
A1()って>>679を見る限りJavaScriptのfunctionだろ? 呼べるわけがないw
>>720の通りにまずJavaScriptなしで動くようにしてみたら?
サーバー側でpostされた内容によってSQL発行するだけだよ

723:nobodyさん
09/10/28 18:25:52
>>679はもう諦めてこれプログラムできる人にやってもらったほうが世のため人のため>>679のためと思うのはおれだけか?

724:nobodyさん
09/10/28 18:34:44
いきなりいろいろ手をつけすぎだな
javascript無し、DB無しでPHPだけでいろいろ慣れるのが先だな

725:nobodyさん
09/10/28 18:35:06
A1()で「くろごま」
A2()で「しろごま」
A3()で「ごまふあざらあし」
を処理する気まんまんの>>679にWeb100.0

726:nobodyさん
09/10/28 23:02:06
>>679
歳幾つ?

727:nobodyさん
09/10/29 00:12:37
phpとmysqlを同時に説明してる本とか売ってるし それ見た方がいいよね
それと同時にプログラミングの概念について解説してる本を読んだ方がいいのかも
概念が足りてない

728:nobodyさん
09/10/29 03:46:52
test

729:nobodyさん
09/10/29 09:54:12 xBLZE2eU
【OS】cent
【バージョン】php5.2.10

SimpleXMLElementに関する質問です。
mlから特定の属性を持った要素を削除するにはどうすれば良いのでしょうか?
例を挙げると、

『sample.xml』
<?xml version="1.0" encoding="UTF-8" ?>
<library>
  <book id="00001">
    <title>aaa</title>
    <author>Emily</author>
  </book>
  <book id="00002">
    <title>bbb</title>
    <author>John</author>
  </book>
  <book id="00003">
    <title>ccc</title>
    <author>Mike</author>
  </book>
</library>

とした場合、idが「00002」の要素を削除するという感じです。

--続く--

730:729
09/10/29 09:56:09 xBLZE2eU
--続き--

いろいろ調べたところ、

$xml = new SimpleXMLElement('sample.xml', null, true);
unset($xml->book[0]);

で削除は出来るのようですが、配列で何番目という指定ではなくid「00002」の要素を指定して削除し、

<?xml version="1.0" encoding="UTF-8" ?>
<library>
  <book id="00001">
    <title>aaa</title>
    <author>Emily</author>
  </book>
  <book id="00003">
    <title>ccc</title>
    <author>Mike</author>
  </book>
</library>

となる事が目的です。
どうぞよろしくお願いします。

731:nobodyさん
09/10/29 12:08:53
>>730
foreachで出来た方いたら教えてください。


$xml = new SimpleXMLElement('sample.xml', null, true);
for ( $i = 0 ; $i < count($xml->book);$i++) {
if ( $xml->book[$i]["id"] == " 00002") {
unset( $xml->book[$i] );
}
}
echo $xml->asXML();

732:729
09/10/29 23:49:16
>>731
出来ました!
どうもありがとうございます。

確かにforeachだと更に良いかも知れませんね。でも感謝です。


733:nobodyさん
09/10/30 06:12:51 5l/tuOOs
以下のようなメールアドレスのうち「@の前部分」を、文字数分だけ*に置換したいのです。
taro@example.com

これだと4文字決め打ちになってしまいます。
preg_replace('/[a-z0-9\.\-\_]+@/i', '****@', $text);

いまのところシンプルに書ける方法で思いつくのは、
長い文字数から順に置換していく方法です。
forなど使えばシンプルには書けそうです。
preg_replace('/[a-z0-9\.\-\_]{10}@/i', '**********@', $text);
preg_replace('/[a-z0-9\.\-\_]{9}@/i', '*********@', $text);
...

でも美しい方法とは思えません。
定石、または美しい方法はありますか?

734:nobodyさん
09/10/30 08:26:53
>>733
たとえば

$text = "taro@example.com";
echo preg_replace('/([a-z0-9\.\-\_]+)@/ie', "str_repeat('*',strlen('$1')) . '@'", $text);

735:nobodyさん
09/10/30 10:41:53
例えば

$text = "taro@example.com";
$array = explode('@', $text);
echo str_repeat('*',strlen($array[0])) . '@' . $array[1];

736:nobodyさん
09/10/30 16:17:27
例えば

$text='taro@example.com';
echo str_repeat('*', strpos($text,'@')).strstr($text,'@');

737:nobodyさん
09/10/30 17:16:58 5l/tuOOs
>>734-736
ありがとうございます。e修飾子とかはじめて認識しました。
Yahoo!グループの過去ログのように「メール本文中の署名などの個人情報を隠匿」が目的なので、
>>734の方法で行かせていただこうと思います(目的を書いとくべきでしたごめんなさい)。

精進します。

738:nobodyさん
09/10/30 20:21:02 k7DoHVtB
2chの大量規制があったとかのせいか、ここも勢いがないね

phpのソースコードそのものを取り込んで
そのコードを解析する
みたいな手段ってありませんか?

739:nobodyさん
09/10/30 20:25:31
どう解析するの?

単に構文解析だったら、PHPでPHP用のレキシカルアナライザとパーサ作ればいいんだけど、
それだけやったって面白くないよね、手間なだけで。

何をしたいのかが良く分からん。

740:nobodyさん
09/10/30 22:48:05 pyIKqVVx
class test
{
private $ar,$tes;
public function __construct()
{
$this->ar = array('tes');
(ここで 変数 $this->($this->ar[0]) この場合 $this->tes に何らかの値を代入したい)
echo $this->tes;
}
}
$this-> に続く変数名を変数の値で表す方法はありますか?
宜しくお願いします。

741:nobodyさん
09/10/30 22:52:15
日本語で

742:nobodyさん
09/10/30 23:25:37 pyIKqVVx
上のコードで$this->tesに、例えば"b"を代入したいとき、
$this->tes = "b"; と書くのではなく、tesの部分に、"tes"が代入された変数を使いたいのです。

743:nobodyさん
09/10/31 00:17:51
$var = 'tes';
echo $this->$var;
こんな感じで

744:nobodyさん
09/10/31 00:38:36
>738
runkit
URLリンク(jp2.php.net)

745:nobodyさん
09/10/31 07:26:05
>>743
ああ、一回代入すればいいのですね
思いつきませんでした。ありがとうございます!

746:nobodyさん
09/10/31 09:17:44 5b/pi/nw
質問です。
アップローダー作る時にテンポラリのディレクトリから保存用のディレクトリに
ファイルをcopy → もとのテンポラリファイル削除 って流れがあり、
if(copy($tmpFile, $lastFile)){unlink($tmpFile);} 
という感じの処理をすると思います。
しかし条件部分がtrueにならないとき、どうしたら良いんでしょうか?
「コピー失敗しました」みたいなアラート表示すべき? そんなことやってますか?
そもそも、上のif文でのチェックは必要なんでしょうか…
条件成立・不成立をどこまでフォローすべきか悩んでいます。

747:nobodyさん
09/10/31 15:10:42
move_uploaded_file 使った方がええんじゃないか?

748:nobodyさん
09/10/31 15:13:55
コピーするのがそのサイト内部処理として必須であるなら(まあそうだろうけど)、
それに失敗したらアップロード処理失敗のエラー返すしかなかろ。

749:nobodyさん
09/10/31 15:30:20
エラーが発生したときに可能な限り元の状態に戻す設計にした方が良いな
コピー失敗したらそのファイルを削除してメッセージを表示&エラーログを残すとか

750:nobodyさん
09/11/01 23:38:51
>>740
$this->{$this->ar[0]} = "何らかの値";


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4810日前に更新/231 KB
担当:undef