ホームページ  >  記事  >  バックエンド開発  >  ヘルプ: このコードのデータ取得の問題について! !

ヘルプ: このコードのデータ取得の問題について! !

WBOY
WBOYオリジナル
2016-06-23 14:13:05796ブラウズ

この投稿は XiaoShengbboy によって最終編集されました: 2013-06-14 00:42:16

助けを求めています
$sql="select * from xym_pic"
$res=mysql_query($sql,$conn); ( $row=mysql_fetch_assoc($res)){
$data[]=$row;
}// 実際の状況をシミュレートするために 9 つのレコードをランダムに選択します
$keys = array_rand($data, 10); ( );
foreach($keys as $key){
$json[] = $data[$key] }
このコードのウォーターフォール data.php 部分のコード各取得後、データはデータベースから取得され、配列 $data[] に入れられます。本来の方法では、毎回 9 つのレコードをランダムに取得し、時間順にソートして削除します。 1 回目は 0-9 で、2 回目は 10-9 というようになります。誰かデータを抽出する方法を教えてくれませんか?どうもありがとうございます!問題を解くと100点差し上げます! ! !親切な方が QQ に参加して指導していただければ幸いです: QQ 2 7 7 6 2 8 1 8 1


ディスカッション (解決策) への返信
session_start();if(! isset($_SESSION['last'])) $_SESSION['last'] = 0;$last = $_SESSION['last'];$sql="select * from xym_pic limit $last,9";$res=mysql_query($sql,$conn);while ($row=mysql_fetch_assoc($res)){  $data[]=$row;}$_SESSION['last'] += count($data);echo json_encode( $data )

返信してくれたモデレーターに感謝します。解決しました。ありがとうございます。 ! ! ! ! ! ! ! !

session_start();if(! isset($_SESSION['last'])) $_SESSION['last'] = 0;$last = $_SESSION['last'];$sql="select * from xym_pic limit $last,9";$res=mysql_query($sql,$conn);while ($row=mysql_fetch_assoc($res)){  $data[]=$row;}$_SESSION['last'] += count($data);echo json_encode( $data )
;

まだ小さな問題があります。つまり、データベースに 80 件以上のレコードがあり、毎回 9 回取り出しても、すべて取り出されてしまいます。ページを更新してもセッションが残っています。どうすれば解決できますか?ありがとうございます


session_start();if(! isset($_SESSION['last'])) $_SESSION['last'] = 0;$last = $_SESSION['last'];$sql="select * from xym_pic limit $last,9";$res=mysql_query($sql,$conn);while ($row=mysql_fetch_assoc($res)){  $data[]=$row;}$_SESSION['last'] += count($data);echo json_encode( $data )
;

まだ小さな問題があります。つまり、データベースに 80 件以上のレコードがあり、毎回 9 つのレコードを取り出しますが、それらはすべて取り出されます。ですが、ページを更新してもセッションが残っています。どうすれば解決できますか?ありがとうございます

ウォーターフォールフローはセッションに保存すべきではありませんね?リクエストパラメータでデータの先頭を判断するのはページングと同じはずです

取得できなかった場合は、もう一度最初から取得してください

取得できなかった場合は、もう一度最初から取得してください

今は取得できないので、結果セットが空ならセッションを破棄してページを更新してもデータが取得できないと判断します

取得できない場合は最初から取得してくださいもう一度
結果セットが空の場合はセッションを破棄すると判断しましたが、それでもデータを取得できません

結果セットが空の場合は、セッションを破棄しても、また無限ループになります
結果セットは空だと思うので、ページが更新されるまで結果は再度取得されません
解決方法

session_start();if(! isset($_SESSION['last'])) $_SESSION['last'] = 0;$last = $_SESSION['last']; $sql="select * from xym_pic limit $last,9";$res=mysql_query($sql,$conn);if(mysql_num_rows($res) ==0) {  $last = $_SESSION['last'] = 0;  $sql="select * from xym_pic limit $last,9";  $res=mysql_query($sql,$conn);}while ($row=mysql_fetch_assoc($res)){  $data[]=$row;}$_SESSION['last'] += count($data);echo json_encode( $data )


Get 取得できない場合は、もう一度最初から取得してください

さて、取得できないので、結果セットが空の場合は、ページを更新してもセッションを破棄すると判断しました。データを取得します


結果セットが空の場合、セッションを破棄させますが、破棄されてしまいます。これは無限ループです
結果セットは空だと思うので、ページが更新されるまで結果は取得できません。それからもう一度数えます
解決方法
このコードの最終的な結果セット json は JS ファイルに返され、js がページの位置を決定します 新しいコンテンツを常に読み込み、セッションを破棄しても、すぐにデータの取得を再開しますロードされているので!
これは頭が痛いです!

具体的に何がしたいのですか?

具体的に何がしたいのですか?

最新の80個のデータを少しずつ取得したいのですが、ページを更新して再度データを取得してしまうのがこのウォーターフォールフローです。
さて、このウォーターフォールフローの仕組みは、静的ページがjsを呼び出し、jsがページの現在位置を下から何ピクセル後に取得するというものですが、このphpコードでは問題ありません。 jsを取得する際にjsonが空であるかどうかを判断する必要がありますが空の場合は取得されないのでしょうか?

これで、js はスクロールされている限りコンテンツを取得し続けます。php の結果セットが空の場合、一度取得した後はデータが保持されます。

取得後、セッションからログアウトするか、$_SESSION を空に設定します

もちろん、JS 側でも返すデータがあるかどうかを確認する必要があります。ない場合は、それ以上のリクエストは送信されません

取得後、ログを記録します。セッションを終了するか、$_SESSION を空に設定します

もちろん、JS 側でもデータが返されるかどうかを確認する必要があります。そうでない場合は、リクエストは送信されません。ありがとうございます。 !

患者様のご協力に感謝します! ! ! ! ! ! !

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。