Ausgabe eienr csv-Datei begrenzen

  • Themenstarter Themenstarter D@nger
  • Beginndatum Beginndatum
D

D@nger

Ausgabe einer csv-Datei begrenzen

Hallo liebe Community,
ich habe folgendes Problem:
Und zwar lese ich per fgetcsv eine CSV-Datei aus. Diese "Datenbank" beinhaltet 2142 Datensätze. Hier ist die Ausgabe zu sehen:
http://tinyurl.com/pfho2

Der Code sieht folgendermaßen aus:
PHP:
<?php
$ident="anzahl";

if(!empty($_GET["anzahl"]))
{
$anzahl=$_GET["anzahl"];
}


if(empty($_GET["anzahl"]))
{
$anzahl="100";
}





$id="";


print('<font face="Arial"><table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" height="128">
  <tr>
   <th height=30>&nbsp;</th>
   <th height=30>&nbsp;Nr.&nbsp;</th>
   <th height=30>&nbsp;1. Bezeichnung&nbsp;</th>
   <th height=30>&nbsp;2. Bezeichnung&nbsp;</th>
   <th height=30>&nbsp;Preis&nbsp;</th>
   <th height=30>&nbsp;Produktbild&nbsp;</th>
 </tr>');


  $file = "CL_Artikelstamm.txt";
  $lines = file($file);
  $numlines = count($lines);
  print $numlines;






  while ($id<$numlines)
    {



$row = 1;                                      // Anzahl der Arrays
$handle = fopen ("CL_Artikelstamm.txt","r");              // Datei zum Lesen öffnen
while ( ($data = fgetcsv ($handle, 1000, ";")) !== FALSE ) { // Daten werden aus der Datei
                                               // in ein Array $data gelesen
   $num = count ($data);                      // Felder im Array $data

   
$row++;   


    $Bezeichnung1 =  $data[2];
    $Bezeichnung2 = $data[3];
    $Preis = $data[7];
    $Bild = $data[8];



    //Get all field information out of the table

   
    //Parse errors from the information (U
    $Bezeichnung1 = str_replace("/n", "<br>", $Bezeichnung1);
    $Bezeichnung2 = str_replace("/n", "<br>", $Bezeichnung2);
   // $Preis = number_format($Preis, 2, ",", "");



  if($Bild=="")
   {
    $Bild="0";

    if (!file_exists("images/" . $Bild))
     {
      $Bild="1";
     }

   }

    
    //We got all record information out!
    //Example of usage:


if($id=='')
     {
     $id='1';
     }  
else
{
$id=$id+1;
}



if ($id%2==0)
{
print("<tr>");
}
else
{
print("<tr bgcolor=#CCCCCC>");
}


//Hier die CB-Spalte

 print("<td height=30>");
 print("<input type=checkbox>");
 print("</td>");

//Hier die ID-Spalte

 print("<td height=30>");
 print("&nbsp;$id.&nbsp;");
 print("</td>");


//Hier die Bezeichnung1-Spalte

 print("<td height=30>");
 print("&nbsp;$Bezeichnung1&nbsp;");
 print("</td>");


//Hier die Bezeichnung2-Spalte

 print("<td height=30>");
 print("&nbsp;$Bezeichnung2&nbsp;");
 print("</td>");

//Hier die Preis-Spalte

 print("<td height=30>");
 print("&nbsp;$Preis €&nbsp;");
 print("</td>");

//Hier die Bild-Spalte

 print("<td height=30>");

 if ($Bild=="1")
  {
   print("&nbsp;<b>Kein Bild vorhanden</b>&nbsp;");
  }
  else
  {
   print("<img src=images/$Bild width=276>");
  }

 print("</td>");
   

}
}

fclose ($handle);

      print("</tr></table></font>");
     
    ?>

So, das Problem ist, dass ich nicht auf die Lösung komme, wie ich die Ausgabe beschränken kann, und zwar sollten z.b. nur 200 Datensätze ausgelesen helfen. Vielen Dank schon mal für eure Hilfe.
 
Zuletzt bearbeitet von einem Moderator:
schon mal mit zählen probiert? ;-)

Code:
$durchgang = 0;
while ($durchgang < 200 && ($data = fgetcsv ($handle, 1000, ";")) !== FALSE) { 
   $num = count ($data); 
   // usw.

   $durchgang++;
}
 
Hallo, danke, habe schon viel versucht, und mit deinem Tipp klappts leider auch nicht.
Code:
PHP:
<?php
$ident="anzahl";

if(!empty($_GET["anzahl"]))
{
$anzahl=$_GET["anzahl"];
}


if(empty($_GET["anzahl"]))
{
$anzahl="100";
}





$id="";


print('<font face="Arial"><table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" height="128">
  <tr>
   <th height=30>&nbsp;</th>
   <th height=30>&nbsp;Nr.&nbsp;</th>
   <th height=30>&nbsp;1. Bezeichnung&nbsp;</th>
   <th height=30>&nbsp;2. Bezeichnung&nbsp;</th>
   <th height=30>&nbsp;Preis&nbsp;</th>
   <th height=30>&nbsp;Produktbild&nbsp;</th>
 </tr>');


  $file = "CL_Artikelstamm.txt";
  $lines = file($file);
  $numlines = count($lines);
  print $numlines;






  while ($id<$numlines)
    {




$row = 1;                                     
$handle = fopen ("CL_Artikelstamm.txt","r");  
$durchgang = 0;            
while ($durchgang < 20 && ($data = fgetcsv ($handle, 1000, ";")) !== FALSE) { 
   $num = count ($data); 

   
$row++;   




    



    $Bezeichnung1 =  $data[2];
    $Bezeichnung2 = $data[3];
    $Preis = $data[7];
    $Bild = $data[8];



    //Get all field information out of the table

   
    //Parse errors from the information (U
    $Bezeichnung1 = str_replace("/n", "<br>", $Bezeichnung1);
    $Bezeichnung2 = str_replace("/n", "<br>", $Bezeichnung2);
   // $Preis = number_format($Preis, 2, ",", "");



  if($Bild=="")
   {
    $Bild="0";

    if (!file_exists("images/" . $Bild))
     {
      $Bild="1";
     }

   }

    
    //We got all record information out!
    //Example of usage:


if($id=='')
     {
     $id='1';
     }  
else
{
$id=$id+1;
}



if ($id%2==0)
{
print("<tr>");
}
else
{
print("<tr bgcolor=#CCCCCC>");
}


//Hier die CB-Spalte

 print("<td height=30>");
 print("<input type=checkbox>");
 print("</td>");

//Hier die ID-Spalte

 print("<td height=30>");
 print("&nbsp;$id.&nbsp;");
 print("</td>");


//Hier die Bezeichnung1-Spalte

 print("<td height=30>");
 print("&nbsp;$Bezeichnung1&nbsp;");
 print("</td>");


//Hier die Bezeichnung2-Spalte

 print("<td height=30>");
 print("&nbsp;$Bezeichnung2&nbsp;");
 print("</td>");

//Hier die Preis-Spalte

 print("<td height=30>");
 print("&nbsp;$Preis €&nbsp;");
 print("</td>");

//Hier die Bild-Spalte

 print("<td height=30>");

 if ($Bild=="1")
  {
   print("&nbsp;<b>Kein Bild vorhanden</b>&nbsp;");
  }
  else
  {
   print("<img src=images/$Bild width=276>");
  }

 print("</td>");
   

  $durchgang++;
 

}
}

fclose ($handle);

      print("</tr></table></font>");
     
    ?>
Seite:
http://tinyurl.com/pfho2

Hast du noch eine Idee?
 
Füg mal der while-Bedingung noch ein paar Klammern hinzu.

Das sieht für mich so aus, als ob er keine Abbruchbedingung kennt und solange durchzieht, bis die while-Schleife durch einen Fehler ungültig gemacht wird - sprich keine Datensätze mehr da zum auslesen.

Testhalber könntest du auch noch durch Ausgabe von $durchgang überprüfen, ob diese Variable tatsächlich erhöht wird.
 
Hallo, ich habe den Zähler mal ausgeben lassen:
http://tinyurl.com/pfho2

Wo könnte da der Fehler liegen?

Code:
PHP:
...
while ($durchgang < 20 && ($data = fgetcsv ($handle, 1000, ";")) !== FALSE) { 
   $num = count ($data); 

   
$row++;   


print $durchgang;

    



    $Bezeichnung1 =  $data[2];
...
 
neuer Versuch:

Code:
while($id < $numline) {
    while( // auslesen der csv ) {
         // Tabelle erstellen
    }
}

Was macht die innere Schleife:
Sie liest die csv KOMPLETT aus und erstellt pro Zeile eine Tabellenzeile
Was macht die äußere Schleife:
Sie lässt für jede vorhandene Zeilennummer obenstehendes durchführen.

Mal ne Frage: Wieviele Artikel hast du eigentlich? (sowohl in der txt als auch in der csv)
 
Hallo, meinst du so?
PHP:
<?php
$ident="anzahl";

if(!empty($_GET["anzahl"]))
{
$anzahl=$_GET["anzahl"];
}


if(empty($_GET["anzahl"]))
{
$anzahl="100";
}





$id="";


print('<font face="Arial"><table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" height="128">
  <tr>
   <th height=30>&nbsp;</th>
   <th height=30>&nbsp;Nr.&nbsp;</th>
   <th height=30>&nbsp;1. Bezeichnung&nbsp;</th>
   <th height=30>&nbsp;2. Bezeichnung&nbsp;</th>
   <th height=30>&nbsp;Preis&nbsp;</th>
   <th height=30>&nbsp;Produktbild&nbsp;</th>
 </tr>');


  $file = "CL_Artikelstamm.txt";
  $lines = file($file);
  $numlines = count($lines);






  while ($id<$numlines)
    {




$row = 1;                                     
$handle = fopen ("CL_Artikelstamm.txt","r");  

while($id < $numlines) {

          
while ( ($data = fgetcsv ($handle, 1000, ",")) !== FALSE) { 
   $num = count ($data); 

   
$row++;   




    



    $Bezeichnung1 =  $data[2];
    $Bezeichnung2 = $data[3];
    $Preis = $data[7];
    $Bild = $data[8];



    //Get all field information out of the table

   
    //Parse errors from the information (U
    $Bezeichnung1 = str_replace("/n", "<br>", $Bezeichnung1);
    $Bezeichnung2 = str_replace("/n", "<br>", $Bezeichnung2);
   // $Preis = number_format($Preis, 2, ",", "");



  if($Bild=="")
   {
    $Bild="0";

    if (!file_exists("images/" . $Bild))
     {
      $Bild="1";
     }

   }

    
    //We got all record information out!
    //Example of usage:


if($id=='')
     {
     $id='1';
     }  
else
{
$id=$id+1;
}



if ($id%2==0)
{
print("<tr>");
}
else
{
print("<tr bgcolor=#CCCCCC>");
}


//Hier die CB-Spalte

 print("<td height=30>");
 print("<input type=checkbox>");
 print("</td>");

//Hier die ID-Spalte

 print("<td height=30>");
 print("&nbsp;$id.&nbsp;");
 print("</td>");


//Hier die Bezeichnung1-Spalte

 print("<td height=30>");
 print("&nbsp;$Bezeichnung1&nbsp;");
 print("</td>");


//Hier die Bezeichnung2-Spalte

 print("<td height=30>");
 print("&nbsp;$Bezeichnung2&nbsp;");
 print("</td>");

//Hier die Preis-Spalte

 print("<td height=30>");
 print("&nbsp;$Preis €&nbsp;");
 print("</td>");

//Hier die Bild-Spalte

 print("<td height=30>");

 if ($Bild=="1")
  {
   print("&nbsp;<b>Kein Bild vorhanden</b>&nbsp;");
  }
  else
  {
   print("<img src=images/$Bild width=276>");
  }

 print("</td>");
   

  
 
}
}
}

fclose ($handle);

      print("</tr></table></font>");
     
    ?>

Das funktioniert leider auch nicht :(

Die Artikelanzahl wird ganz oben angezeigt. Im Monent 2142.
 
womit wir's jetzt dann aber haben dürften :-)

Lösche diese $durchgangs-Sachen wieder - hast du nämlich eigentlich schon als Variablen in deinem code.

Ändere die äußere while-Schleife so ab:

while($id < $numlines && $id < 200) {
// usw
}

Das sollte es dann eigentlich sein.
 
Hallo, ich verzweifle hier jetzt langsam ;-)
Es klappt leider immer noch nicht:
PHP:
<?php 
$ident="anzahl"; 

if(!empty($_GET["anzahl"])) 
{ 
$anzahl=$_GET["anzahl"]; 
} 


if(empty($_GET["anzahl"])) 
{ 
$anzahl="100"; 
} 





$id=""; 


print('<font face="Arial"><table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" height="128"> 
  <tr> 
   <th height=30>&nbsp;</th> 
   <th height=30>&nbsp;Nr.&nbsp;</th> 
   <th height=30>&nbsp;1. Bezeichnung&nbsp;</th> 
   <th height=30>&nbsp;2. Bezeichnung&nbsp;</th> 
   <th height=30>&nbsp;Preis&nbsp;</th> 
   <th height=30>&nbsp;Produktbild&nbsp;</th> 
 </tr>'); 


  $file = "CL_Artikelstamm.txt"; 
  $lines = file($file); 
  $numlines = count($lines); 






 




$row = 1;                                      
$handle = fopen ("CL_Artikelstamm.txt","r");   

while($id < $numlines && $id < 10) {

           
while (($data = fgetcsv ($handle, 1000, ";")) !== FALSE) {  
   $num = count ($data);  

    
$row++;    




     



    $Bezeichnung1 =  $data[2]; 
    $Bezeichnung2 = $data[3]; 
    $Preis = $data[7]; 
    $Bild = $data[8]; 



    //Get all field information out of the table 

    
    //Parse errors from the information (U 
    $Bezeichnung1 = str_replace("/n", "<br>", $Bezeichnung1); 
    $Bezeichnung2 = str_replace("/n", "<br>", $Bezeichnung2); 
   // $Preis = number_format($Preis, 2, ",", ""); 



  if($Bild=="") 
   { 
    $Bild="0"; 

    if (!file_exists("images/" . $Bild)) 
     { 
      $Bild="1"; 
     } 

   } 

     
    //We got all record information out! 
    //Example of usage: 


if($id=='') 
     { 
     $id='0'; 
     }   
else 
{ 
$id=$id+1; 
} 



if ($id%2==0) 
{ 
print("<tr>"); 
} 
else 
{ 
print("<tr bgcolor=#CCCCCC>"); 
} 


//Hier die CB-Spalte 

 print("<td height=30>"); 
 print("<input type=checkbox>"); 
 print("</td>"); 

//Hier die ID-Spalte 

 print("<td height=30>"); 
 print("&nbsp;$id.&nbsp;"); 
 print("</td>"); 


//Hier die Bezeichnung1-Spalte 

 print("<td height=30>"); 
 print("&nbsp;$Bezeichnung1&nbsp;"); 
 print("</td>"); 


//Hier die Bezeichnung2-Spalte 

 print("<td height=30>"); 
 print("&nbsp;$Bezeichnung2&nbsp;"); 
 print("</td>"); 

//Hier die Preis-Spalte 

 print("<td height=30>"); 
 print("&nbsp;$Preis €&nbsp;"); 
 print("</td>"); 

//Hier die Bild-Spalte 

 print("<td height=30>"); 

 if ($Bild=="1") 
  { 
   print("&nbsp;<b>Kein Bild vorhanden</b>&nbsp;"); 
  } 
  else 
  { 
   print("<img src=images/$Bild width=276>"); 
  } 

 print("</td>"); 
    

   
  

} 
} 

fclose ($handle); 

      print("</tr></table></font>"); 
      
    ?>

Kann mir noch mal jemand helfen?
 
Zurück