Как экспортировать переменные столбцы в файл CSV с помощью PHP? - PullRequest
0 голосов
/ 08 февраля 2012

Я знаю, как экспортировать в CSV, используя PHP для запроса mySQL и заполнения CSV.Однако возможно ли, чтобы пользователи выбирали, какие столбцы они хотели бы иметь, и соответственно изменяли SQL-запрос?

Я установил соединение с базой данных, добавил свой запрос, который:

$query = sprintf("SELECT x, y, z from a");
$result = mysql_query( $query, $conn ) or die( mysql_error( $conn ) );
header( 'Content-Type: text/csv' );
header( 'Content-Disposition: attachment;filename=export.csv' );
$row = mysql_fetch_assoc( $result );
if ( $row )
{
echocsv( array_keys( $row ) );
}
while ( $row )
{
echocsv( $row );
$row = mysql_fetch_assoc( $result );
}
function echocsv( $fields )
{
$separator = '';
foreach ( $fields as $field )
{
  if ( preg_match( '/\\r|\\n|,|"/', $field ) )
  {
    $field = '"' . str_replace( '"', '""', $field ) . '"';
  }
  echo $separator . $field;
  $separator = ',';
}
echo "\r\n";
}

1 Ответ

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

Да, это так. Вы должны создать форму, где пользователь выбирает поля, которые он хочет экспортировать, я думаю, в списке флажков, где вы перечисляете все возможные поля базы данных, которые можно получить, а затем создаете запрос в соответствии с выбором пользователя. Ej:

<form action="" method="post">
    <label><input name="fields[]" type="checkbox" value="name"> Username</label>
    <label><input name="fields[]" type="checkbox" value="birthdate"> Birthdate</label>
</form>

А затем на стороне сервера создайте запрос к базе данных.

$sql = "SELECT `". implode("`, `", $_POST["fields"]) ."` FROM db_table";

Надеюсь, эта помощь.

...