2012-02-23 15 views
1

これは私が達成しようとしているものです。ドロップダウンメニューから[すべて]を選択すると、データベースからすべてのクライアントを選択します。クライアントごとに、スクリプトを実行してhtmlページを作成し、次にpdfを作成します。これは私が持っているところですが、各クライアントのHTMLページとpdfを生成することはできません。各ループのPHP

<?php 
$client_id=$_POST["client_id"]; 
$date_start=$_POST["date_start"]; 
$date_end=$_POST["date_end"]; 

if ($client_id == 'ALL') 
{ 
    $con = mysql_connect("localhost","user","password"); 
    if (!$con) 
    { 
    die('Could not connect: ' . mysql_error()); 
    } 

    mysql_select_db("mydatabase", $con); 

    $query = "select client_id from ca_client_account"; 

    $result = mysql_query($query) or die(mysql_error()); 

    while($row = mysql_fetch_array($result)) 
    { 
    $command="php $result.php $result $date_start $date_end > $result.html"; 
    exec($command, $output, $status); 
    echo $command; 
    if ($status!=0) {print_r($output); die("wget failed with status $status"); } 

    $command="wkhtmltopdf-i386 --margin-left 5mm --margin-right 5mm $result.html $result.pdf"; 
    exec($command, $output, $status); 
    if ($status!=0) die("htmltopdf failed"); 
    } 

} 
else 
{ 
    $command="php $client.php $client_id $date_start $date_end > $client.html"; 
    exec($command, $output, $status); 
    if ($status!=0) {print_r($output); die("wget failed with status $status"); } 

    $command="wkhtmltopdf-i386 --margin-left 5mm --margin-right 5mm $client.html $client.pdf"; 
    exec($command, $output, $status); 
    if ($status!=0) die("htmltopdf failed"); 
} 
?> 

1人のクライアントではすべてが完璧です。私が試して、すべてのクライアントの文を生成するとき、私はそれを動作させることはできません。

私は間違っていますか?あなたは、データベース呼び出しがどのように動作するかの基本的な誤解を持っている

感謝

+0

あなたはどのような出力を得ていますか?エラーはありますか? –

+0

$ result変数は、意図したとおりに各client_idを出力しません。それはリソースID 3を出力します。 –

+0

好奇心が強いのですが、ファイルを 'インクルードする 'のではなく、ほかの機能を実行するのではなく、なぜ' exec'を実行するのですか?私にはあまり面倒ではないようです。 –

答えて

2

$resultここで期待したことはありません。エコーアウトする正確なフィールドを指定する必要があります。この場合、$row['client_id']が動作します。

+0

ありがとう、そのほとんどが、私は未定義のオフセットを得る:1今。私は$ row ['client_id']の代わりに$ row [1]を使用しました - これは原因はありませんね、 –

+0

@TheManiacあなたは正しいです。私は静的なファイルであるmyfile.phpを変更するつもりはありませんでした - 投稿を一般化するためにここにコピーするときに気を付けずに変更しました –

+0

これはもう1つです: '$ row ['client_id' mysql_fetch_array'を '' mysql_fetch_assoc'(http://php.net/manual/en)に置き換えます。これは、 '$ row [1]'の代わりに ' /function.mysql-fetch-assoc.php) –

2

$commandでは、$resultを使用します。これは、データベース照会結果ハンドルです。これはクエリの値ではなく、mysql _ *()関数以外のものでは使用できません。標準クエリシーケンスは次のようになります。

$sql = "SELECT ..."; 
$result = mysql_query($sql) or die(mysql_error()); 
$row = mysql_fetch_array($result); 

echo $row['some_field']; 

$結果には、クエリ結果を表すステートメントハンドルが含まれています。このステートメント・ハンドルを使用して、データ行をFETCHします。取得したデータのうち$rowの中には、クエリで指定した個々のデータフィールドがあります。それはあなたの外部スクリプトに渡すデータのビットです。

関連する問題