2012-02-08 3 views
0

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

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

$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"; 
} 
+2

да, теперь без дополнительных деталей это все, что вы получаете. –

+0

Да, это возможно. В этом случае вам необходимо сгенерировать конкретные инструкции SQL программно. –

+0

Как я могу сгенерировать SQL-заявление программно? – codingNewbie

ответ

2

Да это. Вы должны сделать форму, в которой пользователь выбирает поля, которые они хотят экспортировать, я думаю в списке флажков, где вы перечисляете все возможные поля базы данных, которые могут получить, а затем создавайте запрос в соответствии с выбором пользователя. 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"; 

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

+0

Когда я попытался использовать это, я получил неизвестный автор столбца в списке полей - ошибка. Кроме того, я использовал этот тип запросов раньше: $ query = sprintf ("select x from y"); – codingNewbie

+0

это не работает :( – codingNewbie

+0

ОК он работает: D: D спасибо !! – codingNewbie

Смежные вопросы