N norra54 Medlem sedan sep. 2003 110 inlägg Frågan 10 okt. 2004 20:23 #1 Hejsan
Skulle vilja att de namn som jag sparat i en kolumn i en textfil skrivs ut i två kolumner på sidan i alfabetisk ordning oavsett hur de står i textfilen.
Idag använder jag koden nedan så kanske ni förstår frågan bättre. Här måste jag dock själv se till att namnen hamnar i rätt ordning vilket är lite jobbigt när nya namn ska skrivas in - betydligt enklare vore ju att kunna skriva in dem var som helst.
<?
$filename = "marke.txt";
$fd = fopen($filename, 'r');
echo '<table border="0" cellspacing="0" cellpadding="1">';
while(!feof($fd))
{
$line = explode("|", fgets($fd));
if(sizeof($line) == 2) //ändra efterhand
{
echo "<tr><td width='15' align='center' valign='top'><img src='grafik/punkt.gif' width='7' height='13'></td>
<td width='150'><b>$line[0]</b></td>
<td width='15' align='center' valign='top'><img src='grafik/punkt.gif' width='7' height='13'></td>
<td><b>$line[1]</b></td></tr>\n";
}
}
echo '</table>';
fclose($fd);
?>
Nuvarande textfils utseende:
Audi|Mercedes
BMW|Saab
Ford|Volvo
som jag alltså vill ha i en enda lång lista, typ
Audi
BMW
Ford
osv
Någon lösning på hur detta skulle kunna lösas mottages tacksamt.
mvh
Matte Medlem sedan aug. 2000 2 975 inlägg Spara ner i en array, och sortera sedan arrayen.
Därefter skriver du ut från arrayen.
N norra54 Medlem sedan sep. 2003 110 inlägg Ok, men..
för en total newbie - hur skulle en sådan liten nätt kod se ut?
mvh
Matte Medlem sedan aug. 2000 2 975 inlägg Det skulle kunna gå att göra så här:
$files = array();
$content = file('marke.txt');
for ($i=0; $i<sizeof($content); $i++) {
$line = explode("|", trim($content[$i]));
foreach($line as $val) {
if (!empty($val)) {
$files[] = $val;
}
}
}
Eller så här:
$content = file_get_contents('marke.txt');
$files = preg_split("/(\r\n|\r|\n|\\|)/", trim($content));
Samt ett antal ytterligare varianter.
Sedan sorterar du med:
sort($files);
[EDIT]
Glömde att forumet kräver dubbla backslash.
N norra54 Medlem sedan sep. 2003 110 inlägg Ok,
säg att jag väljer att använda mig av ditt översta exempel - vad echo:ar jag..? Får det inte att fungera.
mvh
Nexus86 Medlem sedan okt. 2002 3 030 inlägg Efter det andra:
foreach ($files as $row) {
echo $row . "<br/>";
}
Matte Medlem sedan aug. 2000 2 975 inlägg Och vill du ha det i två kolumner kan du göra så här:
if (!empty($files)) {
echo "<table>\n";
$file = reset($files);
do {
if (($file2 = next($files)) === false) {
$file2 = ' ';
}
echo "
<tr>
<td>$file</td>
<td>$file2</td>
</tr>
";
} while($file = next($files));
echo "\n</table>\n";
}