DB Daten mit .txt Daten abgleichen und auswerten

creativeheadz

Erfahrenes Mitglied
Moin moin,

Mit folgendem Code überprüfe ich, ob die Werte, die in einer Datenbank stehen, auch in einer .txt Datei vorhanden sind. Zum Schluss möchte ich ein Ergebnis ausgeben was mir sagt Test war erfolgreich oder Test war nicht erfolgreich.

PHP:
      if (strpos($score, $CHNR) !== false) {

        $identid = "ok";
        $score = substr($zerlegen[0], 0, 4);
        $prozent = $score/10;
        // PEAK Prüfen
        $abfrage = "SELECT * FROM ident_db WHERE chargennummer ='$CHNR'";
        $ergebnis = mysql_query($abfrage);
        
        while ($row = mysql_fetch_object($ergebnis)) {

          $PEAK = "$row->peak1";
          $PEAK2 = "$row->peak2";
          $wb1 = "$row->wb1";
          $wb1_2 = "$row->wb1_2";
          $wb2 = "$row->wb2";
          $wb2_2 = "$row->wb2_2";
        }
        
         // PEAK1
          if ($PEAK != "") {
          
            $handle = fopen("../test/peak_$dateiname", "r");
            
            while (!feof($handle)) {

              $buffer = fgets($handle);
              
              if (strpos($buffer, $PEAK) !== false) {

                 $peaktrue="ok";
                 
              } else{ $peakfalse="nichtok";}
            }           
          } else{ $peakempty="leer"; }
          
          // PEAK2
          
          if ($PEAK2 != "") {
          
            $handle = fopen("../test/peak_$dateiname", "r");
            
            while (!feof($handle)) {

              $buffer = fgets($handle);
              
              if (strpos($buffer, $PEAK2) !== false) {

                 $peak2true="ok";
                 
              } else{ $peak2false="nichtok"; }
            }           
          } else{ $peak2empty="leer"; }
          
          
          //WB1
          
          if ($wb1 != "" && $wb1_2 != "") {
          
            $handle = fopen("../test/peak_$dateiname", "r");
            
            while (!feof($handle)) {

              $buffer = fgets($handle);
              $buffer = (float)str_replace(",", ".", trim($buffer));
              $wb1 = (float)str_replace(",", ".", "$wb1");
              $wb1_2 = (float)str_replace(",", ".", "$wb1_2");
              
              if ($wb1 < $buffer && $wb1_2 > $buffer) {

                $wb1true="ok";
                
              }else{ $wb1false="nichtok"; }
            }
          }else{ $wb1empty="leer"; }
          
          // WB2
          
          if ($wb2 != "" && $wb2_2 != "") {
            echo"wb2<br>";
            $handle = fopen("../test/peak_$dateiname", "r");
            
            while (!feof($handle)) {

              $buffer = fgets($handle);
              $buffer = (float)str_replace(",", ".", trim($buffer));
              $wb2 = (float)str_replace(",", ".", "$wb2");
              $wb2_2 = (float)str_replace(",", ".", "$wb2_2");
              
              if ($wb2 < $buffer && $wb2_2 > $buffer) {
                 
                 $wb2true="ok";
                
              }else{ $wb2false="nichtok";  }
            }
          }else{ $wb2empty ="leer";}
          
        }
      }
    }
  }
}

wenn peak, peak2, wb1 und wb2 leer sind dann war der test nicht erfolgreich. Das bekomme ich auch noch hin

Nun muss ich aber ja noch auf alle anderen Fälle eingehen, die eintreten können.

Das Problem ist, das in der .txt Datei ca. 30 -35 Unterschiedliche Werte stehen die abgeglichen werden. Mit den while schleifen kann ich zwar herausfinden ob der gesuchte Wert in der txt vorkommt jedoch werden ja auch alle nicht übereinstimmenden Werte durchlaufen, geprüft ...

Wie kann ich das am besten anstellen das ich alle möglichen Fälle überprüfen kann?

Wäre sehr froh wenn mir hierbei jemand helfen kann.
 
Ich würde dir hier gerne helfen, verstehe aber dein Problem nicht. Kannst du evtl. mal versuchen deine Frage anders zu formulieren oder das eigentliche Problem nochmal besser beschreiben?
 
Hi,

mir geht's genauso, beschreibe am Besten mal genau, was in Datenbank und Textdatei steht und was genau Du da jetzt prüfen willst. Durch Deinen Code steige ich nicht durch.

LG
 
Ja klar kein Problem :)

Also,

Nachdem der Code durchgelaufen ist werden bestimmte Variablen vergeben.


Beispiel:

$peaktrue="ok"
$peakfalse="nichtok"

Wenn der Datenbank Wert $row->peak leer ist dann kommen $peaktrue und $peakfalse nicht mehr in Frage sondern:

$peakempty="leer"

Soweit ok.

Gehen wir jetzt einmal davon aus das der Wert in der Datenbank vergeben ist (Beispiel: 700)

Dann wird in meiner txt Datei nach dem Wert 700 durchsucht.

In der Datei stehen jedoch noch mehr Werte die nicht 700 lauten.

__________________

100
200
300
400
500
600
700
800
900
1000
1100
1200
...

3100
__________________

Dann erkennt mein Code: Ah ok 700 ist dabei und vergibt $peaktrue="ok"

Nun wird die schleife ja noch weiter durchlaufen bis Alle Werte geprüft wurden.

Jetzt sind natürlich alle Werte nach 700 nicht mehr ok und somit wird $peakfalse="nichtok" vrgeben.

Entscheidend ist jedoch, dass aufjedenfall der Wert 700 Vorhanden ist . Ob noch andere Werte vorhanden sind ist dann eigentlich egal. Nur muss ich ja für denn Fall das der Wert 700 nicht vorkommt, $peakfalse="nichtok" vergeben. damit ich später irgendwie auswerten kann das der Wert nicht in der txt Datei vorhanden ist.

Bitte frag ruhig weiter wenn du es immernoch nicht verstanden hast.
 
Hi,

Du sollst nicht den Zustand beschreiben, nachdem Dein Code, dessen Sinn ich nicht verstehe, durchgelaufen ist. Du sollst Dein Problem/Aufgabenstellung beschreiben. Was genau willst Du erreichen?

LG
 
Ich meine verstanden zu haben ;)
Sobald du den Wert gefunden hast, breche die Schleife mit
PHP:
break;
ab. Dann wird die Schleife beendet und die restlichen Werte nicht mehr überprüft.
 
Gut ,
den Sinn habe ich ja jetzt erklärt :)

Wie muss eine Abfrage aussehen dir mir sagt

Wenn alle 4 Spalten in der Datenbank leer sind : "Test nicht erfolgreich."

Wenn Spalte 1 vergeben und der Wert durchläuft erfolgreich die Schleife und die anderen 3 Spalten sind leer: " Test erfolgreich"
Wenn die anderen 3 auch vergeben aber Schleife wird nicht erfolgreich druchlaufen : " Test nicht erfolgreich"

Wenn 2 Spalten vergeben und der Wert durchläuft erfolgreich die Schleife und die anderen 2 Spalten sind leer: " Test erfolgreich"
Wenn die anderen 2 auch vergeben aber Schleife wird nicht erfolgreich druchlaufen : " Test nicht erfolgreich"

Wenn 3 Spalten vergeben und der Wert durchläuft erfolgreich die Schleife und 1 Spalte ist leer: " Test erfolgreich"
Wenn die eine auch vergeben aber Schleife wird nicht erfolgreich druchlaufen : " Test nicht erfolgreich"

Wenn 4 Spalten vergeben und der Wert durchläuft erfolgreich die Schleife: " Test erfolgreich"
Wenn die 4 Spalten vergeben sind aber Schleife wird nicht erfolgreich druchlaufen : " Test nicht erfolgreich"
 
Hi,

fragt sich halt nur, ob man das Problem nicht wesentlich einfacher lösen könnte. Dass Du ein und die selbe Datei 4 mal durchläufst, ist ein deutliches Zeichen dafür. Zweitens hantierst Du da mit viel zu vielen Variablen herum. Ich zähle auf Anhieb 14, die vollkommen überflüssig sind und auch nicht die Lesbarkeit des Codes erhöhen.

LG
 
Zurück