Melanie: zahl in string finden

hallo,

ich fürchte, mein problem ist ein bisschen kompliziert, ich versuche es mal möglichst verständlich auszudrücken.

ich möchte für eine schule einen terminkalender erstellen, bei dem zum beispiel ein 8.klässler auf einen hyperlink klickt und dann nur seine termine sieht (für 8.klässler).

meine textdatei sieht so aus:
Termin;Datum;Uhrzeit;wen betriffts

Klassenelternabende der 8.-10.Klassen;21.-23.10.2003;19 Uhr;8/9/1;
Herbstferien;27.-31.10.2003;<p><br></p>;F;
...

was ich bisher geschrieben habe:

<?
  $typ=substr($HTTP_GET_VARS["typ"],0,1);
  $datei="txt/termine.txt";
  $liste=file($datei);

foreach($liste as $termin)
  {
     $einzel=explode(";",$termin);

if($typ=="A")
     {
     echo "<tr class="termine">";
     echo "<td class="termine">".$einzel[0]."</td>";
     echo "<td align=center class="termine">".$einzel[1]."</td>";
     echo "<td class="termine">".$einzel[2]."</td></tr>";
     }
     elseif($typ==$einzel[3])
     {
     echo "<tr class="termine">";
     echo "<td class="termine">".$einzel[0]."</td>";
     echo "<td align=center class="termine">".$einzel[1]."</td>";
     echo "<td class="termine">".$einzel[2]."</td></tr>";
     }

}
?>

jetzt hab ich folgendes problem. als variable übergebe ich ja immer nur eine Zahl oder einen Buchstaben. in meiner textdatei muss ich aber teilweise mehrere reinschreiben (8/9/1), weil der termin vielleicht für mehrere klassen gilt.

wie bekomme ich jetzt php dazu, in meiner textdatei unter position[3] nachzuschauen, ob da <b>irgendwo</b> eine 8 oder eine 7 ist und dann die termine anzuzeigen?

ich hoffe, das war einigermaßen verständlich formuliert.
Danke im voraus,
melanie

  1. Hallo Melanie!

    meine textdatei sieht so aus:
    Termin;Datum;Uhrzeit;wen betriffts

    Das sieht mir doch nach einer CSV-Datei aus.
    Also könntest Du Dir mal im PHP-Manual folgende Funktion anschauen:
    fgetcsv (http://de.php.net/manual/de/function.fgetcsv.php).

    8/9/1;

    $typ=substr($HTTP_GET_VARS["typ"],0,1);

    HTTP_*_VARS sind veraltet.
    Du solltest besser $_GET nehmen.
    Mehr Informationen dazu im Manual (http://de.php.net/manual/de/language.variables.predefined.php):

    wie bekomme ich jetzt php dazu, in meiner textdatei unter position[3] nachzuschauen, ob da <b>irgendwo</b> eine 8 oder eine 7 ist und dann die termine anzuzeigen?

    Wenn Du nun bspw. eine MySQL Datenbank benutzen würdest wäre es evtl. sinnvoll, eine weitere Tabelle mit Zuordnungen anzulegen (Termin-Klasse-Zuordnungen).
    Da Du jedoch mit einer CSV Datei arbeitest kannst Du das nicht so einfach machen.
    Also würde ich Dir vorschlagen, daß Du position[3] mit / explodest und dann eben die einzelnen Werte, Die du ja dann wieder in einem Array hast, prüfst.

    MfG
    Götz

    --
    Losung und Lehrtext für Samstag, 20. September 2003
    Ich will meinen Odem in euch geben, dass ihr wieder leben sollt, und will euch in euer Land setzen, und ihr sollt erfahren, dass ich der Herr bin. (Hesekiel 37,14)
    Ihr sollt euch als solche ansehen, die für die Sünde tot sind, aber für Gott leben in Christus Jesus, unsrem Herrn. (Römer 6,11)
    (http://www.losungen.de/heute.php3)
    1. Danke Götz,

      ich werds mal versuchen.

      lg,
      melanie

    2. Hallo,

      Kleine Ergaenzung:

      Mehr Informationen dazu im Manual (http://de.php.net/manual/de/language.variables.predefined.php):

      Der Abschnit der Doku zu den vordefinierten Variablen, d.h.
      die oben angegebene Seite bzw. die von dort verlinkten
      Seiten zu $_GET, $_POST, $_SERVER u.s.w. sind leider noch
      nicht fertig uebersetzt

      Bis es soweit ist, sollte man IMHO immer auf die englische Doku
      verweisen:
      http://www.php.net/manual/en/language.variables.predefined.php

      Ansonsten noch als Tip an Melanie:
      Ich wuerde die Schulklassen zweistellig schreiben,
      da Ihr ja offenbar auch eine zehnte Klasse habt.
      Also 01, 02, ..., 10
      Sonst gibt die Suche nach "1" auch einen Treffer,
      wenn in der entsprechenden Spalte eine "10" steht.

      Gruesse,

      Thomas