PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : txt DB sortieren für Weiterverarbietung


Hushi2
08.10.2002, 14:26:09
Eine Text DB soll gelesen werden und der Inhalt muss sortiert werden !
In der DB ist jeder Datensatz 1 Zeile, die Spalten sind durch ; getrennt !

z.Zt. lese ich die DB zeile für Zeile aus, und zeige Zeile für Zeile an (also jeden Datensatz in einer Zeile)

Jetzt soll die DB aber nach Alphabeth geordnet werden.
d.h. Sortieren und dann wieder Zeile für Zeile ausgeben !
bzw. die sortierte Tabelle soll weiter verarbeitet werden.

Die Original Tabelle darf nicht geändert werden !

markus.thiede
08.10.2002, 14:58:43
So könnte es gehen.

$fp = fopen("text.txt","r")or die();
$i=0;
$feld = 0; //Zu vergleichend Spalte.
while(!feof($fp))
{
$zeile = fgets($fp,255);
$array[$i++]=split(";"$zeile);
}
fclose($fp);
for($x=0;$x < count($array);$x++)
{
for($y=0;$y < count($array) -1;$y++)
{
if(strcmp(strtolower($array[$y][$feld]),strtolower($array[$y +1])) > 0)
{
$temp = $array[$y];
$array[$y] = $array[$y +1];
$array[$y +1] = $temp;
}
}
}

Hushi2
09.10.2002, 12:21:54
Tolles Script, hab ich gleich koppiert.

Wie heist denn nun das Sortierte Gesamtergebnis ?

markus.thiede
10.10.2002, 14:42:40
Die die Daten stehen jetzt sortiert in $array.

Ausgabe:

...
echo "<table>n";
for($x=0;$x < count($array);$x++)
{
echo "<tr>n";
for($y=0;$y < count($array[$x]);$y++)
{
printf("<td>%s</td>n",$array[$x][$y]);
}
echo "</tr>n";
}
echo "</table>n";

Hushi2
11.10.2002, 13:34:13
Also, die Original Text DB hat eine spezielle Reihenfolge (letzter Eintrag am Schluss, also unsortiert)

Ich übergebe die Daten z.B. Wert1,Wert2 usw in ein Dropdownmenü zur Verlinkung !
Klappt hervorragend.
Jedoch ist das Dropdownmenü sortiert wie die Datensätze in der DB stehen.
Ich müsste also erst die DB (test.txt) sortieren (also Alphabethisch nach Wert 1 z.B.)
Nun soll mein vorhandenes Script wieder greifen und die SORTIERTEN Daten als Dropdown zur Verlinkung anzeigen !

Mein Quelltext:
************
$fp = fopen test.txt","r");
echo "<select name="namenl" size="1">";
while ($data = fgetcsv ($fp, 1000, ";"))
{
echo "<option value="".$data[0].";".$data[1]."">".$data[0].";".$data[3]."</option>";
$i++;
{
}
}
echo "</select>";
echo "</form>";
fclose ($fp);

GEHT SOWAS MIT MEINEM SCIRPT?
Oder muss / soll ich die sortierte DB erst unter einem anderen Namen, z.B. test2.txt speichern und die dann mit meinem Script aufrufen ?

Wie würde sowas aussehen ?
Also test.txt öffnen, alphabetisch sortieren und dann als test2.txt speichern !

markus.thiede
14.10.2002, 12:05:49
Dann probiers mal so...

$fp = fopen test.txt","r");
echo "<select name="namenl" size="1">";
$spalte = 0; //Sortiere nach spalte 1;
while ($data = fgetcsv ($fp, 1000, ";"))
{
$array[] = $data;
}
for($x=0;$x<count($array);$x++)
{
for($y=0;$y <count($array)-1;$y++)
{
if(strcmp(strtoupper($array[$y][$spalte]),strtoupper($array[$y+1][$spalte])) > 0)
{
$temp = $array[$y];
$array[$y] = $array[$y+1];
$array[$y+1] = $temp;
}
}
}

while($data = each($array))
{
echo "<option value="".$data[0].";".$data[1]."">".$data[0].";".$data[3]."</option>";
$i++;
}

echo "</select>";
echo "</form>";
fclose ($fp);

Hushi2
14.10.2002, 17:54:37
als Dropdown werden jetzt Zahlen von 1 - nEinträge gezeigt !
1;
2;
3;
usw. usw.

$data[0] = Zahl nicht Wert aus Spalte 1 !

Hushi2
18.10.2002, 10:04:08
Welche Variable / Array muss ich angeben, um den Wert1 und Wert3 aus jeder Zeile im Dropdown auszugeben ????

markus.thiede
21.10.2002, 13:25:04
Also jetzt versteht ich glaub ich nicht ganz was du mir sagen möchtest.
also $array ist ein zweidimensionales Array

Inhalt läst sich wie folgt aufrufen:

$array['Zeile'-1]['Spalte'-1] = 'wert';

Die Zeilen des Arrays sind Natürlich nach der Sortierung nicht
mehr identisch mit den Zeilen der Datei.

diese Schleife Kopiert Nacheinander die Zeilen (0-n) des Arrays
in die Variable Data.

Inhalt läst sich wie folgt aufrufen:
$data['Spalte'-1] = 'wert';

Die Reihenfolge der Spalten in $array[] und in $data sollten mit den der Textdatei übereinstimmen.

while($data = each($array))
{
echo "<option value="".$data[0].";".$data[1]."">".$data[0].";".$data[3]."</option>";
$i++;
}

Wo liegt nun der Fehler ?

Hushi2
21.10.2002, 15:44:52
liegt darin, das bei $data[0] = eine Zahl ist
Und zwar erhalte ich ein Dropdown-Menue mit Zahlen
0
1
2
3
4
5
(soviele wie Datensätze enthalten sind !

Also ist $data[0] nicht Wert 1 aus Zeile !
Ich brauche aber die ECHTEN INHALTE aus WERT1, Wert2 usw.
$data[1] = array
$data[2] = keine Ausgabe

markus.thiede
23.10.2002, 12:37:42
Hab den Fehler gefunden...

while($data = each($array))
{
$data = $data[1]; // <-- Füge bitte diese Zeile ein.
echo "<option value="".$data[0].";".$data[1]."">".$data[0].";".$data[3]."</option>";
$i++;
}

Hushi2
24.10.2002, 00:01:32
Super, das wars !
Vielen Dank für Deine UNERMÜDLICHE HILFE !
Gruß
Hushi