0

私は PHP が初めてで、すべての仕事のデータベースを作成して PHP を学ぼうとしています (私はフリーランスのデザイナーです)。以下のコードを作成して、説明にロゴが含まれているすべてのジョブを表示するテーブルを生成しました。ロゴは正常に機能し、いくつかの行を生成します....

<?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>";        
}
?>

ただし、さまざまなことについてレポートを生成できるようにしたいので、テーブルを生成して関連する引数を毎回渡す関数を作成したいと考えています。私はこれを次のように行いましたが、最初の行のみを生成するので、しばらく無視していると思いますか? どこが間違っているのか、または上記のコードを関数にうまく配置する方法を教えてもらえますか?

<?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);
}
?>

前もって感謝します、ヘレン

4

2 に答える 2

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;
}

ありがとう

于 2012-04-06T11:35:51.337 に答える