2012-04-06 6 views
0

私はPHPを初めて使い、すべての私の仕事のデータベースを作成することによってそれを学びたいと思っています(私はフリー・ランスのデザイナーです)。私はwhileループを含む関数を作成する

<?php 
$logojobs = mysql_query("SELECT * FROM hlgd_projects WHERE description LIKE '%logo%'", $connection); 
?> 

<a href="index.php?report=logo">View logo jobs</a> 

<?php 
if ($report == 'logo') {   
echo "<h1>Logo jobs</h1>"; 
echo "<table id='report'> 
    <tr> 
    <th></th> 
    <th>Status</th> 
    <th>Lead</th> 
    <th>Start</th> 
    <th colspan='2'>Codes</th> 
    <th>Client</th> 
    <th>Description</th> 
    <th>Fee</th> 
    <th>Contact</th> 
    <th colspan='2'>Invoice</th> 
    <th>Paid</th> 
    </tr>"; 
while ($logojob = mysql_fetch_array($logojobs)) { 
    echo "<tr> 
     <td class='id'>" . $logojob['id'] . "</td> 
     <td>" . $logojob['status_id'] . "</td> 
     <td>" . $logojob['lead_id'] . "</td> 
     <td>" . $logojob['date_start'] . "</td> 
     <td>" . $logojob['code_lead'] . "</td> 
     <td>" . $logojob['code_hlgd'] . "</td> 
     <td>" . $logojob['client'] . "</td> 
     <td>" . $logojob['description'] . "</td> 
     <td>&pound;" . $logojob['fee'] . "</td> 
     <td>" . $logojob['contact'] . "</td> 
     <td>" . $logojob['invoice'] . "</td> 
    <td>" . $logojob['date_inv'] . "</td> 
     <td>" . $logojob['date_paid'] . "</td>  
    </tr>";    
} 
echo "</table>";   
} 
?> 

は、しかし、私はたくさんのためのレポートを生成できるようにしたいと思います....説明が正常に動作し、いくつかの行を生成し、ロゴが含まれているすべてのジョブを表示するには、テーブルを生成するために、以下のコードを作成しました異なるものがあるので、テーブルを生成し、その都度関連する引数を渡す関数を作成したいと考えています。私はこれを次のようにしましたが、最初の行しか生成しないので、しばらく無視していると思いますか?私はどこに間違っているのか、あるいは上のコードを関数にうまく乗せる方法を教えてもらえますか?

while ($job_name = mysql_fetch_array($job_set)) { 
    $reportrows = "lots of html" 
} 

これは$ reportrowsをループするたびにのみ、その行のHTMLに設定されています。事前に

<?php 
function report_bytype($title,$job_set,$job_name) { 
    $reporthead = "<h1>$title</h1> 
    <table id='report'> 
    <tr> 
    <th></th> 
    <th>Status</th> 
    <th>Lead</th> 
    <th>Start</th> 
    <th colspan='2'>Codes</th> 
    <th>Client</th> 
    <th>Description</th> 
    <th>Fee</th> 
    <th>Contact</th> 
    <th colspan='2'>Invoice</th> 
    <th>Paid</th> 
    </tr>"; 
    while ($job_name = mysql_fetch_array($job_set)) { 
    $reportrows = " 
     <tr> 
     <td class='id'>" . $job_name['id'] . "</td> 
     <td>" . $job_name['status_id'] . "</td> 
     <td>" . $job_name['lead_id'] . "</td> 
     <td>" . $job_name['date_start'] . "</td> 
     <td>" . $job_name['code_lead'] . "</td> 
     <td>" . $job_name['code_hlgd'] . "</td> 
     <td>" . $job_name['client'] . "</td> 
     <td>" . $job_name['description'] . "</td> 
     <td>&pound;" . $job_name['fee'] . "</td> 
     <td>" . $job_name['contact'] . "</td> 
     <td>" . $job_name['invoice'] . "</td> 
     <td>" . $job_name['date_inv'] . "</td> 
     <td>" . $job_name['date_paid'] . "</td>  
    </tr>";    
    }        
    $reportfoot = "</table>"; 
    $reporttable = $reporthead . $reportrows . $reportfoot; 
    echo $reporttable; 
    return $reporttable; 
} 
?> 

<?php 
if($report == 'logo') { 
report_bytype("logo",$logojobs,$logojob); 
} 
if($report == 'stationery') { 
report_bytype("stationery",$stationeryjobs,$stationeryjob); 
} 
?> 

多くのおかげで、 ヘレン

+0

? – C2H5OH

+0

php.ini設定ファイルのregister_globalsを "off"に設定 –

答えて

2

問題は、このラインです。

代わりに$reportrows .= "some html";を使用すると、$ reportrowsをその行で置き換えるのではなく、$ reportrowsに各行を追加します。

編集:+=.=に置き換えます。

+1

文字列を連結するためのPHPでは '+ ='ではありません。 '。=' –

+0

'+ ='はJava、Javascript用です。 'PHPで追加するとき – Baba

+0

Doh、あまりにも多くのJava私のために。修正する。 – Jim

2

あなたが

concatenatingあなたの結果ではないエラーを持っている理由私は、より詳細な説明についてはhttp://php.net/manual/en/language.operators.string.php

$reportrows .= " 

全スクリプトによる

$reportrows = " 

の交換を参照してくださいしてください見ることができます

function report_bytype($title, $job_set, $job_name) { 
    $reporthead = "<h1>$title</h1> 
    <table id='report'> 
    <tr> 
    <th></th> 
    <th>Status</th> 
    <th>Lead</th> 
    <th>Start</th> 
    <th colspan='2'>Codes</th> 
    <th>Client</th> 
    <th>Description</th> 
    <th>Fee</th> 
    <th>Contact</th> 
    <th colspan='2'>Invoice</th> 
    <th>Paid</th> 
    </tr>"; 

    $reportrows = ""; 
    while ($job_name = mysql_fetch_array ($job_set)) { 
     $reportrows .= " 
    <tr> 
    <td class='id'>" . $job_name ['id'] . "</td> 
    <td>" . $job_name ['status_id'] . "</td> 
    <td>" . $job_name ['lead_id'] . "</td> 
    <td>" . $job_name ['date_start'] . "</td> 
    <td>" . $job_name ['code_lead'] . "</td> 
    <td>" . $job_name ['code_hlgd'] . "</td> 
    <td>" . $job_name ['client'] . "</td> 
    <td>" . $job_name ['description'] . "</td> 
    <td>&pound;" . $job_name ['fee'] . "</td> 
    <td>" . $job_name ['contact'] . "</td> 
    <td>" . $job_name ['invoice'] . "</td> 
    <td>" . $job_name ['date_inv'] . "</td> 
    <td>" . $job_name ['date_paid'] . "</td> 
    </tr>"; 
    } 
    $reportfoot = "</table>"; 
    $reporttable = $reporthead . $reportrows . $reportfoot; 
    echo $reporttable; 
    return $reporttable; 
} 

あなたは `$のlogojobs`と` $のstationeryjobs`を初期化するにはどうすればよいのおかげ

+0

偉大な、ありがとう! –

+0

@Helen Leeあなたは歓迎されています...それ以上の問題があるかどうかを知りましょう – Baba

関連する問題