Jump to content

General PHP Help / CSV to Html tables and sorted into Categorys (headings) By Al


sniesler08

Recommended Posts

i've been able to load up a csv file and display it as a html table but what i'm having trouble with is sorting it out with headings a to z but what i am trying to do is have 4 columns like this.

 

Surgestions about how to do what im after i was hoping i could span the say A across all columns and centering them in the future also but thats not really the problem mainly the getting the array of the csv file and code right iguess. any help would be appreciated

 

 

<table>
  <tr>
    <th>A</th>
  </tr>
  <tr>
    <td>Apple1</td>
    <td>Apple2</td>
    <td>Apple3</td>
    <td>Apple4</td>
    <td>Apple5</td>
    <td>Apple6</td>

  </tr>
  <tr>
    <th>B</th>
  </tr>
    <td>Banana1</td>
    <td>Banana2</td>
    <td>Banana3</td>
    <td>Banana4</td>
    <td>Banana5</td>
    <td>Banana6</td>

  <tr>
    <th>C</th>
  </tr>
    <td>Cold1</td>
    <td>Cold2</td>
    <td>Cold3</td>
    <td>Cold4</td>
    <td>Cold5</td>
    <td>Cold6</td>
</table>

 

This is the code for inputting of the csv file i also have some other code i was wanting to use for the sorting of the array data from the csv file i'll past below....

 

 

 

<?php

$file = "widgets.csv";

$delimiter = ",";

$enclosure = '"';

$column = array("", "", "", "");

 

 

@$fp = fopen($file, "r") or die("Could not open file for reading");

while (!feof($fp))

  {

    $tmpstr = fgets($fp, 100);

    $line[] = preg_replace("/r/", "", $tmpstr);

  }

for ($i=0; $i < count($line); $i++)

  {

    $line[$i] = explode($delimiter, $line[$i]);

  }

?>

<html>

<head>

    <title>Albert's Delimited Text to HTML Table Converter</title>

  <link href="css/style.css" rel="stylesheet" type="text/css" />

 

</head>

<body>

<table border="1" cellpadding="5" cellspacing="0">

    <tr>

<?php

        for ($i=0; $i<count($column); $i++)

            echo "<th>".$column[$i]."</th>";

?>

    </tr>

<?php

for ($i=0; $i < count($line); $i++)

{

    echo "<tr>";

    for ($j=0; $j < count($line[$i]); $j++)

    {

        echo "<td>".$line[$i][$j]."</td>";

    }

    echo "</tr>";

}

fclose($fp);

?>

</table>

</body>

</html>

 

 

 

Heres the code for the sorting of the table data from the array

 

 

<?php

echo "QUERY_STRING is ".$_SERVER['QUERY_STRING']."<p>";

$rev=1;

$sortby=0;

if(isset($_GET['sortby']))$sortby = $_GET['sortby'];

if(isset($_GET['rev']))$rev = $_GET['rev'];

 

 

//Open and read CSV file example has four columns

$i=-1;

$ff=fopen('widgets2.csv','r') or die("Can't open file");

while(!feof($ff)){

$i++;

$Data[$i]=fgetcsv($ff,1024);

}

 

//Make columns sortable for each sortable column

foreach ($Data as $key => $row) {

  $One[$key]  = $row[0]; // could be $row['Colname']

  $Two[$key] = $row[1]; //numeric example

  $Three[$key] = $row[2];

  $Four[$key] = $row[3];} //numeric example

 

 

//Case Statements for Sorting

  switch ($sortby){

  case "0":

  if($rev=="1")array_multisort($One, SORT_NUMERIC, $Data); //SORT_NUMERIC optional

  else array_multisort($One, SORT_NUMERIC, SORT_DESC,$Data);

  $rev=$rev*-1;

  break;

 

  case "1":

  if($rev=="1")array_multisort($Two,  $Data);

  else array_multisort($Two, SORT_DESC, $Data);

  $rev=$rev*-1;

  break;

 

  case "2":

  if($rev=="1")array_multisort($Three, SORT_NUMERIC, $Data);

  else array_multisort($Three, SORT_NUMERIC, SORT_DESC,$Data);

  $rev=$rev*-1;

  break;

 

  case "3":

  if($rev=="1")array_multisort($Four,  $Data);

  else array_multisort($Four,  SORT_DESC, $Data);

  $rev=$rev*-1;

  break;}

 

echo ("<table border=2>");    //$rev is reverse variable 

echo ("<th><a href=\"SortTable.php?sortby=0&rev=$rev\" title=\"Click to Sort/Reverse sort\">One</a></th>");

echo ("<th><a href=\"SortTable.php?sortby=1&rev=$rev\" title=\"Click to Sort/Reverse sort\">Two</a></th>");

echo ("<th><a href=\"SortTable.php?sortby=2&rev=$rev\" title=\"Click to Sort/Reverse sort\">Three</a></th>");

echo ("<th><a href=\"SortTable.php?sortby=3&rev=$rev\" title=\"Click to Sort/Reverse sort\">Four</a></th>");

 

$i=0;

foreach($Data as $NewDat){

if($NewDat[0]!=""){ //error trap

$str="<tr>";

foreach($NewDat as $field)$str.="<td>$field</td>";

$str.="</td>\n";

echo $str;}}

fclose($ff);

echo "</table>";

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.