2011-08-05 6 views
0

問題から始めます。私は、mysql_fetch_assoc()呼び出しをループして、すべてのフィールドを行から表示しています。新しいパスがあれば、新しい行に加えて古い行の値も加えられます。それは各パスを合成する。私は多くのことを試して、多くのポストやフォーラムを見てきました。どんな助けもありがとうございます。mysql_fetch_assoc()の結果は、古い値を新しい値に合成します。何か案は?

編集:申し訳ありませんが、私は質問を投稿した後にインデントがうまくなりません。ループここ

$query = "SELECT h._userNumber, d._dateWorked, h._hoursWorked FROM pay_hours h, pay_dates d WHERE d._userNumber=h._userNumber ORDER BY d._dateWorked DESC"; // gets the user, hours and dates and displys most recent dates first. 

$result = $keyFrameObject->Execute($query); // wrapper for mysql_query() 

です::クエリここ

CREATE TABLE pay_hours 
(
    _key  int(11) PRIMARY KEY NOT NULL AUTO_INCREMENT, 
    _userNumber  int(11), 
    _hoursWorked double 
); 

CREATE TABLE pay_dates 
(
    _key  int(11) PRIMARY KEY NOT NULL AUTO_INCREMENT, 
    _userNumber int(11), 
    _dateWorked date  
); 

です:

ここではMySQLのテーブル・スクリプトです

$row = mysql_fetch_assoc($result); 

while ($row) 
{ 
    $table .= "<tr>"; 

    foreach ($row as $field) 
    { 
     $table .= "<td>" . $field . "</td>"; 
    } 

    $table .= "</tr>"; 
    $row = mysql_fetch_assoc($result); 
} 

これは、PHPのページだと私は最終的に表をエコーし​​ますこのデータで作成されます。テスト目的で同じuserNumber値を使用している間は、dateWorkedとhoursWorkedの値を入力しています。ここではいくつかのサンプル入力と出力は(var_dump($row)を使用して)です:

入力:

date = 2011-08-05 
hours = 1 

出力:

array(3) { ["_userNumber"]=> string(3) "333" ["_dateWorked"]=> string(10) "2011-08-05" ["_hoursWorked"]=> string(1) "1" } 

今すぐページが戻って掲載していると私は値の新しいセットに入力します:

入力:

date = 2011-08-04 
hours = 5 

出力(フォーマットされていない):

array(3) { ["_userNumber"]=> string(3) "333" ["_dateWorked"]=> string(10) "2011-08-05" ["_hoursWorked"]=> string(1) "5" } array(3) { ["_userNumber"]=> string(3) "333" ["_dateWorked"]=> string(10) "2011-08-05" ["_hoursWorked"]=> string(1) "1" } array(3) { ["_userNumber"]=> string(3) "333" ["_dateWorked"]=> string(10) "2011-08-04" ["_hoursWorked"]=> string(1) "1" } array(3) { ["_userNumber"]=> string(3) "333" ["_dateWorked"]=> string(10) "2011-08-04" ["_hoursWorked"]=> string(1) "5" } 

出力(フォーマット):

array(3) { ["_userNumber"]=> string(3) "333" ["_dateWorked"]=> string(10) "2011-08-05" ["_hoursWorked"]=> string(1) "5" } 

array(3) { ["_userNumber"]=> string(3) "333" ["_dateWorked"]=> string(10) "2011-08-05" ["_hoursWorked"]=> string(1) "1" } 

array(3) { ["_userNumber"]=> string(3) "333" ["_dateWorked"]=> string(10) "2011-08-04" ["_hoursWorked"]=> string(1) "1" } 

array(3) { ["_userNumber"]=> string(3) "333" ["_dateWorked"]=> string(10) "2011-08-04" ["_hoursWorked"]=> string(1) "5" } 

Iが値を入力し、コードを実行するたびに、それが更なる化合物。問題はループだとは思いますが、わかりません。何とか$行はポストバックの後に値を保持しています。

もう一度お返事いただき、ありがとうございます。これ以上の情報が必要な場合はお知らせください。

+0

ここでvar_ダンプをやっていますか?それがwhileループの中にあれば、表示される出力は期待されるものです。whileループが完了した後にvar_dump($ table)は何を表示しますか? – vascowhite

答えて

0

問題を解決しました。答えは以下のコメントにあります。助けてくれてありがとう。

私はそれを理解しました。テーブルの設計のために、2回挿入するとコンパウンディングが発生します。私はすべてを1つのテーブルに変更し、あいまいさが消えました。あなたの助けをありがとう。私はこれをどのように解決しているのか分かりませんが、モッズが見ているなら弟を助けてくれますか? - Matt 9時間前

1

変更$ table。= ""; 〜$ table = "";

。=は、以前のループから$ tableの値を保持しています。

+0

私は何をしたのか分かります。ありがとう。 – Matt

+0

@matt、問題ありません。答えを受け入れて投票することを忘れないでください。 Stackoverflowへようこそ。 – vascowhite

+0

申し訳ありませんが、私はそれが助けになると思ったが、それはありませんでした。 「

」の後ろに「。=」が付いていて、その後に「
」があるため、echo $ table; – Matt

関連する問題