1

わかった、

ここで夢中になります-(Mysqlクエリの結果から)配列の各行を一度に1つずつ表示したかったのです。私はそれらをwhileループに入れ、すべての行を一度に表示しました。その後、while ループを捨ててセッションを使用するようにアドバイスされました。

このサイトと PHP チュートリアルのコメントを使用して、これを機能させるために何時間も費やしましたが、非常に混乱しており、助けが必要です。

シナリオ:

例えば。Mysql クエリ: MyTable から col1、col2、col3、col4 を選択します。(MyTable は約 10 行あります)

画面

col1 (行1)

col2 (行1)

col3 (行1)

col4 (行1)

ブラウザを更新します(または優先 - [送信] ボタンをクリックします)

画面

列 1 (行 2)

col2 (行 2)

col3 (行 2)

col4 (行 2)

更新/送信....などなど、すべての行が表示されるまで。

変数を使用する必要が$_SESSIONあると思います-試しました-各更新で-このように変数を設定します

$_SESSION['column1']= $rownum;

$_SESSION['column2']= $rownum;

$_SESSION['column3']= $rownum;

$_SESSION['column4']= $rownum;

しかし、列が正しく表示されません。

これを解決するのを手伝ってください-可能であればコード例で-セッションの開始と更新など、必要なものを含めてください。

よろしくお願いします

4

3 に答える 3

0

session_start();セッションを使用する前に追加

<?php

session_start();

$_SESSION['pop'] = 12;
echo $_SESSION['pop'];

?>
于 2013-03-25T01:24:44.317 に答える
0

これを行う方法はいくつかあります。

最初はmysqlオフセットです(すべての行を取得するのではなく、必要な部分を取得します(そこに10000行ある可能性があります-一度にすべてが問題になります))。

最初の例は、かなりの数のレコードがある場合、または大きなレコード グループを処理できるため、将来に備えたい場合に使用できます。

2 番目の例は、レコードのグループが小さい場合、またはデータベースのプリスクリプト実行の一種のキャッシュを行う場合に使用できます。

例 #1:

MySql -

SELECT col1, col2, col3, col4 FROM MyTable LIMIT 4 OFFSET 0 

php -

session_start();

$position = isset($_SESSION['display_position']) ? $_SESSION['display_position'] : 0;
$limit    = 4;

if(empty($position))
    $_SESSION['display_position'] = 0;

$sql    = 'SELECT col1, col2, col3, col4 FROM MyTable LIMIT '.$limit.' OFFSET '.$position;
$result = mysql_query($sql);

// We don't want to fetch non existen resource
if($result)
{
    while($rows = mysql_fetch_array($result))
    {
        echo $rows;
    }   
}
else
{
    echo 'No more records';
    exit;
}

// Update session for next run
$_SESSION['display_position'] = $position + $limit;

その他は、たとえば、配列のループと $_SESSION での位置の格納です。

例 #2:

Mysql-

SELECT col1, col2, col3, col4 FROM MyTable

php -

session_start();

$records = array('row1', 'row2', 'row3', 'row4', 'row5', 'row6', 'row7', 'row8', 'row9', 'row10');

$position = isset($_SESSION['display_position']) ? $_SESSION['display_position'] : 0;
$limit    = 4;

if(empty($position))
    $_SESSION['display_position'] = 0;

if(count($records) < $position)
{
    echo 'No more records';
    exit;
}

for($i = $position; $i < $position + $limit; $i++)
{
    // Display rows
    if(isset($records[$i]))
        echo $records[$i];
}

// Update session for next run
$_SESSION['display_position'] = $position + $limit;

注:$limit必要に応じて変数を調整してください。

あなたの特定のユースケース(更新済み):

session_start();

$records = array(
    array(
        'col1' => 'col1valuerow1',
        'col2' => 'col2valuerow1',
        'col3' => 'col3valuerow1',
        'col4' => 'col4valuerow1'
    ),
    array(
        'col1' => 'col1valuerow2',
        'col2' => 'col2valuerow2',
        'col3' => 'col3valuerow2',
        'col4' => 'col4valuerow2'
    ), 
    array(
        'col1' => 'col1valuerow3',
        'col2' => 'col2valuerow3',
        'col3' => 'col3valuerow3',
        'col4' => 'col4valuerow3'
    ), 
    array(
        'col1' => 'col1valuerow4',
        'col2' => 'col2valuerow4',
        'col3' => 'col3valuerow4',
        'col4' => 'col4valuerow4'
    ), 
    array(
        'col1' => 'col1valuerow5',
        'col2' => 'col2valuerow5',
        'col3' => 'col3valuerow5',
        'col4' => 'col4valuerow5'
    ), 
    array(
        'col1' => 'col1valuerow6',
        'col2' => 'col2valuerow6',
        'col3' => 'col3valuerow6',
        'col4' => 'col4valuerow6'
    ), 
    array(
        'col1' => 'col1valuerow7',
        'col2' => 'col2valuerow7',
        'col3' => 'col3valuerow7',
        'col4' => 'col4valuerow7'
    ), 
    array(
        'col1' => 'col1valuerow8',
        'col2' => 'col2valuerow8',
        'col3' => 'col3valuerow8',
        'col4' => 'col4valuerow8'
    ), 
    array(
        'col1' => 'col1valuerow9',
        'col2' => 'col2valuerow9',
        'col3' => 'col3valuerow9',
        'col4' => 'col4valuerow9'
    ),
    array(
        'col1' => 'col1valuerow10',
        'col2' => 'col2valuerow10',
        'col3' => 'col3valuerow10',
        'col4' => 'col4valuerow10'
    )
);

$position = isset($_SESSION['display_position']) ? $_SESSION['display_position'] : 0;
$limit    = 1;

if(empty($position))
    $_SESSION['display_position'] = 0;

if(count($records) < $position)
{
    echo 'No more records';
    exit;
}

for($i = $position; $i < $position + $limit; $i++)
{
    // Display rows
    if(isset($records[$i])){
        echo $records[$i]['col1'] . '<br/>';
        echo $records[$i]['col2'] . '<br/>';
        echo $records[$i]['col3'] . '<br/>';
        echo $records[$i]['col4'] . '<br/>';
    }
}

// Update session for next run
$_SESSION['display_position'] = $position + $limit;
于 2013-03-25T01:41:35.977 に答える
0

主キー列がない場合は、テーブルに追加します。その後、以下を使用できます。

<?php

session_start();

if(isset($_SESSION["id"])){
    $_SESSION["id"] = $_SESSION["id"] + 1;
}
else{
    $_SESSION["id"] = 1;
}

$id = $_SESSION["id"];

//Your mysql connection 

$results = mysql_query("SELECT * 
                        FROM urtable 
                        WHERE id = $id");

while($row = mysql_fetch_array($results)){
    echo $row["urcol1"];
    echo "<br>";
    echo $row["urcol2"];
    echo "<br><br>";
}

?>
于 2013-03-25T01:47:18.960 に答える