2016-08-14 4 views
0

코드를 작성 했으므로 사용자는 첫 번째 드롭 다운에서 "클라이언트 이름"을 선택하고 "태그"를 선택하고 제출을 클릭하십시오.OutPut으로 CSV를 가져올 수 없습니다 - PHP

사용자가 제출을 클릭하면 선택한 두 기준과 일치하는 값으로 CSV 파일이 출력됩니다.

출력으로 CSV를 가져올 수 없습니다. 나는 값을 전달하는 동안 내가 잘못한 것을했다고 생각한다. 도와주세요.

메인 페이지의 코드는 다음과 같습니다

<html> 
<head> 
</head><?php include "connection.php"; ?> 
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.0/jquery.js"></script> 
<script> 
function getTag(val) 
{ 

    $.ajax({ 
     type: "POST", 
     url: "get_tag.php", 
     data: "ClientID="+val, 
     success: function(data){ 

      $("#Tag_List").html(data); 
     } 

    }); 
} 

function getCSV() 
{ 
var e = document.getElementById("Client-list"); 
var strClient = e.options[e.selectedIndex].value; 
var f = document.getElementById("Tag_List"); 
var strTag = f.options[f.selectedIndex].text; 
$.ajax({ 
     type: "POST", 
     url: "get_CSV.php", 
     data: "ClientID="+strClient + "Tag="+strTag, 
     success: function(){ 

      window.console.log('Successful'); 
      return false; 
     } 

    }); 
} 
</script> 
<body> 
<form> 
<label> Select Client Name </label> 
<Select id="Client-list" onChange="getTag(this.value)"> 
<option value="">Select Client</option> 
<?php 
$sql=" SELECT * FROM CLIENTDETAILS"; 
$result = $dbhandle->query($sql); 
while ($rs=$result->fetch_assoc()){ 
?> 
    <option value=" <?php echo $rs["ClientID"]; ?> "> <?php echo $rs["ClientName"] ?> </option> 
    <?php 
} ?> 
</Select> 
<label> Tag Name: </label> 
<Select id="Tag_List"> 
<option value=""> Select Tag</option> 
</Select> 
<button value="submit" onClick="return getCSV();">Submit</button> 
</form> 
</body> 
</head> 
</html> 

get_CSV.php의 코드는 다음과 같습니다

<html> 
<?php 

define("HOSTNAME","localhost"); 
define("USERNAME","root"); 
define("PASSWORD",""); 
define("DATABASE","mydb"); 

$con=new mysqli(HOSTNAME,USERNAME,PASSWORD,DATABASE) or die("Unable to connect"); 

$query="SELECT * FROM listdetails WHERE ClientID='".$_POST["ClientID"]."' AND Tag='".$_POST["Tag"]."';" 

$result = mysqli_query($con, $query); 
$row = mysqli_fetch_array($result, MYSQLI_ASSOC); 

$fp = fopen('file.csv', 'w'); 

foreach ($row as $val) { 
    fputcsv($fp, $val); 
} 

fclose($fp); 


?> 

</html> 

답변

1

당신은 csv 파일을 절대 보내지 마십시오. 어떤 점에서 그런 식으로 :

header('Content-Type: application/csv'); 
header('Content-Disposition: attachement; filename="filename.csv"'); 
echo file_get_contents('file.csv'); exit(); 
+0

이 코드를 다운로드 할 수있는 방법을 알아 내려고합니다. 코드를 확인해 주셔서 감사드립니다. –

0

내가

function getCSV() 
{ 
//alert("Working"); 
var e = document.getElementById("Client-list"); 
var ClientID = e.options[e.selectedIndex].value; 
var f = document.getElementById("Tag_List"); 
var strTag = f.options[f.selectedIndex].text; 
$.post('get_CSV2.php',{postname:ClientID , posttag:strTag}, 
+0

나는 CSV 파일을 생성하도록 코드도 변경했다. 나를 위해 일한 코드는 다음과 같습니다. –

0
<html> 
<?php 
include "connection.php"; 
$cli =$_POST['postname']; 
$tli =$_POST['postage']; 
//this could not be the best way to prevent SQL Injection , but it may help if you are new to, php like me:) 
$cid= substr($cli, 0, strpos($cli, ';')); 
$con = mysql_connect('localhost', 'root', '') or die (mysql_error()); 
$db = mysql_select_db("mydb", $con); 
$filename ='upload/'.strtotime("now").'.csv'; 
$fp= fopen($filename,"w"); 
$query="SELECT * FROM listdetails WHERE ClientID='".$cid."' AND Tag='".$tli."'"; 
$rows = mysql_query($query); 
while ($row = mysql_fetch_assoc($rows)) fputcsv($fp, $row); 
?> 
</html> 
을 패스포트 기능에 대한 코드를 변경
관련 문제