PHP для каждого цикла - PullRequest
       13

PHP для каждого цикла

1 голос
/ 23 февраля 2012

Это то, чего я пытаюсь достичь. Если в раскрывающемся меню выбрано «Все», я выбираю всех клиентов из своей базы данных. Затем для каждого клиента будет запущен скрипт, создающий HTML-страницу, а затем PDF-файл. Это то место, куда я попал, но я не могу заставить его генерировать HTML-страницу и pdf для каждого клиента.

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

Для одного клиента все идеально. Когда я пытаюсь сгенерировать все клиентские операторы, я не могу заставить его работать.

Что я делаю не так?

Большое спасибо

Ответы [ 2 ]

2 голосов
/ 23 февраля 2012

$result не доставит то, что вы ожидаете здесь.Вам необходимо указать точное поле, которое вы собираетесь выводить.В этом случае $row['client_id'] будет работать.

2 голосов
/ 23 февраля 2012

У вас есть фундаментальное недопонимание того, как работают вызовы базы данных.В вашем $command вы используете $result, который является запросом базы данных RESULT HANDLE.Это не значение из запроса, оно не может использоваться ничем другим, кроме функций mysql _ * ().Стандартная последовательность запросов выглядит примерно так:

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

echo $row['some_field'];

$ result содержит дескриптор оператора, представляющий результаты вашего запроса.Вы используете этот дескриптор оператора, чтобы выбрать строку данных.В этих $row данных, которые вы выбрали, будут отдельные поля данных, которые вы указали в своем запросе.Это те биты данных, которые вы передадите в свой внешний скрипт.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...