• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

SELECT als CSV-Datei anbieten

PHP:
<?PHP
$list = array();

$sql = mysql_query("SELECT * FROM ava_kunden WHERE orga='$orga' $agentx $statusx AND eintrag BETWEEN '$von' AND '$bis' ORDER BY eintrag DESC");
while($row = mysql_fetch_array($sql))
{
if($row['status']=="1"){$status="Bearbeitung";}
if($row['status']=="2"){$status="OK";}
if($row['status']=="3"){$status="Storno";}
if($row['status']=="4"){$status="Dublette";}
array_push($list, "'".$row['knr'].",".$row['vname'].",".$row['nname'].",".$row['eintrag'].",".$status.",".$row['agent']."'");
}
$file="csv_file.csv";
$f = implode("\n", $list);
header('Content-Type: application/x-download');
header('Content-Length: ' . strlen($f));
header('Content-Disposition: attachment; filename="'.$file.'"');
header('Cache-Control: private, max-age=0, must-revalidate');
echo $f;
?>
 
Danke, kommt der Sache schon näher, aber der packt trotzdem den jeweiligen datensatz in eine zelle, ich meinte, dass der die $knr in eine zelle, der $vname in eine Zelle usw.
 
Kann man den Befehl nicht mitschicken, Leute die davon keine Ahnung haben stehn doch dann da wien Ochs vorm Berg
 
Hab die jetzt mit Simikolon unterteilt, das erkennt Excel anscheinend automatisch, funktioniert auf jeden Fall ;)
 
Bei meinem Excel ist das Semikolon ";" der Standard-Separator. Kann aber von Betriebssystem zu Betriessystem variieren (glaub' ich).

PS: Diesen Befehl kannst du nicht einbauen.
 
Hab mal gegooglet, also semikolon ist betriebssystemunabhängig beim ms-excel als standartseperator eingestellt. PASST
 
Wie sieht denn die ganze Geschichte aus, wenn ich daten via CSV über einen upload in die DB importieren will? muss ich dann nur den befehl ändern und das CSV in das array laden?
 
Hab mal gegooglet, also semikolon ist betriebssystemunabhängig beim ms-excel als standartseperator eingestellt. PASST
Syntax Error...

Openoffice verwendet standardmäßig das Komma, was man bei CSV auch erwarten würde. [Edit]sonst müßte es ja SSV heißen, aber das war wohl schon belegt...[/Edit]

Wie sieht denn die ganze Geschichte aus, wenn ich daten via CSV über einen upload in die DB importieren will? muss ich dann nur den befehl ändern und das CSV in das array laden?
Warum nicht phpMyAdmin?
 
weil ich ja schlecht meinen mitarbeitern das myphpadmin system erklären will, außerdem lass ich doch keinen an meine datenbank, bin doch nicht irre. Je die sollen ne CSV fertig machen, mit allen kunden gelistet und dann soll dat in die entsprechende DB ala INSERT
 
weil ich ja schlecht meinen mitarbeitern das myphpadmin system erklären will, außerdem lass ich doch keinen an meine datenbank, bin doch nicht irre. Je die sollen ne CSV fertig machen, mit allen kunden gelistet und dann soll dat in die entsprechende DB ala INSERT
Dann dürfen Deine User auch ned an die "entsprechende DB" ran.
 
Nunja, via csv-upload schon, wird ja vor dem INSERT geprüft, was für ein schwachsinn er hochladen will
 
Dann mußt du dir wohl ein Script schreiben dass eine csv-Datei öffnet und die Daten in ein SQL-Statement umwandelt. Interessante Befehle wären da file und explode.
Wenn du allerdings Benutzer für deine Datenbank anlegen kannst (geht auch über PHPMyAdmin) könntest du einen Benutzer anlegen der nur die nötigen Rechte auf den nötigen Tabellen bekommt (zb Insert/Update/Delete)
Wenn möglich würde ich letztere Lösung vorziehen, weil dir dann niemand mit bösen Daten kommen kann, die deine DB zerschießen (SQL-Injection noch einfacher gemacht)
 
ja die benutzer haben schon unterschiedliche rechte und nur die es dürfen können die CSV-Upload Page betreten, das später sicher in die Datendank zu bekommen ist nicht das Problem, vielmehr die Daten aus der CSV zu lesen!
 
ja die benutzer haben schon unterschiedliche rechte und nur die es dürfen können die CSV-Upload Page betreten, das später sicher in die Datendank zu bekommen ist nicht das Problem, vielmehr die Daten aus der CSV zu lesen!
Im PHP Manual zu fputcsv (dort wo Du Deinen Originalcode aus #1 herhast) steht ein "see also". Also sieh mal.
 
So ich brauch zu dem Thema nochmal eure Hilfe - Code sieht so aus:
PHP:
<?php
include ('../../config.php');
$list = array();
$sql = mysql_query("SELECT * FROM ava_agents WHERE orga='$orga' ORDER BY anr") OR die(mysql_error());
while($row = mysql_fetch_array($sql))
{
$agent = $row['anr']."] ".$row['vname']." ".$row['nname']."";
$gesamt = mysql_result(mysql_query("SELECT COUNT(*) as Num FROM ava_kunden WHERE orga='$orga' AND agent='$agent' AND eintrag BETWEEN '$von' AND '$bis'"),0);
$bearbeitung = mysql_result(mysql_query("SELECT COUNT(*) as Num FROM ava_kunden WHERE orga='$orga' AND agent='$agent' AND status='1' AND eintrag BETWEEN '$von' AND '$bis'"),0);
if($gesamt>="1"){$quote_bearbeitung = (100/$gesamt)*$bearbeitung;}
$ok = mysql_result(mysql_query("SELECT COUNT(*) as Num FROM ava_kunden WHERE orga='$orga' AND agent='$agent' AND status='2' AND eintrag BETWEEN '$von' AND '$bis'"),0);
if($gesamt>="1"){$quote_ok = (100/$gesamt)*$ok;}
$storno = mysql_result(mysql_query("SELECT COUNT(*) as Num FROM ava_kunden WHERE orga='$orga' AND agent='$agent' AND status='3' AND eintrag BETWEEN '$von' AND '$bis'"),0);
if($gesamt>="1"){$quote_storno = (100/$gesamt)*$storno;}
$dublette = mysql_result(mysql_query("SELECT COUNT(*) as Num FROM ava_kunden WHERE orga='$orga' AND agent='$agent' AND status='4' AND eintrag BETWEEN '$von' AND '$bis'"),0);
if($gesamt>="1"){$quote_dublette = (100/$gesamt)*$dublette;}
$blacklist = mysql_result(mysql_query("SELECT COUNT(*) as Num FROM ava_kunden WHERE orga='$orga' AND agent='$agent' AND status='5' AND eintrag BETWEEN '$von' AND '$bis'"),0);
if($gesamt>="1"){$quote_blacklist = (100/$gesamt)*$blacklist;}
if($gesamt!="0"){
array_push($list, "".$agent.";".$bearbeitung.";".$ok.";".$storno.";".$dublette.";".$blacklist."");
}
}
$file="$date"."_Agentenstatistik_"."$von"."_"."$bis".".csv";
$f = implode("\n", $list);
header('Content-Type: application/x-download');
header('Content-Length: ' . strlen($f));
header('Content-Disposition: attachment; filename="'.$file.'"');
header('Cache-Control: private, max-age=0, must-revalidate');
echo $f;
?>

Jetzt brauche ich aber über den Spalten die entsprechende Headline

PHP:
<?php
include ('../../config.php');
$headline = "AGENT;BEARBEITUNG;OK;STORNO;DUBLETTEN;BLACKLIST";
$list = $headline.array();
$sql = mysql_query("SELECT * FROM ava_agents WHERE orga='$orga' ORDER BY anr") OR die(mysql_error());
while($row = mysql_fetch_array($sql))
{
$agent = $row['anr']."] ".$row['vname']." ".$row['nname']."";
$gesamt = mysql_result(mysql_query("SELECT COUNT(*) as Num FROM ava_kunden WHERE orga='$orga' AND agent='$agent' AND eintrag BETWEEN '$von' AND '$bis'"),0);
$bearbeitung = mysql_result(mysql_query("SELECT COUNT(*) as Num FROM ava_kunden WHERE orga='$orga' AND agent='$agent' AND status='1' AND eintrag BETWEEN '$von' AND '$bis'"),0);
if($gesamt>="1"){$quote_bearbeitung = (100/$gesamt)*$bearbeitung;}
$ok = mysql_result(mysql_query("SELECT COUNT(*) as Num FROM ava_kunden WHERE orga='$orga' AND agent='$agent' AND status='2' AND eintrag BETWEEN '$von' AND '$bis'"),0);
if($gesamt>="1"){$quote_ok = (100/$gesamt)*$ok;}
$storno = mysql_result(mysql_query("SELECT COUNT(*) as Num FROM ava_kunden WHERE orga='$orga' AND agent='$agent' AND status='3' AND eintrag BETWEEN '$von' AND '$bis'"),0);
if($gesamt>="1"){$quote_storno = (100/$gesamt)*$storno;}
$dublette = mysql_result(mysql_query("SELECT COUNT(*) as Num FROM ava_kunden WHERE orga='$orga' AND agent='$agent' AND status='4' AND eintrag BETWEEN '$von' AND '$bis'"),0);
if($gesamt>="1"){$quote_dublette = (100/$gesamt)*$dublette;}
$blacklist = mysql_result(mysql_query("SELECT COUNT(*) as Num FROM ava_kunden WHERE orga='$orga' AND agent='$agent' AND status='5' AND eintrag BETWEEN '$von' AND '$bis'"),0);
if($gesamt>="1"){$quote_blacklist = (100/$gesamt)*$blacklist;}
if($gesamt!="0"){
array_push($list, "".$agent.";".$bearbeitung.";".$ok.";".$storno.";".$dublette.";".$blacklist."");
}
}
$file="$date"."_Agentenstatistik_"."$von"."_"."$bis".".csv";
$f = implode("\n", $list);
header('Content-Type: application/x-download');
header('Content-Length: ' . strlen($f));
header('Content-Disposition: attachment; filename="'.$file.'"');
header('Cache-Control: private, max-age=0, must-revalidate');
echo $f;
?>

Dat funzt aber nicht. was mach ich falsch?
 
Oberer funzt ja
liegt wohl am
PHP:
$headline = "AGENT;BEARBEITUNG;OK;STORNO;DUBLETTEN;BLACKLIST";
aber ich unterteile ja hier auch mit Simikoln, genau wie im array
 
Zurück
Oben