Springen naar inhoud


- - - - -
Solved

Waarden van csv file word niet goed weer gegeven.

csv php

  • Log in a.u.b. om te beantwoorden
Er zijn 6 reacties in dit onderwerp

#1 pascalbianca

pascalbianca

    Webmaster/Admin

  • Webmaster
  • 4382 berichten
    Laatst bezocht 26 nov 2018 06:49
  • LocatieSusteren, Nederland, Midden Limburg.
Inzender

Geplaatst op 10 april 2012 - 05:24

In de bijlage heb ik een csv file ingepakt erbij gedaan die gemaakt is door speedfan.
Dat bestand lees ik uit via onderstaande php code.:

PHP Code:
<?php
	echo('<meta http-equiv="refresh" content="60">');
	$file_handle = fopen("SpeedFanData.csv", "r");
	$today = date('l jS F Y h:i:s a');
	echo "Onderstaande waardes zijn van ".$today."\n";
	echo "<table border=\"1\">\n";
	while (!feof($file_handle) ) {
		$line_of_text = fgetcsv($file_handle, 1024);
		echo "<tr>\n";  
		echo "<td>".$line_of_text[0]."</td>\n";
		echo "<td>".$line_of_text[1]."</td>\n";
		echo "<td>".$line_of_text[2]."</td>\n";
		echo "<td>".$line_of_text[3]."</td>\n";
		echo "</tr>\n";
	}
	fclose($file_handle);
	echo "</table> \n";
?>

Hij haalt mooi alle waarden binnen alleen zoals te zien is in onderstaande snapshot klopt de split niet bij de eerste waarde.
Bijlage  uitvoer code.png   15,02K   10 downloads

De drie laatste waardes zijn mooi gesplit maar ervoor staat nog een nummer met er achter 25 , dit is de eerste temp. die gemeten is en die word niet gesplit.
Nu in die csv file is het misschien ook te zeggen waarom dit niet gebeurd omdat die niet gescheiden is door een komma, maar is dit ook anders op te lossen , zo ja hoe?
Tevens vroeg ik mij af , die waarden bevat zoals in voorbeeld o.a. 030, kan ik die 1ste nul weg krijgen zonder dat het die laatste 0 beinvloed?
En is het mogelijk om alleen de laatste waarde van die table te tonen i.p.v. de gehele table?
Let wel even op die csv file is nooit dezelfde grootte.

Alvast bedankt.

Bijgevoegde Bestanden



#2 guest_ingrid_*

guest_ingrid_*
  • Gasten
    Laatst bezocht

Geplaatst op 10 april 2012 - 08:28

1. Je geeft zelf al aan dat in de eerste regel geen komma's staan dus op basis daarvan eea niet kan worden gescheiden. De enige oplossing die ik kan bedenken is de eerste regel overslaan en de kopregel er zelf boven zetten.

2. Volgens mij moet dat lukken mbv de intval() functie.

3. Wat je kan doen is een teller toevoegen en dan alleen als deze gelijk is aan het aantal regels de waarde tonen.

#3 Luckie64

Luckie64

    Senior Developer

  • Leden
  • PipPipPip
  • 206 berichten
    Laatst bezocht 31 aug 2016 16:55

Geplaatst op 10 april 2012 - 08:53

@Pascal

De CSV file heeft als scheidingsteken een spatie.
Je splitst op de komma van je temperatuur dat is het probleem.

Groeten,

Luc

#4 Luckie64

Luckie64

    Senior Developer

  • Leden
  • PipPipPip
  • 206 berichten
    Laatst bezocht 31 aug 2016 16:55

Geplaatst op 10 april 2012 - 10:42

Eindelijk gevonden..... :x
Het scheidingsteken is geen spatie maar een tab teken.
Wijzig dit in je code en het zou moeten werken.
Visual Basic Code:
$line_of_text = fgetcsv($file_handle,1024,"\t");

Logisch eigenlijk als ze al een komma gebruiken in hun temperatuur, kan je als scheidingsteken geen komma meer gebruiken!

Groeten,

Luc

#5 pascalbianca

pascalbianca

    Webmaster/Admin

  • Webmaster
  • 4382 berichten
    Laatst bezocht 26 nov 2018 06:49
  • LocatieSusteren, Nederland, Midden Limburg.
Inzender

Geplaatst op 10 april 2012 - 12:15

Net ff alles gelezen.
Ships dat ik die komma voor een scheidings teken heb aangezien :?
Hartelijk dank Luc voor je voorbeeld het werkt.
Nu nog even kijken naar dat van Ingrid, om die laatste regel alleen te krijgen uit de tabel en dan is dat ook klaar en kan die in de tutorial sectie erbij.

#6 Luckie64

Luckie64

    Senior Developer

  • Leden
  • PipPipPip
  • 206 berichten
    Laatst bezocht 31 aug 2016 16:55

Geplaatst op 10 april 2012 - 13:31

Had niet gelezen dat je de laatste lijn moet hebben!

PHP Code:
 <?php
	echo('<meta http-equiv="refresh" content="60">');
	$file_handle = fopen("SpeedFanData.csv", "r");
	$today = date('l jS F Y h:i:s a');
	echo "Onderstaande waardes zijn van ".$today."\n";
	echo "<table border=\"1\">\n";
	while (false !== ($line_of_text = fgetcsv($file_handle,1024,"\t")))
   {
	 $last= $line_of_text;
	  }
fclose($file_handle);
echo "<tr>\n";
echo "<td>".$last[0]."</td>\n";
	echo "<td>".$last[1]."</td>\n";
	echo "<td>".$last[2]."</td>\n";
	echo "<td>".$last[3]."</td>\n";
	echo "</tr>\n";
	echo "</table> \n";
	?>


#7 pascalbianca

pascalbianca

    Webmaster/Admin

  • Webmaster
  • 4382 berichten
    Laatst bezocht 26 nov 2018 06:49
  • LocatieSusteren, Nederland, Midden Limburg.
Inzender

Geplaatst op 10 april 2012 - 15:57

It works like a sharm ;)
Zal alles in orde maken dankzij jullie hulp en plaats het in de tutorial sectie.





Ook met taq Solved, csv, php voorzien

0 gebruiker(s) lezen dit onderwerp

0 lid(leden), 0 bezoeker(s), 0 anonieme gebruikers

Inloggen


[Solved] Untitled 1

Met dank aan Jürgen voor de jarenlange inzet van visualbasic.be (anno dec 2000)
Met dank aan Mike en Ronneke voor de jarenlange inzet van vbib.be (anno dec 2010)
Met dank aan PascalBianca voor de jarenlange inzet van vbib.be (anno dec 2016)