WebWork Magazin - Webseiten erstellen lassen, Online Medien, html

Webhoster, Webhosting Provider und Domain registrieren

Home | Registrieren | Einloggen | Suchen | Aktuelles | GSL-Webservice | Suleitec Webhosting
Reparatur-Forum | Elektro forum | Ersatzteilshop Haushalt und Elektronik


Homepage und Webhosting-Forum

Scripte und Programme für PHP, MYSQL. Diskussionen zur Programmierung im Web. Fragen zu CMS, Blogsoftware, Shops, Newsletter und vielen weiteren Scripten.


Forum » PHP & MySQL » Textdatei sortieren mit PHP » Antworten
Benutzername:
Passwort: Passwort vergessen?
Inhalt der Nachricht: Fett | Kursiv | Unterstrichen | Link | Bild | Smiley | Zitat | Zentriert | Quellcode| Kleiner Text
Optionen: Emailbenachrichtigung bei Antworten
 

Die letzten 5 Postings in diesem Thema » Alle anzeigen
von lexx
Erfolgsmitteilung: Problem gelöst, patient tot
1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
20: 
21: 
22: 
23: 
24: 
25: 
26: 
27:
function sortieren ($datei, $f)
{
 $i = 0; 
 $fp = @fopen($datei,"r"); $ds=count($datei);
    while ($inhalt= @fgets($fp,1000)) 
 {   
      $feld=explode("|",$inhalt); 
   echo "lese feld1 = $feld[1] "; 
   $daten1 = array ("feld1"=>$feld[1], "feld2"=>$feld[2],"feld3"=>$feld[3],"feld4"=>$feld[4],"feld5"=>$feld[5]);
   echo "noch da: daten1 = $daten1[feld1] ";
   $daten = array ($daten1, $i);
   echo "schwups weg: daten = ".$daten[feld1][$i]."
";
   $i++;
    } 
   @fclose($fp); 
   
   
   for($y=0;$y<$ds;$y++) 
   {  
   echo "DS $y = ".$daten[feld1][$y]."  - ".$daten[feld2][$y]."  - ".$daten[feld3][$y]." 
"; 
   };

return "Daten weggezaubert nu gibbed nücht mehr zu sortiere...";
}


neues problem, suche strick zum aufhängen
von raiserle
siehste, und schon wieder nicht drüber nachgedacht.
ich werde dir den quellcode hierzu nicht posten, da er, wenn du die 3 anhaltspunkte
so nimmst, wie sie dastehen, nicht einmal 5 zeilen code ausmachen..

das problem, den incrementellen wert als erstes in der datenstruktur zu bringen führt eben immer dazu, das du nen fehler erhälts.
deswegen ahtte ich dir ja geraten, es sorum zu machen.

der name der arrayvariablen gefollgt von dem assoziativarray was der vorname oder name sein kann dieser wiederrum enthält das array mit dem incrementellen indize

$m[vorname][0]="Max";

und dummstellen muss man sich schon gar nicht. du sagtest du wolltest sortieren, bitte:
$wonach_sortieren, oder $indize oder... oder...
irgendwoher muss ich doch wissen wonach.
also steht in $wonach_sortieren der assoziative index. eben vorname, name oder ort..

ach egal habs satt zu erklären.. hier haste dein achso hochkoplexer quellcode...

1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
20: 
21: 
22:
<?php
$m[vorname][0]="Herbert";$m[name][0]="Test";$m[ort][0]="Hier";
$m[vorname][1]="Detlef";$m[name][1]="Mustermann";$m[ort][1]="Nirgendwo";

echo "Wonach wollen Sie sortieren<br />";

foreach($m AS $data => $wert){
        echo '<a href="?sort='.$data.'">'.$data.'</a> ' ;
}

if($_GET['sort']){
    $wonach_sortieren=$_GET['sort'];    // 1. zeile code
    echo $wonach_sortieren."<br />";
    natcasesort($m[$wonach_sortieren]);    // 2. zeile code
    foreach($m[$wonach_sortieren] AS $indize => $wert){    // 3. zeile
        echo $m[vorname][$indize]." ".$m[name][$indize]." ".$m[ort][$indize]."<br />";    // 4. zeile
    }    // 5. zeile
}

?>


und jetzt frag nicht wieso nur 5 zeilen code oder was jede zeile macht.. finds selber raus.
sorry bei solch unüberlegtem rumgepflaume, da kommt mir....

übrigens... mit so einer einstellung kommste nicht weit, egal wo.
von lexx

es hat auch nichts damit zu tun etwas für mich zu behalten,
eher mehr damit, die faulen nicht zu ermutigen immer nur fragen zu stellen.


von wegen faulheit, seit 14 tagen versuch ich es und kriegs nicht hin
und bei 3000 zeilen code ist ja wohl von faulheit auch keine rede.
da erwartet man nen bisschen hilfe und kriegt nur unverständliche
antworten mit denen man auch nichts anfangen kann..
klasse... echt, danke,
die eine hälfte der möchtegern-programmierer wissen auch nicht wie´s geht,
und die andere hälfte hält sich für so überschlau das se meint ihr chinesisch
sei ja wohl eindeutig ...



als ratschlag und hilfe:
-übernimm die datenstruktur so wie dort oben
-benutze natcasesort(); auf das array
-benutze danach eine foreach() und setze das indize welches nach dem sortieren
von dem jeweiligen assozitaiv-array kommt auf $m[assoziativ][indize] ein



ich versteh das nicht, ist denn das sooo schwer zu verstehen ???

foreach($m[$wonach_sortieren] AS $indize => $wert)

ich hab numal keine $wonach_sortieren - Variable...
und ich hab auch keine $indize, und $wert hab ich auch nicht
und ich weiss auch nicht was du da in deiner göttlichen klugheit da
gern sehen würdest..

und das manual hab ich schon so oft studiert das ich es vorbeten kann,
nur geholfen hat es nicht...

meine datenstruktur ist so..
$daten[$i] = array ($feld[1],$feld[2],$feld[3]);
und nicht umgedreht...und ich möchte nichts anderes als nach $feld xyz sortieren

das kann doch nicht so schwer sein das mal verständlich
und so zu demonstrieren das der rest der menschheit auch mal nen erfolgserlebnis hat.

ich brauch nen richtig anständiges beispiel was nicht "detlev" vor "mustermann" setzt
sondern "Mustermann" vor "test" und idealerweise auch noch 2434 vor 11432.

sorry aber ich bin nicht als göttlicher php-programmierer ausm ei gekrabbelt
sondern nur nen otto-normal-sterblicher der hilfe sucht, weil ers allein einfach nicht begreift.

das ist übrigens mein 4. Beitrag !
von raiserle
ja wohl wahr $m
;)

und man sollte die datenstruktur noch ein wenig anders wählen, damit es leichter
zu sortieren ist. vielelicht den index hintendran hängen

$m[vorname][0]="Herbert";$m[name][0]="Test";$m[ort][0]="Hier";
$m[vorname][1]="Detlef";$m[name][1]="Mustermann";$m[ort][1]="Nirgendwo";

und vielleicht solltet ihr mal weniger rummaulen und eher mehr die manuals auf php.net
lesen. ganz zu schweigen von der grauen masse anzuschmeissen. es hat auch nichts
damit zu tun etwas für mich zu behalten, eher mehr damit, die faulen nicht zu ermutigen immer nur fragen zu stellen.
als ratschlag und hilfe:
-übernimm die datenstruktur so wie dort oben
-benutze natcasesort(); auf das array
-benutze danach eine foreach() und setze das indize welches nach dem sortieren
von dem jeweiligen assozitaiv-array kommt auf $m[assoziativ][indize] ein

noch nen kleiner tip:

foreach($m[$wonach_sortieren] AS $indize => $wert)
von lexx

http://de.php.net/manual/de/function.array-multisort.php könnt dir helfen.


hab ich auch versucht, kommen auch nur fehler raus


function sortieren ($datei, $f) // $f ist das feld welches sortiert werden soll...
{
$i = 0;
$fp = @fopen($datei,"r"); $ds=count($datei);
while ($inhalt= @fgets($fp,1000))
{
$feld=explode("|",$inhalt); $daten[$i] = array ($feld[1],$feld[2],$feld[3]); $i++;
}
@fclose($fp);
for($y=0;$y<$ds;$y++)
{
sort ( $daten[$y][$f]); //oder alternativ
//array_multisort($y, $f);
echo "sortiere ".$daten[$y][$f]."<br>";
};
};

Fehler bei sort:
sort() expects parameter 1 to be array, string given in

Fehler bei array_multisort:
Argument #1 is expected to be an array or sorting flag that has not already been specified

Nach oben