Überprüfen ob variable bereits in txt datei vorhanden ist?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Überprüfen ob variable bereits in txt datei vorhanden ist?

    Hallo!

    Ich programmiere grad eine kleine Filmverwaltung und komm nicht weiter.
    Problem ist: Wie überprüfe ich ob der Film bereits in der text datei vorhanden ist.

    Hier ist der code den ich bis jetzt habe.
    Wär super wenn mir wer weiterhelfen könnte

    PHP-Code:
    <form action="<?php echo $_SERVER["PHP_SELF"?>" method="post">
     Film:         <input type="text" name="name"> <br>
     Genre:    <input type="text" name="genre"> <br>
     Bewertung: <input type="text"name="bewertung" maxlength="2"> <br>


     <input type="submit" value="Eintrag speichern">
    </form>
    <?php


     

    // Formulareingabe speichern
     
    if ($_POST) {
     
    $name $_POST["name"]; // Variablen einlesen
     
    $genre $_POST["genre"];
     
    $bewertung $_POST["bewertung"];
     
    $check implode ('',file("daten.txt"));
     
    $datum date("d.m.Y",time()); // Aktuelles Datum ermitteln
     
    $text "$name;$genre;$bewertung;$datum;\n"// Textstring zusammensetzen



     
    $dateiname "daten.txt"// Name der Datei
     
    $handler fOpen($dateiname"a+"); // Datei zum Text anhängen öffnen
     
    fWrite($handler$text); // Dateiinhalt in die Datei schreiben
     
    fClose($handler); // Datei schließen

    }
    ?>

    <table border="1">
     <tr style="background-color: #B9B9B9;">
      <th>Film</th>
      <th>Genre</th>
      <th>Bewertung</th>
      <th>Datum des Eintrags</th>
     </tr>

    <?php
    //Ausgabe
    $datei "daten.txt"// Name der Datei
    $array file($datei); // Datei in ein Array einlesen

    foreach ($array as $element) {
     
    // Die Variablen ($name, $genre, $bewertung, $datum) aus der Variablen ($element) holen
     
    list($name$genre$bewertung$datum) = explode(";"$element);
     echo 
    "<tr>";
     echo 
    "<td>$name</td>";
     echo 
    "<td>$genre</td>";
     echo 
    "<td>$bewertung</td>";
     echo 
    "<td>$datum</td>";
     echo 
    "</tr>";
    }
    ?>

    </table>

  • #2
    Schau dir mal in_array an.


    PS "if ($_POST)" ist immer wahr.
    gruss Chris

    [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

    Kommentar


    • #3
      bevor ich inarray anwenden kann muss ich aber die daten.txt einlesen mit fgets oder?

      Kommentar


      • #4
        Du kannst die Datei auch mit file_get_contents einlesen und mittels strpos suchen.

        Ach ja, ggf. ist auch fget und fputcsv was für dich, dann kannst du dir das implode bzw. explode schenken.
        gruss Chris

        [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

        Kommentar


        • #5
          PHP-Code:
          //gesamten Content der Datei holen
          $pfad "ort/der/datei.txt;
          $inhalt_datei = file_get_contents($pfad);

          if(
          $inhalt_datei)
          {
             
          $ausdruck    =    "!^fängtanmitZeichenoderZahl ...
             
          frickelDirhiereinenRegAusdruckzusammen ...
             
          dasEndeistwichtig --> kein';' oder '\n' aber '*' damit 
             weiter gesucht wird 
          --> [^ ;\n]*!i";

          preg_match_all (
          $ausdruck$inhalt_datei$einzeldaten_arr,
           PREG_PATTERN_ORDER);

          //eventuelle doppelte Einträge löschen 
          $einzeldaten_arr    =    array_unique($einzeldaten_arr);

          Nun hast Du in $einzeldaten_arr alle Daten vorliegen und kannst
          z.B. über eine foreach (...) mit der Eingabe vergleichen.
          Den regulären Ausdruck kannst Du aber auch noch weiter
          verfeinern, so dass er nur den ersten Wert/ Zeile rausholt
          und in dem Array speichert.
          Sieht etwas "overdressed" aus, aber so bist Du schon mal
          darauf vorbereitet z.B. aus Webseiten Inhalt auszulesen,
          dann ist $pfad einfach die URL zu der gewünschten
          Seite ...). Habe da mal ein Backup-Script über 1250 Zeilen
          geschrieben, dafür habe ich jetzt aber auch immer die
          aktuellen Fussball-Tabellen (und vergangene), Spieltag/-e sowie
          sämtliche Vereine, Ligen mit dazugehörigen Spielern schön in
          Tabelle mit Bild auf meinem PC ... *flöt.

          Habe ich nur schnell runtergetippt!!!, aber so gehts im Grunde.

          ... strpos() ist natürlich auch eine gute Wahl (und ausreichend)
          Zuletzt geändert von php_fussel; 19.01.2009, 21:42.

          Kommentar


          • #6
            PS "if ($_POST)" ist immer wahr.
            Nööö....

            PHP-Code:
            // dieses
            if($_POST){}


            // ist das gleiche wie
            if((bool)count($_POST)){}

            // oder kürzer
            if(!empty($_POST)){} 
            Und kann darum sehr wohl FALSE werden
            Wir werden alle sterben

            Kommentar


            • #7
              Re: Überprüfen ob variable bereits in txt datei vorhanden ist?

              Original geschrieben von freakie
              Hallo!

              Ich programmiere grad eine kleine Filmverwaltung und komm nicht weiter.
              Wie viele Filme möchtest du verwalten?

              Und möchtest du wirklich bei jedem Script-Aufruf die ganze Datei durchackern, nur um einen Eintrag zu finden?

              Das schreit ja förmlich nach einer Datenbank-Tabelle.
              Und SQLite ist ja nun wirklich nicht sooo schwer zu bedienen ...


              Problem ist: Wie überprüfe ich ob der Film bereits in der text datei vorhanden ist.
              Ich vermute mal, dass du Doppel-Einträge verhindern möchtest. In einer Datenbanklösung ist das ganz einfach:

              Man definiert bei der Erstellung Constraints ("Einschränkungen"). Werden diese beim Einfügen "verletzt", meckert die Datenbank das an. Im Fall Doppel-Einträge heißt die Einschränkung "UNIQUE".
              Klingon function calls do not have “parameters”‒they have “arguments”‒and they always win them!

              Kommentar


              • #8
                Original geschrieben von combie
                Und kann darum sehr wohl FALSE werden
                Is ja schon gut. Ich geb mich geschlagen. Sry
                gruss Chris

                [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

                Kommentar

                Lädt...
                X