tutorials.de Buch-Aktion 02/2012
ERLEDIGT
JA
ANTWORTEN
9
ZUGRIFFE
441
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Kalito Kalito ist offline Mitglied Brokat
    Registriert seit
    Aug 2010
    Ort
    Leipzig
    Beiträge
    374
    Hallo,

    ich habe eine CSV-Datei, die ich mittels php in Html anzeigen möchte. Soweit funktioniert alles, außer zwei Sachen.

    1. Die ganze Tabelle soll nach dem Preis sortiert werden?
    2. Wie kann man die Größe der Tabelle einstellen?

    Hier der Quellcode:

    PHP-Code:
    <?php

        $handle 
    fopen('webgains_datenfeed.csv''r');

        
    $zeilen = array();
        
    $aktuelleZeile 0;

        while(
    $data fgetcsv($handle1500';'))
        {
          
    $zeilen[$aktuelleZeile] = $data;
          
    $aktuelleZeile++;
        }
        
    fclose($handle);

        function 
    sort_data($int) {
          
    $zeilen_bkp $zeilen;
        }



       echo 
    "<table border=1>";
        echo 
    "<tr>";
            echo 
    "<th >".Produkt."</th>";
            echo 
    "<th>".Name."</th>";
            echo 
    "<th>".Beschreibung."</th>";
            echo 
    "<th>".Preis."</th>";
            echo 
    "<th>".Portokosten."</th>";
        echo 
    "</tr>";
        for(
    $dl=1$dl<count($zeilen); $dl++) {
            
    $data $zeilen[$dl];
            echo 
    "<tr>";
            echo 
    "<td width=\"80px\" height=\"10px\"><img src=\"".$data[7]."\" /></td>";
            echo 
    "<td width=\"80px\" height=\"10px\">".$data[3]."</td>";
            echo 
    "<td width=\"80px\" height=\"10px\">".$data[4]."</td>";
            echo 
    "<td width=\"80px\" height=\"10px\">".'arsort($data[6])'."</td>";
            echo 
    "<td width=\"80px\" height=\"10px\">".$data[10]."</td>";
            echo 
    "</tr>\n";
        }

        echo 
    "</table>";
        
    arsort($data[6]);
    ?>
     

  2. #2
    Tim Bureck Tim Bureck ist offline Mitglied Brokat
    Registriert seit
    Apr 2009
    Ort
    Düsseldorf (NRW)
    Beiträge
    498
    1. Schau dir dazu mal die Funktion usort() an, die sollte dir weiterhelfen.
    2. Meinst du die Breite? Definiere die am besten in den <th>-Tags, so verhinderst du auch ein bisschen overhead, weil du es nicht in jedes einzele <td> rein schreibst.
     

  3. #3
    Avatar von Gainwar
    Gainwar Gainwar ist offline Mitglied Gold
    Registriert seit
    Sep 2005
    Ort
    Augsburg
    Beiträge
    128
    Hallo Kalito.

    ich hab es mal so gebaut wie ich es meistens löse. wie von Tim bereits erwähnt verwende ich hier usort.

    PHP-Code:
    <?php
    function cmpByPrice($left$right)
    {
      if (
    $left->price $right->price)
      {
        return 
    1;
      }
      elseif (
    $left->price $right->price)
      {
        return -
    1;
      }
      return 
    0;
    }

    // Datei öffnen.
    $handle fopen('webgains_datenfeed.csv''r'); 
    $zeilen = array(); 

    $aktuelleZeile 0
    while(
    $data fgetcsv($handle1500';')) 
    {
      
    $obj = new stdClass;
      
    $obj->product $data[7];
      
    $obj->name $data[3];
      
    $obj->descr $data[4];
      
    $obj->price $data[6];
      
    $obj->porto $data[10];
      
      
    $zeilen[$aktuelleZeile] = $obj;
      
    $aktuelleZeile++; 

    fclose($handle);

    // Sortieren.
    usort($zeilen"cmpByPrice");

    // Ausgabe.
    echo "<table border=1>"
    echo 
    "<tr>"
    echo 
    "<th >".Produkt."</th>"
    echo 
    "<th>".Name."</th>"
    echo 
    "<th>".Beschreibung."</th>"
    echo 
    "<th>".Preis."</th>"
    echo 
    "<th>".Portokosten."</th>"
    echo 
    "</tr>"
    for (
    $dl=1$dl<count($zeilen); $dl++) { 
      
    $data $zeilen[$dl]; 
      echo 
    "<tr>"
      echo 
    "<td width=\"80px\" height=\"10px\"><img src=\"".$data->product."\" /></td>"
      echo 
    "<td width=\"80px\" height=\"10px\">".$data->name."</td>"
      echo 
    "<td width=\"80px\" height=\"10px\">".$data->descr."</td>"
      echo 
    "<td width=\"80px\" height=\"10px\">".$data->price."</td>"
      echo 
    "<td width=\"80px\" height=\"10px\">".$data->porto."</td>"
      echo 
    "</tr>\n"
    }
    echo 
    "</table>"
    ?>
    Antwort    Zitieren      Danke
    Zuerst lese ich die Daten in einen Array mit Objekten um diesen dann anschließend per usort() und der Funktion cmpByPrice einfach zu sortieren.
     
    Manuel Freiholz
    iF.Gainwar

    iF.SVNAdmin (http://www.insanefactory.com/if-svnadmin/)
    Subversion Benutzeradministration mit PASSWD und LDAP Integration.

  4. #4
    Kalito Kalito ist offline Mitglied Brokat
    Registriert seit
    Aug 2010
    Ort
    Leipzig
    Beiträge
    374
    Danke euch beiden.

    ich möchte gerne an der Höhe und Breite der Tabelle schrauben.


    Gruß
     

  5. #5
    Avatar von Yaslaw
    Yaslaw Yaslaw ist gerade online n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    4.669
    Zitat Zitat von Kalito Beitrag anzeigen
    Danke euch beiden.

    ich möchte gerne an der Höhe und Breite der Tabelle schrauben.


    Gruß
    Du hast ja in deinem Code das folgende:
    PHP-Code:
    echo "<td width=\"80px\" height=\"10px\"><img src=\"".$data[7]."\" /></td>"
    Darin hast du höhe und breite
     
    ---------------------------------------------------------------------------------------------------
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  6. #6
    Kalito Kalito ist offline Mitglied Brokat
    Registriert seit
    Aug 2010
    Ort
    Leipzig
    Beiträge
    374
    Aber es ändert es ja nicht. Auch wenn ich die Pixelzahl auf 1 setze, bleibt die Größe unverändert
     

  7. #7
    Avatar von Yaslaw
    Yaslaw Yaslaw ist gerade online n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    4.669
    für die Breite würde ich width im header und nicht in den Details definieren
    HTML-Code:
    <table>
    	<tr>
    		<th width="80px" height="10px">SpaltenHeader1</th>
    		<th width="80px">SpaltenHeader2</th>
    		<th>SpaltenHeader3</th>
    	<tr>
    	<tr>
    		<td height="10px">Zeile1_Spalte1</td>
    		<td>Zeile1_Spalte2</td>
    		<td>Zeile1_Spalte3</td>
    	<tr>	
    	<tr>
    		<td height="10px">Zeile2_Spalte1</td>
    		<td>Zeile2_Spalte2</td>
    		<td>Zeile2_Spalte3</td>
    	<tr>	
    </table>

    Lies auch mal den ganzen Abschnitt http://de.selfhtml.org/html/tabellen...breiten_hoehen
    Die Angaben zu Breite und Höhe sind nur wirksam, wenn der Tabellen- bzw. Zelleninhalt kleiner ist, sodass leerer Raum entsteht. Wenn der Tabelleninhalt größer ist, werden die Angaben zu Breite und Höhe außer Kraft gesetzt.
     
    ---------------------------------------------------------------------------------------------------
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  8. #8
    Kalito Kalito ist offline Mitglied Brokat
    Registriert seit
    Aug 2010
    Ort
    Leipzig
    Beiträge
    374
    Danke

    Jetzt hab ich aber ein neues Problem.

    Durch die Sortierung ist der Tabellenkopf mit den Spaltennamen der csv ganz unten aufgetaucht. Wie kann ich diese loswerden? Ich hatte es mit einer if Schleife probiert, die die csv erst ab der zweiten Zeile einliest, aber hat nicht funktioniert.

    Danke


    Gruß, Patrick
     

  9. #9
    Avatar von Yaslaw
    Yaslaw Yaslaw ist gerade online n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    4.669
    Die erste Zeile rausnehmen -> sortieren -> Zeile am Anfang wieder einfügen (ggf nicht nötig)
    PHP-Code:
    $header array_shift($zeilen);
    usort($zeilen"cmpByPrice");
    array_unshift($zeilen$header); 
     
    ---------------------------------------------------------------------------------------------------
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  10. #10
    Kalito Kalito ist offline Mitglied Brokat
    Registriert seit
    Aug 2010
    Ort
    Leipzig
    Beiträge
    374
    Danke

    Bei soviel Hilfe werde ich mich heute oder morgen mal schauen, ob ich armen Seelen wie mir auch helfen kann
     

Ähnliche Themen

  1. Sortieren einer txt-Datei
    Von touristguy im Forum C/C++
    Antworten: 2
    Letzter Beitrag: 14.07.08, 20:19
  2. Externe Datei sortieren
    Von MasterTobi im Forum C/C++
    Antworten: 0
    Letzter Beitrag: 28.11.07, 11:35
  3. *.txt Datei sortieren
    Von bob134 im Forum Java
    Antworten: 3
    Letzter Beitrag: 19.10.07, 15:56
  4. Datei auf HDD sortieren
    Von DanielBodensee im Forum Delphi, Kylix, Pascal
    Antworten: 1
    Letzter Beitrag: 19.04.04, 15:29
  5. csv-datei sortieren
    Von vomweg im Forum PHP
    Antworten: 6
    Letzter Beitrag: 21.07.03, 11:53