aus Textdatei bestimmte Nummern auslesen

Schwammerl

Mitglied
Hallo,

ich stehe voll auf dem Schlauch. Ich möchte aus einer Textdatei, die so ausschaut:

02|01|0201|shopstart.php?a=shop&u=0201|Kibri
02|02|0202|shopstart.php?a=shop&u=0202|Kibri
02|03|0203|shopstart.php?a=shop&u=0203|kibri
12|02|1202|shopstart.php?a=shop&u=1202|Wilesco
25|01|2501|shopstart.php?a=shop&u=2501|Vollmer

volgendes Ergebnis in einem Array haben.
1
3
4

Das Array wird dann mit einer Schleife ausgelesen und die Nummern in eine Variable z.B. $hersteller geschrieben.
1 bedeutet 1. Hersteller ( Kibri )
3 bedeutet 2. Hersteller ( Wilesco ) wobei von dem vorherigen Hersteller 3 Links vorhanden sind.
4 bedeutet 3. Hersteller ( Vollmer ) wobei von dem Hersteller nur ein Link vorhanden ist.

Das ganze brauche ich um mir ein Menü für einen Shop aufzubauen.
Bitte mit Beispiel, denn ich komm einfach nicht dahinter wie ich so was lösen soll.

Gruß
Schwammerl
 
Hi!

So würde es gehen (ist vermutlich noch mit weniger Schleifen zu gestalten, aber es funktioniert so auch, bin da eher prakmatisch):

PHP:
<?php
// Mit fopen kannst du eine Datei auslesen
$fp = fopen("datei.txt","r");

// Nun folgt das Auslesen der Zeilen mit einer While-Schleife
if ($fp)
{
	$i=0;
 	  while(!feof($fp)) // Mit feof findet man das Zeilenende
	  {
		$text[$i] = fgets($fp);
	        $i++;
	  }
	fclose($fp);
}

// Bei echo $text[0] wird die erste Zeile des Dateiinhaltes ausgegeben 
	echo $text[0]."<br>"; // (02|01|0201|shopstart.php?a=shop&u=0201|Kibri)

// Nun erhälts du ein array im array, jede Zeile ist in der 1. Zahl ($txtzeile[hier!][x]) gespeichert
// Die Zeichen jeder Zeile sind in der 2. Zahl geseichert ($txtzeile[x][hier!])
	$i =0;
	 foreach ($text as $ein)
	 {
         	$txtzeile[$i] = explode("|", $ein);
                 $i++;
	 }

// Bei echo $txtzeile[x][0] erhältst du also aus der Zeile x die ersten Zeichen bis zum | 
	echo $txtzeile[0][0]."<br>"; // 01
?>

Man kann nun $txtzeile natürlich noch auseinanderpflücken und alle 1. Werte der Zeile in ein extra Array schreiben.

Hoffe ich konnte helfen! :)

Viele Grüße,
Jacka
 
Hallo,

also so ganz steig ich da jetzt nich durch. Ich glaub ich steh ein wenig auf der Leitung.

Also so soll das Menü mal ausschauen.

Kibri hier der Anfang mit 1
Link1
Link2
Link3
Wilesco hier geht es weiter mit 3
Link4
Vollmer hier geht es weiter mit 4
Link5

Die Zahlen 1 ,3 ,4 sollen mit Hilfe der ersten Nummer in der Textdatei erstellt werden.
Die zahlen geben an wie viele Links vorhanden sind bis eine neuer Hersteller kommt.
Wenn jetzt noch ein Hersteller kommen würde, würde er die Nummer 5 bekommen, weil es ja bis dahin 5 Links sind.

Ich bräuchte was, das mir in einer Variable die Zahlen 1,3 ,4 ausgibt und in einer anderen bei jedem Durchlauf jeden Link. der Link besteht immer aus ( shopstart.php?a=shop&u= ) Die 4 ? sind variabel. So wie oben soll die Datei x mal ( x steht für die Zeilen der Datei ) durchlaufen werden. Bei jedem Durchlauf soll also der Link ausgegeben werden und wenn ein neuer Hersteller kommt die Nummern.

Wie mache ich es jetzt mit dem Beispiel wie oben gezeigt.
Gruß
Schwammerl
 
Hallo,

kann mir denn keiner helfen bei meinem Problem? Bin mit Schleifen und Arrays noch nicht so fit.
Danke schon mal im Voraus.

Gruß
Schwammerl
 
Sorry! Hatte noch garnicht gesehen, dass du geantwortet hattest:-)

Also ich würde dir ja gerne weiter helfen, aber ich hab nicht verstanden was du willst :confused:

Die ersten Zahlen jeder Reihe, sind die Herstellerspezifisch? Als 02 für Kibri, 12 für Wilesco? Man könnte auch die zweite Zahlenreihe für die Anzahl der Links nutzen...

OK. Das Ergebnis soll so aussehen richtig?:
Hersteller: Kibri (ID 1)
Link1
Link2
Link3
Hersteller: Wilesco (ID 3)
Link 4
Hersteller: Vollmer (ID 4)

Aber warum ist es wichtig die "Hersteller ID" an der Anzahl der Links fest zu machen?

Die 4 ? sind variabel.
Welche 4 Fragezeichen sind variabel?

Kannst du noch einmal ganz genau erklären, wie das aussehen soll?

Grüße,
Jacka
 
Hallo,

also das ganze soll für dieses Menü bereitgestellt werden, wobei sich das ( onclick="return N(1,0);" ) und ( id=s1) unten immer wenn ein neuer Hersteller kommt ändert. Also es geht mit 1 los, ist ja logisch ist ja der erste Hersteller.
Dann kommen 3 Links, also bekommt der 2. Hersteller die Nummer 3, dann kommt der 4.Link, da bekommt der 3. Hersteller die Nummer 4.

Die Links sollten wenn es möglich ist einfach der reihe nach durchlaufen.

Das Menü das unten gezeigt ist, soll natürlich noch eine Funktion bekommen, das es beim Seitenaufbau so oft durchläuft bis alle Links durchlaufen sind. Wenn es möglich ist.

PHP:
<HTML>
<HEAD>
<META http-equiv=Content-Type content="text/html; charset=windows-1252"><LINK 
href="menue/cpmenu.css" type=text/css rel=stylesheet>
<SCRIPT language=JavaScript type=text/javascript>
			<!--
			function N(itemID, r) {
				var e = document.getElementById('s'+itemID);

				if (e.className != "nc")
				{
					e.className = "nc";
				}
				else
				{
					e.className = "no";
				}

				if (r == 0)
					return false;
		
				return true;
			}
			//-->
		</SCRIPT>

<META content="MSHTML 6.00.2800.1561" name=GENERATOR></HEAD>
<BODY><?xml version="1.0" encoding="UTF-16"?>
<TABLE cellSpacing=0 cellPadding=0 border=0>
  <TBODY>
  <TR>
    <TD>
      <UL id=n>
        <LI><A id=i onclick="return N(1,0);" 
        href="">
        <IMG src="file:///F:/___%20mehr%20geb%20ich%20nicht%20aus!-Dateien/localtree-Dateien/NITR-CRUMPLER.gif"></A><A 
        onclick="return N(1,0);" href="">Alles 
        von Kibri</A>
        <DIV class=nc id=s1>
        <UL id=l>
          <LI><A 
          href="shopstart.php?a=shop&u=0201" target="Hauptframe2" >Bausätze </A></LI></UL>
        <UL id=l>
          <LI><A 
          href="shopstart.php?a=shop&u=0203" target="Hauptframe2" >Bausätze spezial</A></LI></UL>
        <UL id=l>
          <LI><A 
          href="shopstart.php?a=shop&u=0202" target="Hauptframe2" >Bausätze fertig</A></LI></UL>
          
          </DIV></LI>
          </UL></TD></TR></TBODY></TABLE></BODY></HTML>

Die 4 ? sind ganz einfach die 4 stellige Zahl hinten bei den Links.
Ich weis, es ist nicht einfach zu erklären hoffe es hilft Dir ein wenig weiter.

Gruß
Schwammerl
 
Zurück