Hallo bin noch neu hier aufm board aber hab nen kniffliges vielleicht auch stink einfaches problem wo ich nid wirklich draufkomm nach langem knobeln und internet durchstoebern..
ich hoffe ihr koennt mir helfen =)
ausgangslage: ich habe ein file in dem ich MySQL inhalt aus ner datenbank auslese, daraus ne tabelle aufbaue und anzeige. in der Tabelle hat es links die nen download starten sollen.
wenn ich auf einen der links clicke ruft sich das php selbst nochmal auf aber diesmal mit einem argument welches dann dazu fuehrt dass er die download funktion aufruft (am ende des php)
im vorfeld klaert das php noch ab wenn ein link angeklickt wurde und updated die "anzahl" downloads in der tabelle und gibt dann die aktualisierte tabelle (mit den neuen anzahl downloads) aus.
Problem:
wenn ich nun einen link anklicke, dann sollte er folgendes tun (meiner logik nach) er sollte das uebergebene argument pruefen (in diesem fall die download_id) wenn sie vorhanden ist, die tabelle (mysql) aktualisieren, aktualisiert ausgeben, dann den download starten (weil die ganze bildschirmausgabe steht VOR dem funktionsaufruf).
was er macht, er oeffnet das "safe as" fenster aber er hat die bildschirmausgabe nicht aktualisiert. irgendwie wuergt mir meine funktion den restlichen seitenaufbau ab. wenn ich dann jedoch das php nochmal von hand aktualisiere im browser (rechtsklick aktualisieren), dann kommt die richtige ausgabe auf dem bildschirm...
was mach ich falsch oder was ist falsch ? =)
hier meine funktion. denn es scheint mir als ob es an der funktion liegen wuerde. wenn ich das download script ausklammere, dann funktioniert das ganze wunderpraechtig nur leider ohne download *sigh*
Greets
Thom aus der Schweiz
Code:
function download_file($fileName) {
$fileDir = "./cape_tracks";
$fileString=$fileDir.'/'.$fileName;
if (strstr($_SERVER['HTTP_USER_AGENT'], "MSIE")){
$fileName = preg_replace('/\./', '%2e', $fileName, substr_count($fileName, '.') - 1);
}
if(!$fdl=@fopen($fileString,'r')){
die("Cannot Open File!");
} else {
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"".$fileName."\"");
header("Content-length:".(string)(filesize($fileString)));
fpassthru($fdl);
}
}