2016-08-14 4 views
0

Ich habe den Code geschrieben, so Benutzer kann "Client Name" in der ersten Dropdown-Menü und wählen Sie "Tag" und klicken Sie auf Senden.Kann CSV als OutPut nicht erhalten - PHP

Wenn der Benutzer auf Senden klickt, wird eine CSV-Datei mit den Werten ausgegeben, die den beiden ausgewählten Kriterien entsprechen.

Ich kann die CSV nicht als Ausgabe erhalten. Ich denke, ich habe etwas falsch gemacht, während ich Werte weitergegeben habe. Bitte helfen Sie.

Der Kodex auf Startseite ist:

<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> 

Der Kodex auf get_CSV.php ist:

<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> 

Antwort

1

Sie senden nie die CSV-Datei, sollten Sie etwas tun in der Art wie das an einem bestimmten Punkt:

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

Ich versuche herauszufinden, wie man das herunterlädt, danke für die Gesprächszeit, um den Code zu überprüfen. –

0

ich den Code für die Funktion, die

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

Ich änderte auch den Code CSV-Datei zu generieren. Der Code, der für mich arbeitete, ist: –

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> 
passe geändert