# CSV auslesen ohne erste + zweite zeille?



## gixnetwork (14. September 2014)

Hallo

Arbeite zum ersten mal mit csv daten, hab minimale grundkentnisse von html, php, sql, css, xml

Habe 2 Funktionierende scripts in php geschrieben.

1. zeigt alle daten aus dem csv:

```
<?php
$datei = fopen("ws_newdata.csv", "r");
$daten = fgetcsv($datei, 1000);

while ($daten) {
    echo implode(" ", $daten) . "<br>";
    $daten = fgetcsv($datei, 1000);
}

?>
```

2. zeigt die ersten 5 zeilen daten aus dem csv:

```
<?php
$handle = fopen('ws_newdata.csv', 'r');
$i = 0;

while (($data = fgetcsv($handle, 30000, ';')) && $i < 5){
    echo "$data[0]<br />$data[1]<br />\n";
    $i ++;
}

fclose($handle);
?>
```

Link zur ws_newdata.csv http://wetter-erzenholz.ch/wswin/test/ws_newdata.csv

1.- Wie kann ich CSV auslesen ohne die erste + zweite zeille?

2.- Könnte mir bitte jemand einen tip geben wie ich zb. alle zeillen mit dem wert "jahr" 2013 auslesen und ausgeben kann?
(für wetter charts ohne sql)

danke Manuel


----------



## saftmeister (14. September 2014)

Hallo Manuel,

zu 1: du hast bereits einen Zähler in deiner Schleife. Den könntest du dafür verwenden, die Zeilen 0 und 1 zu überspringen. Dafür gibt es das Keyword continue. Zu dem müsstest du dann deine Schleifen-Bedingung etwas anpassen:


```
<?php
$handle = fopen('ws_newdata.csv', 'r');
$i = 0;
while (($data = fgetcsv($handle, 30000, ';')) && $i < 7){
  if($i == 0 || $i == 1)
  {
    $i++;
    continue;
  }
  echo "$data[0]<br />$data[1]<br />\n";
  $i++;
}
fclose($handle);
?>
```

Zu 2: Die URL der CSV-Datei geht ins 404-Nirvana. Daher kann ich nichts über die Struktur in Erfahrung bringen und nur diesen Rat geben:


```
<?php
$handle = fopen('ws_newdata.csv', 'r');
$i = 0;
while (($data = fgetcsv($handle, 30000, ';'))){
  // Überspringe Zeile 1 und 2 (wir fangen bei 0 an zu zählen)
  if($i == 0 || $i == 1)
  {
    $i++;
    continue;
  }
  // Hier muss eine Prüfung auf die entsprechende Spalte stattfinden, welche die Jahreszahl enthält:
  if( $data[ SETZE_SPALTEN_NUMMER_MIT_JAHRESZAHL ] == 2013)
  {
    echo "$data[0]<br />$data[1]<br />\n";
  }
  $i++;
}
fclose($handle);
?>
```


PS: Bitte zukünftig die Code-Tags für PHP verwenden [code=php]...[/code]. Danke.


----------



## gixnetwork (14. September 2014)

Auschnitt aus csv: http://wetter-erzenholz.ch/wswin/test/ws_newdata.csv  (die url bitte das letzte v löschen oder copy paste)

Datum Zeit Temp. I. Temp. A. Temp. Wind UV X Diff Temp. Feuchte I. Feuchte A. Luftdruck Regen Wind Richtung UV Taupunkt Windchill Windböen
C C C UV-I C % % hPa l/m² km/h UV-I C C km/h
28.04.2013 20:04 22.5 12.2 11.5 10.2 0.0 0.0 41 65 1013.3 0.000 0.0 112 0.0 5.8 12.2 0.0 2
28.04.2013 20:09 22.6 12.2 11.5 10.2 0.0 0.0 42 65 1013.3 0.000 0.0 112 0.0 5.8 12.2 0.0 2
28.04.2013 20:14 22.7 12.2 11.5 10.1 0.0 0.0 44 65 1013.3 0.000 0.0 112 0.0 5.8 12.2 0.0 2
28.04.2013 20:19 22.8 12.2 11.5 10.0 0.0 0.0 45 66 1013.3 0.000 0.0 112 0.0 6.0 12.2 0.0 2
28.04.2013 20:24 22.8 12.2 11.4 9.9 0.0 0.0 47 65 1013.2 0.000 0.0 112 0.0 5.8 12.2 0.0 2
28.04.2013 20:29 22.9 12.1 11.4 9.9 0.0 0.0 47 65 1013.2 0.000 0.0 112 0.0 5.7 12.1 0.0 2
28.04.2013 20:34 23.0 12.1 11.3 9.8 0.0 0.0 48 65 1013.2 0.000 0.0 90 0.0 5.7 12.1 0.0 2
28.04.2013 20:39 23.1 12.1 11.3 9.8 0.0 0.0 49 65 1013.2 0.000 0.0 112 0.0 5.7 12.1 0.0 2
28.04.2013 20:44 23.2 12.1 11.3 9.8 0.0 0.0 50 65 1013.4 0.000 0.0 112 0.0 5.7 12.1 0.0 2
........ usw

spalte1=datum(28.04.2013)   spalte2=zeit(20:44)

um die jahres, monats wochen daten in eine grafik einzubauen muss ich jergend wie einen bestimten zeitraum auslesen /ausgeben.

BESTEN DANK Saftmeister hast mir bereits sehr geholfen

Das ist meine funktionierende datei für mysql.
das baue ich nun um zum csv auslesen.


```
<html>
<head>
</style>
    <link href="../css/datepicker.css" rel="stylesheet">
    <script src="../js/jquery-1.js"></script>
    <script src="../js/jquery-custom.js"></script>
<script type="text/javascript">
jQuery(function($){
        $.datepicker.regional['de'] = {clearText: 'löschen', clearStatus: 'aktuelles Datum löschen',
                closeText: 'schließen', closeStatus: 'ohne Änderungen schließen',
                prevText: '<zurück', prevStatus: 'letzten Monat zeigen',
                nextText: 'Vor>', nextStatus: 'nächsten Monat zeigen',
                currentText: 'heute', currentStatus: '',
                monthNames: ['Januar','Februar','März','April','Mai','Juni',
                'Juli','August','September','Oktober','November','Dezember'],
                monthNamesShort: ['Januar','Februar','März','April','Mai','Juni',
                'Juli','August','September','Oktober','November','Dezember'],
                monthStatus: 'anderen Monat anzeigen', yearStatus: 'anderes Jahr anzeigen',
                weekHeader: 'Wo', weekStatus: 'Woche des Monats',
                dayNames: ['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'],
                dayNamesShort: ['So','Mo','Di','Mi','Do','Fr','Sa'],
                dayNamesMin: ['So','Mo','Di','Mi','Do','Fr','Sa'],
                dayStatus: 'Setze DD als ersten Wochentag', dateStatus: 'Wähle D, M d',
                dateFormat: 'dd.mm.yy', firstDay: 1,
                initStatus: 'Wähle ein Datum', isRTL: false};
        $.datepicker.setDefaults($.datepicker.regional['de']);
});  

$(function(){
        var pickerOpts = {
            maxDate: "+0",
            minDate: new Date(2014, 1 - 1, 1),
            dateFormat: "yy-mm-dd",
            showOtherMonths: true
        }; 
        $("#datepick").datepicker(pickerOpts);
    });
</script>
<script src="../js/amcharts.js" type="text/javascript"></script>  
<script type="text/javascript">

var chart;
var chartData = [

<?php

include("../db1.php");

$tableName = "wettertabelle";

$param_datum = $_GET["datum"];

$query = "SELECT dateid, date, time, temp, feucht, luftdruck, SUM(regen), wind, winddir, windb, windchill, uv, solar, SUM(sonne), sonnetag, nullg FROM $tableName WHERE date = '$param_datum' GROUP BY dateid ORDER BY dateid ";
$result = mysql_query($query);

$linecounter = 1;
$regenmesser = 0;
$sonnesum = 0;
while($row = mysql_fetch_array($result))
{
    $DATETOSPLIT = $row['date'];
    $TIMETOSPLIT = $row['time'];
    list ($jahr, $monat, $tag) = split('[/.-]', $DATETOSPLIT);
    list ($stunde, $minute) = split('[:]', $TIMETOSPLIT);

$regenmesser = $regenmesser + $row['SUM(regen)'];
$sonnesum = $sonnesum + $row['SUM(sonne)'];
$monat = $monat -1;

    if ($linecounter == 1){
    echo "{date: new Date($jahr, $monat, $tag, $stunde, $minute, 0, 0), val1:".$row['temp'].", val5:".$row['feucht'].", val9:".$row['luftdruck'].", val13:".$regenmesser.", val14:".$row['wind'].", val17:".$row['winddir'].", val19:".$row['windb'].", val20:".$row['windchill'].", val21:".$row['uv'].", val22:".$row['solar'].", val23:".$sonnesum.", val24:".$row['sonnetag'].", val25:".$row['nullg']."}";
    }
    else{
    echo ",\n{date: new Date($jahr, $monat, $tag, $stunde, $minute, 0, 0), val1:".$row['temp'].", val5:".$row['feucht'].", val9:".$row['luftdruck'].", val13:".$regenmesser.", val14:".$row['wind'].", val17:".$row['winddir'].", val19:".$row['windb'].", val20:".$row['windchill'].", val21:".$row['uv'].", val22:".$row['solar'].", val23:".$sonnesum.", val24:".$row['sonnetag'].", val25:".$row['nullg']."}";
    }
   
   
$linecounter++;

}
?>

];


AmCharts.ready(function () {

// NEW SERIAL CHART
chart = new AmCharts.AmSerialChart();
chart.pathToImages = "../gif/";
chart.marginRight = 0;
chart.marginTop = -20;
chart.fontSize    = 12;
chart.startDuration = 0.3;
chart.zoomOutButton = {
backgroundColor: "#000000",
backgroundAlpha: 0.15
};

chart.dataProvider = chartData;
chart.categoryField = "date";

// AXES CATEGORY

var categoryAxis = chart.categoryAxis;
categoryAxis.parseDates = true;
categoryAxis.position = "top";
categoryAxis.minPeriod = "mm";            
categoryAxis.gridAlpha = 0.3;
categoryAxis.gridPosition = "middle";
categoryAxis.axisColor = "#000000";

// AXES VALUES



// Sonnetag value axis
var valueAxisSonnetag = new AmCharts.ValueAxis();
valueAxisSonnetag.offset = 192;
valueAxisSonnetag.minMaxMultiplier = 1.2;
valueAxisSonnetag.position = "right";
valueAxisSonnetag.fontSize = 9;
valueAxisSonnetag.axisColor = "#FFFF00";
valueAxisSonnetag.color = "#000000";
valueAxisSonnetag.gridAlpha = 0;
valueAxisSonnetag.integersOnly = true;
valueAxisSonnetag.gridCount = 3;
chart.addValueAxis(valueAxisSonnetag);

// Sonne value axis
var valueAxisSonne = new AmCharts.ValueAxis();
valueAxisSonne.offset = 167;
valueAxisSonne.minMaxMultiplier = 1.2;
valueAxisSonne.minimum = 0;
valueAxisSonne.position = "right";
valueAxisSonne.fontSize    = 9;
valueAxisSonne.axisColor = "#EEE906";
valueAxisSonne.color = "#000000";
valueAxisSonne.gridAlpha = 0;
valueAxisSonne.integersOnly = true;
valueAxisSonne.gridCount = 3;
chart.addValueAxis(valueAxisSonne);

// Solar value axis
var valueAxisSolar = new AmCharts.ValueAxis();
valueAxisSolar.offset = 80;
valueAxisSolar.minMaxMultiplier = 1.2;
valueAxisSolar.minimum = 0;
valueAxisSolar.position = "right";
valueAxisSolar.fontSize    = 9;
valueAxisSolar.axisColor = "#FA1FF4";
valueAxisSolar.color = "#000000";
valueAxisSolar.gridAlpha = 0;
valueAxisSolar.integersOnly = true;
valueAxisSolar.gridCount = 3;
chart.addValueAxis(valueAxisSolar);

// Uv value axis
var valueAxisUv = new AmCharts.ValueAxis();
valueAxisUv.offset = 108;
valueAxisUv.minMaxMultiplier = 1.2;
valueAxisUv.minimum = 0;
valueAxisUv.position = "right";
valueAxisUv.fontSize = 9;
valueAxisUv.axisColor = "#FF9866";
valueAxisUv.color = "#000000";
valueAxisUv.gridAlpha = 0;
valueAxisUv.integersOnly = true;
valueAxisUv.gridCount = 3;
chart.addValueAxis(valueAxisUv);

// Nullg value axis
var valueAxisNullg = new AmCharts.ValueAxis();
valueAxisNullg.offset = 93;
valueAxisNullg.minMaxMultiplier = 1.2;
valueAxisNullg.position = "left";
valueAxisNullg.fontSize    = 9;
valueAxisNullg.axisColor = "#999999";
valueAxisNullg.color = "#000000";
valueAxisNullg.gridAlpha = 0;
valueAxisNullg.integersOnly = true;
valueAxisNullg.gridCount = 3;
chart.addValueAxis(valueAxisNullg);

// Rain value axis
var valueAxisRain = new AmCharts.ValueAxis();
valueAxisRain.offset = 64;
valueAxisRain.minMaxMultiplier = 1.2;
valueAxisRain.minimum = 0;
valueAxisRain.position = "left";
valueAxisRain.fontSize    = 9;
valueAxisRain.axisColor = "#0033FF";
valueAxisRain.color = "#000000";
valueAxisRain.gridAlpha = 0;
valueAxisRain.integersOnly = true;
valueAxisRain.gridCount = 3;
chart.addValueAxis(valueAxisRain);

// Luftdruck value axis
var valueAxisLuftdruck = new AmCharts.ValueAxis();
valueAxisLuftdruck.offset = 32;
valueAxisLuftdruck.minMaxMultiplier = 1.2;
valueAxisLuftdruck.position = "right";
valueAxisLuftdruck.fontSize = 9;
valueAxisLuftdruck.axisColor = "#808040";
valueAxisLuftdruck.color = "#000000";
valueAxisLuftdruck.gridAlpha = 0;
valueAxisLuftdruck.integersOnly = true;
valueAxisLuftdruck.gridCount = 3;
chart.addValueAxis(valueAxisLuftdruck);

// Winddir value axis
var valueAxisWinddir = new AmCharts.ValueAxis();
valueAxisWinddir.offset = 1;
valueAxisWinddir.maximum = 360;
valueAxisWinddir.minimum = 0;
valueAxisWinddir.position = "left";
valueAxisWinddir.fontSize = 1;
valueAxisWinddir.axisColor = "#FFFFFF";
valueAxisWinddir.color = "#FFFFFF";
valueAxisWinddir.gridAlpha = 0;
valueAxisWinddir.integersOnly = true;
valueAxisWinddir.gridCount = 3;
chart.addValueAxis(valueAxisWinddir);

// Wind value axis
var valueAxisWind = new AmCharts.ValueAxis();
valueAxisWind.offset = 2;
valueAxisWind.minMaxMultiplier = 1.2;
valueAxisWind.minimum = 0;
valueAxisWind.position = "right";
valueAxisWind.fontSize    = 9;
valueAxisWind.axisColor = "#006600";
valueAxisWind.color = "#000000";
valueAxisWind.gridAlpha = 0;
valueAxisWind.integersOnly = true;
valueAxisWind.gridCount = 3;
chart.addValueAxis(valueAxisWind);

// Feucht value axis
var valueAxisFeucht = new AmCharts.ValueAxis();
valueAxisFeucht.offset = 26;
valueAxisFeucht.maximum = 100;
valueAxisFeucht.minimum = 0;
valueAxisFeucht.position = "left";
valueAxisFeucht.fontSize = 9;
valueAxisFeucht.axisColor = "#75E3FF";
valueAxisFeucht.color = "#000000";
valueAxisFeucht.gridAlpha = 0;
valueAxisFeucht.integersOnly = true;
valueAxisFeucht.gridCount = 3;
chart.addValueAxis(valueAxisFeucht);

// temp value axis
var valueAxisTemp = new AmCharts.ValueAxis();
valueAxisTemp.offset = -1;
valueAxisTemp.minMaxMultiplier = 1.2;
valueAxisTemp.position = "left";
valueAxisTemp.fontSize    = 9;
valueAxisTemp.axisColor = "#FF0000";
valueAxisTemp.color = "#000000";
valueAxisTemp.fillAlpha = 0.4;
valueAxisTemp.fillColor = "#F2F2F2";
valueAxisTemp.gridAlpha = 0;
valueAxisTemp.integersOnly = true;
valueAxisTemp.gridCount = 3;
chart.addValueAxis(valueAxisTemp);


// GRAPHS --------------------------------------------------




// GRAPH Sonnetag
var graphSonnetag = new AmCharts.AmGraph();
graphSonnetag.valueAxis = valueAxisSonnetag;
graphSonnetag.type = "line";
graphSonnetag.title = "Sonnenschein h/Tag";
graphSonnetag.valueField = "val24";
graphSonnetag.lineThickness = 1.4;
graphSonnetag.balloonText = "[[val24]] h/Tag]";
graphSonnetag.lineAlpha = 1;
graphSonnetag.lineColor = "#FFFF00";
graphSonnetag.fillAlphas = 0;
chart.addGraph(graphSonnetag);

// GRAPH Sonne
var graphSonne = new AmCharts.AmGraph();
graphSonne.valueAxis = valueAxisSonne;
graphSonne.type = "line";
graphSonne.title = "Sonnenschein min.";
graphSonne.valueField = "val23";
graphSonne.lineThickness = 1.4;
graphSonne.balloonText = "[[val23]] min.";
graphSonne.lineAlpha = 1;
graphSonne.lineColor = "#EEE906";
graphSonne.fillAlphas = 0;
chart.addGraph(graphSonne);

// GRAPH Solar
var graphSolar = new AmCharts.AmGraph();
graphSolar.valueAxis = valueAxisSolar;
graphSolar.type = "line";
graphSolar.title = "Solar w/m2";
graphSolar.valueField = "val22";
graphSolar.lineThickness = 1.4;
graphSolar.balloonText = "[[val22]] w/m2";
graphSolar.lineAlpha = 1;
graphSolar.lineColor = "#FA1FF4";
graphSolar.fillAlphas = 0;
chart.addGraph(graphSolar);

// GRAPH Uv
var graphUv = new AmCharts.AmGraph();
graphUv.valueAxis = valueAxisUv;
graphUv.type = "line";
graphUv.title = "UV";
graphUv.valueField = "val21";
graphUv.lineThickness = 1.4;
graphUv.balloonText = "[[val21]] UV";
graphUv.lineAlpha = 1;
graphUv.lineColor = "#FF9866";
graphUv.fillAlphas = 0;
chart.addGraph(graphUv);

// GRAPH Nullg
var graphNullg = new AmCharts.AmGraph();
graphNullg.valueAxis = valueAxisNullg;
graphNullg.type = "line";
graphNullg.title = "Schneefallgrenze M.ü.m";
graphNullg.valueField = "val25";
graphNullg.lineThickness = 1.4;
graphNullg.balloonText = "[[val25]] M.ü.m";
graphNullg.lineAlpha = 1;
graphNullg.lineColor = "#999999";
graphNullg.fillAlphas = 0;
chart.addGraph(graphNullg);

// GRAPH Rain
var graphRain = new AmCharts.AmGraph();
graphRain.valueAxis = valueAxisRain;
graphRain.type = "line";
graphRain.title = "Regen im Tag l/m";
graphRain.valueField = "val13";
graphRain.lineThickness = 1.4;
graphRain.balloonText = "[[val13]] l/m";
graphRain.lineAlpha = 1;
graphRain.lineColor = "#0033FF";
graphRain.fillAlphas = 0;
chart.addGraph(graphRain);

// GRAPH Luftdruck
var graphLuftdruck = new AmCharts.AmGraph();
graphLuftdruck.valueAxis = valueAxisLuftdruck;
graphLuftdruck.type = "line";
graphLuftdruck.title = "Luftdruck  hPa ";
graphLuftdruck.valueField = "val9";
graphLuftdruck.lineThickness = 1.4;
graphLuftdruck.balloonText = "[[val9]]  hPa ";
graphLuftdruck.lineAlpha = 1;
graphLuftdruck.lineColor = "#808040";
graphLuftdruck.fillAlphas = 0;
chart.addGraph(graphLuftdruck);

// GRAPH Winddir
var graphWinddir = new AmCharts.AmGraph();
graphWinddir.valueAxis = valueAxisWinddir;
graphWinddir.type = "line";
graphWinddir.title = "Windrichtung Dir";
graphWinddir.valueField = "val19";
graphWinddir.lineThickness = 1.4;
graphWinddir.balloonText = "[[val19]] ";
graphWinddir.lineAlpha = 1;
graphWinddir.lineColor = "#CC6699";
graphWinddir.fillAlphas = 0;
chart.addGraph(graphWinddir);

// GRAPH Windb
var graphWindb = new AmCharts.AmGraph();
graphWindb.valueAxis = valueAxisWind;
graphWindb.type = "line";
graphWindb.title = "Windböen km/h";
graphWindb.valueField = "val17";
graphWindb.lineThickness = 1.4;
graphWindb.balloonText = "[[val17]] km/h";
graphWindb.lineAlpha = 1;
graphWindb.lineColor = "#33FF00";
graphWindb.fillAlphas = 0;
chart.addGraph(graphWindb);

// GRAPH Wind
var graphWind = new AmCharts.AmGraph();
graphWind.valueAxis = valueAxisWind;
graphWind.type = "line";
graphWind.title = "Windgeschwindigkeit km/h";
graphWind.valueField = "val14";
graphWind.lineThickness = 1.4;
graphWind.balloonText = "[[val14]] km/h ";
graphWind.lineAlpha = 1;
graphWind.lineColor = "#006600";
graphWind.fillAlphas = 0;
chart.addGraph(graphWind);

// GRAPH Feucht
var graphFeucht = new AmCharts.AmGraph();
graphFeucht.valueAxis = valueAxisFeucht;
graphFeucht.type = "line";
graphFeucht.title = "Feuchtigkeit %";
graphFeucht.valueField = "val5";
graphFeucht.lineThickness = 1.4;
graphFeucht.balloonText = "[[val5]] %";
graphFeucht.lineAlpha = 1;
graphFeucht.lineColor = "#75E3FF";
graphFeucht.fillAlphas = 0;
chart.addGraph(graphFeucht);

// GRAPH Windchill
var graphWindchill = new AmCharts.AmGraph();
graphWindchill.valueAxis = valueAxisTemp;
graphWindchill.type = "line";
graphWindchill.title = "Windchilld C°";
graphWindchill.valueField = "val20";
graphWindchill.lineThickness = 1.4;
graphWindchill.balloonText = "[[val20]] C°";
graphWindchill.lineAlpha = 1;
graphWindchill.lineColor = "#33CC99";
graphWindchill.fillAlphas = 0;
chart.addGraph(graphWindchill);

// GRAPH Temp
var graphTemp = new AmCharts.AmGraph();
graphTemp.valueAxis = valueAxisTemp;
graphTemp.type = "line";
graphTemp.title = "Temperatur C°";
graphTemp.valueField = "val1";
graphTemp.lineThickness = 1.4;
graphTemp.balloonText = "[[val1]] C°";
graphTemp.lineAlpha = 1;
graphTemp.lineColor = "#FF0000";
graphTemp.fillAlphas = 0;
chart.addGraph(graphTemp);



// CURSOR -----------------------------------------
var chartCursor = new AmCharts.ChartCursor();
chartCursor.cursorPosition = "mouse";
chartCursor.categoryBalloonDateFormat = "DD.MM.YYYY - JJ:NN";
chart.addChartCursor(chartCursor);

// LEGEND
var legend = new AmCharts.AmLegend();
legend.position = "top";
legend.reversedOrder = true;
legend.valueWidth = 40;
legend.switchType = "v";
legend.spacing = 5;
chart.addLegend(legend);

// WRITE
chart.write("wetterdiagramm");
});


// zoom (datenbereich verkleinen mit drag n drop)
function zoomChart() {
chart.zoomToIndexes(chartData.length - 40, chartData.length - 1);
}

// amcharts script ende
</script>



</head>
<body>
<div>
<form name="form1" method="get" action="datepicker.php">
<span><input type="text" name="datum" value="Tag Auswählen" id="datepick" /></span>
<input title="Sign In" onClick="imgClick('IEfix1',this.value)" value="Auswählen" src="../gif/pfeil.jpg" alt="[Sign In]" type="image" name="image">
</form>
</div>

<div id="wetterdiagramm" align="center" style="width:1300px; height:650px;"></div>
</body>
</html>
```


----------



## saftmeister (14. September 2014)

Ok, also zunächst, du gibst bei fgetcsv() als Trenner (Delimiter) das Semikolon an, in der CSV-Datei (die im URL übrigens ein v zu viel hinten hat) wird jedoch als Trenner das Komma verwendet. Folgender Code scheint das richtige auszuspucken:


```
<?php
$handle = fopen('http://wetter-erzenholz.ch/wswin/test/ws_newdata.csv', 'r');
$i = 0;
while (($data = fgetcsv($handle, 30000, ','))){
  // Überspringe Zeile 1 und 2 (wir fangen bei 0 an zu zählen)
  if($i == 0 || $i == 1)
  {
  $i++;
  continue;
  }
  list($tag, $monat, $jahr) = explode('.', $data[0]);
  // Hier muss eine Prüfung auf die entsprechende Spalte stattfinden, welche die Jahreszahl enthält:
  if( $jahr == 2013)
  {
  echo "$data[0]<br />$data[1]<br />\n";
  }
  $i++;
}
fclose($handle);
?>
```

Ich habe jedoch noch nicht verstanden, was MySQL jetzt damit zu tun hat. Du kannst nicht mit MySQL eine CSV-Datei auslesen?!?


----------



## gixnetwork (15. September 2014)

Ich benuze mysql für amcharts.
Neu möchte ich amcharts direkt dit CSV "füttern" ohne umwege über mysql.

Das ist die einzige anleitung im Internet um externe daten für amcharts zu laden

http://www.amcharts.com/tutorials/loading-external-data/

Code demofile lineWithDateBasedData.html

```
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>

    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <title>amCharts examples</title>
        <link rel="stylesheet" href="style.css" type="text/css">
        <script src="../amcharts/amcharts.js" type="text/javascript"></script>
        <script src="../amcharts/serial.js" type="text/javascript"></script>
        <script type="text/javascript">
            var chart;
            var chartData = [];
            var chartCursor;



            AmCharts.ready(function () {
                // generate some data first
                generateChartData();

                // SERIAL CHART
                chart = new AmCharts.AmSerialChart();
                chart.pathToImages = "../amcharts/images/";
                chart.dataProvider = chartData;
                chart.categoryField = "date";
                chart.balloon.bulletSize = 5;

                // listen for "dataUpdated" event (fired when chart is rendered) and call zoomChart method when it happens
                chart.addListener("dataUpdated", zoomChart);

                // AXES
                // category
                var categoryAxis = chart.categoryAxis;
                categoryAxis.parseDates = true; // as our data is date-based, we set parseDates to true
                categoryAxis.minPeriod = "DD"; // our data is daily, so we set minPeriod to DD
                categoryAxis.dashLength = 1;
                categoryAxis.minorGridEnabled = true;
                categoryAxis.twoLineMode = true;
                categoryAxis.dateFormats = [{
                    period: 'fff',
                    format: 'JJ:NN:SS'
                }, {
                    period: 'ss',
                    format: 'JJ:NN:SS'
                }, {
                    period: 'mm',
                    format: 'JJ:NN'
                }, {
                    period: 'hh',
                    format: 'JJ:NN'
                }, {
                    period: 'DD',
                    format: 'DD'
                }, {
                    period: 'WW',
                    format: 'DD'
                }, {
                    period: 'MM',
                    format: 'MMM'
                }, {
                    period: 'YYYY',
                    format: 'YYYY'
                }];

                categoryAxis.axisColor = "#DADADA";

                // value
                var valueAxis = new AmCharts.ValueAxis();
                valueAxis.axisAlpha = 0;
                valueAxis.dashLength = 1;
                chart.addValueAxis(valueAxis);

                // GRAPH
                var graph = new AmCharts.AmGraph();
                graph.title = "red line";
                graph.valueField = "visits";
                graph.bullet = "round";
                graph.bulletBorderColor = "#FFFFFF";
                graph.bulletBorderThickness = 2;
                graph.bulletBorderAlpha = 1;
                graph.lineThickness = 2;
                graph.lineColor = "#5fb503";
                graph.negativeLineColor = "#efcc26";
                graph.hideBulletsCount = 50; // this makes the chart to hide bullets when there are more than 50 series in selection
                chart.addGraph(graph);

                // CURSOR
                chartCursor = new AmCharts.ChartCursor();
                chartCursor.cursorPosition = "mouse";
                chartCursor.pan = true; // set it to fals if you want the cursor to work in "select" mode
                chart.addChartCursor(chartCursor);

                // SCROLLBAR
                var chartScrollbar = new AmCharts.ChartScrollbar();
                chart.addChartScrollbar(chartScrollbar);

                chart.creditsPosition = "bottom-right";

                // WRITE
                chart.write("chartdiv");
            });

            // generate some random data, quite different range
            function generateChartData() {
                var firstDate = new Date();
                firstDate.setDate(firstDate.getDate() - 500);

                for (var i = 0; i < 500; i++) {
                    // we create date objects here. In your data, you can have date strings
                    // and then set format of your dates using chart.dataDateFormat property,
                    // however when possible, use date objects, as this will speed up chart rendering.
                    var newDate = new Date(firstDate);
                    newDate.setDate(newDate.getDate() + i);

                    var visits = Math.round(Math.random() * 40) - 20;

                    chartData.push({
                        date: newDate,
                        visits: visits
                    });
                }
            }

            // this method is called when chart is first inited as we listen for "dataUpdated" event
            function zoomChart() {
                // different zoom methods can be used - zoomToIndexes, zoomToDates, zoomToCategoryValues
                chart.zoomToIndexes(chartData.length - 40, chartData.length - 1);
            }

            // changes cursor mode from pan to select
            function setPanSelect() {
                if (document.getElementById("rb1").checked) {
                    chartCursor.pan = false;
                    chartCursor.zoomable = true;
                } else {
                    chartCursor.pan = true;
                }
                chart.validateNow();
            }

        </script>
    </head>

    <body>
        <div id="chartdiv" style="width: 100%; height: 400px;"></div>
        <div style="margin-left:35px;">
            <input type="radio" name="group" id="rb1" onclick="setPanSelect()">Select
            <input type="radio" true name="group" id="rb2" onclick="setPanSelect()">Pan
        </div>
    </body>

</html>
```



saftmeister hat gesagt.:


> Ok, also zunächst, du gibst bei fgetcsv() als Trenner (Delimiter) das Semikolon an, in der CSV-Datei (die im URL übrigens ein v zu viel hinten hat) wird jedoch als Trenner das Komma verwendet. Folgender Code scheint das richtige auszuspucken:



Super besten dank

Cool so klapts fast wie ichs (amcharts) möchte:

```
<?php
$handle = fopen('ws_newdata.csv', 'r');
$i = 0;
while (($data = fgetcsv($handle, 30000, ','))){
  // Überspringe Zeile 1 und 2 (wir fangen bei 0 an zu zählen)
  if($i == 0 || $i == 1)
  {
  $i++;
  continue;
  }
  list($tag, $monat, $jahr) = explode('.', $data[0]);
  // Hier muss eine Prüfung auf die entsprechende Spalte stattfinden, welche die Jahreszahl enthält:
  if( $jahr == 2013)
  {
  echo "$data[0] $data[1] $data[2] $data[3] $data[4] $data[5] $data[6] $data[7] $data[8] $data[9] $data[10] $data[11] $data[12] $data[13] $data[14] $data[15] $data[16] $data[17] $data[18]<br />\n";
  }
  $i++;
}
fclose($handle);
?>
```

GIBT: 28.04.2013 20:04 22.5 12.2 11.5 10.2 0.0 0.0 41 65 1013.3 0.000 0.0 112 0.0 5.8 12.2 0.0 2


Jetzt muss ich $data[0] + $data[1] zusammensetzen und den monat minus 1 rechnen (amcharts fängt bei monat 0 an anstatt 1), plus 00 secunden anhängen. - ($jahr, $monat, $tag, $stunde, $minute, 00)


Solte geben: 28,03,2013,20,04,00,22.5,12.2,11.5,10.2,0.0,0.0,41,65,1013.3,0.000,0.0,112,0.0,5.8,12.2,0.0,2     (komma als trennzeichen)

Jetzt muss ich noch ein value einbauen:

Die Lösung: 28, 03, 2013, 20, 04, 00,  val1:"22.5", val1:"12.2", val1:"11.5", val1:"10.2", val1:"0.0", val1:"0.0",  val1:"41", usw....


```
<?php
$handle = fopen('ws_newdata.csv', 'r');
$i = 0;
while (($data = fgetcsv($handle, 30000, ','))){
  // Überspringe Zeile 1 und 2 (wir fangen bei 0 an zu zählen)
  if($i == 0 || $i == 1)
  {
  $i++;
  continue;
  }
  list($tag, $monat, $jahr) = explode('.', $data[0]);
  // Hier muss eine Prüfung auf die entsprechende Spalte stattfinden, welche die Jahreszahl enthält:
  if( $jahr == 2013)
  {
  echo "{date: new Date($data[0] $data[1], 0, 0), val1:$data[2], val2:$data[3], val3:$data[4], val4:$data[5], val5:$data[6], val6:$data[7], val7:$data[8], val8:$data[9], val9:$data[10], val10:$data[11], val11:$data[12], val12:$data[13], val13:$data[14], val14:$data[15], val15:$data[16],} \n";
  }
  $i++;
}
fclose($handle);
?>
```

wieder ein schritt weiter...

Ergebniss: {date: new Date(28.04.2013 20:04, 0, 0), val1:22.5, val2:12.2, val3:11.5, val4:10.2, val5:0.0, val6:0.0, val7:41, val8:65, val9:1013.3, val10:0.000, val11:0.0, val12:112, val13:0.0, val14:5.8, val15:12.2,}

Jetzt muss ich noch das Jahr, Monat und Tag umplazieren und kommas machen. Wie soll ich das machen?

Ziel: {date: new Date(2014, 8, 15, 00, 00, 0, 0), val1:11.1, val2:93, val3:1016.1, val4:8.4, val5:23, val6:0.0, val7:9.7, val8:10.0, val9:9.8, val10:0, val11:0.0, val12:0, val13:0,val16:0.0,val14:2070, val15:0.0},

danke für die hilfe


```
<?php
$handle = fopen('ws_newdata.csv', 'r');
$i = 0;
while (($data = fgetcsv($handle, 30000, ','))){
  // Überspringe Zeile 1 und 2 (wir fangen bei 0 an zu zählen)
  if($i == 0 || $i == 1)
  {
  $i++;
  continue;
  }
  list($tag, $monat, $jahr) = explode('.', $data[0]);
  if( $jahr == 2013)
  {
    $DATETOSPLIT = $data[0];
    $TIMETOSPLIT = $data[1];
    list ($tag, $monat, $jahr) = split('[/.-]', $DATETOSPLIT);
    list ($stunde, $minute) = split('[:]', $TIMETOSPLIT);
$monat = $monat -1;
  echo "{date: new Date($jahr, $monat, $tag, $stunde, $minute, 0, 0), val1:$data[2], val2:$data[3], val3:$data[4], val4:$data[5], val5:$data[6], val6:$data[7], val7:$data[8], val8:$data[9], val9:$data[10], val10:$data[11], val11:$data[12], val12:$data[13], val13:$data[14], val14:$data[15], val15:$data[16]}, \n";
  }
  $i++;
}
fclose($handle);
?>
```

habs geschafft


----------



## sheel (15. September 2014)

Kurze Frage, ist die Umfrage oben so gewollt?


----------



## gixnetwork (15. September 2014)

Ja umfrage ist so gewollt. War ne ganz spontane idee.

Habe jetzt einen fertigen Code für das aktuelle Jahr.


```
<?php
$handle = fopen('ws_newdata.csv', 'r');
$i = 0;
while (($data = fgetcsv($handle, 30000, ','))){
  // Überspringe Zeile 1 und 2 (wir fangen bei 0 an zu zählen)
  if($i == 0 || $i == 1)
  {
  $i++;
$linecounter = 1;
$jahrlive = date("Y", strtotime("now")) . "\n";
  continue;
  }
  list($tag, $monat, $jahr) = explode('.', $data[0]);
  // Hier muss eine Prüfung auf die entsprechende Spalte stattfinden, welche die Jahreszahl enthält:
  if( $jahr == $jahrlive)
  {
    $DATETOSPLIT = $data[0];
    $TIMETOSPLIT = $data[1];
    list ($tag, $monat, $jahr) = split('[/.-]', $DATETOSPLIT);
    list ($stunde, $minute) = split('[:]', $TIMETOSPLIT);

$monat = $monat -1;
if ($linecounter == 1)
{
echo "{date: new Date($jahr, $monat, $tag, $stunde, $minute, 0, 0), val1:$data[3], val4:$data[9], val5:$data[10], val6:$data[11], val7:$data[12], val8:$data[13], val9:$data[14], val10:$data[15], val11:$data[16], val12:$data[17]}";
}
else{   
echo ",\n{date: new Date($jahr, $monat, $tag, $stunde, $minute, 0, 0), val1:$data[3], val4:$data[9], val5:$data[10], val6:$data[11], val7:$data[12], val8:$data[13], val9:$data[14], val10:$data[15], val11:$data[16], val12:$data[17]}";
}
$linecounter++;
}
$i++;
}
fclose($handle);
?>
```

Bastle jetzt noch an der monats und ev. wochen auswahl.

Zuden muss ich noch val9:$data[14] (Regenmesser) Summieren...


----------



## gixnetwork (15. September 2014)

Was mach ich hier falsch?
versuche per browser link einen bestimmten tag auszuwählen:

```
........
$param_datum = $_GET["datum"];  // www.gix.com/datei.php?datum=2013-04-01
  continue;
  }
  list($tag, $monat,$jahr  ) = explode('.', $data[0]);
  // Hier muss eine Prüfung auf die entsprechende Spalte stattfinden, welche die Jahreszahl enthält:
  if( $jahr-$monat-$tag == $param_datum)
```


----------

