Daten vergleichen db <-->txt-file

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

  • #16
    schon allein weil soviele regeln wartungstechnisch unfug sind!! son switch-case nutz ich nur für meine menüs, der rest ist algorithmus!! Würd ich hier auch so ansetzen wie penizillin!!

    Kommentar


    • #17
      Original geschrieben von PHP-Desaster
      schon allein weil soviele regeln wartungstechnisch unfug sind!! son switch-case nutz ich nur für meine menüs, der rest ist algorithmus!! Würd ich hier auch so ansetzen wie penizillin!!
      Das ist ein normales matching von zwei sequentiell sortierten Dateien, zB Stammdatei und Updates. Das sieht bloss nach viel aus, weil man es nicht gewohnt ist.

      Das andere mit in_array ist eine einzige Regel und sollte auch keinen Anlass zur "soviele regeln unfug" Bemerkung geben.

      Kommentar


      • #18
        Also ihr könnt mich nun mit Katzendreck bewerfen oder was auch immer aber ich bekomme es nicht hin.


        Code:
        $txt1[] = preg_split('/_/', $str, -1, PREG_SPLIT_DELIM_CAPTURE);
        hier bekomme ich ein Array rein ($str)
        Das filtere ich nach "_". Da kommt dann ein einzelner Wert (Name) heraus.

        Dann verarbeite ich das ganze wie penizillin beschrieben.

        Code:
        $s = '';
        foreach ($txt1[0] as $el)
        {
           $s .= "'".$el."',";
        }
        Weiter dann die Abfrage der DB

        Code:
        $sql = "SELECT namehost FROM dasi where namehost not in ('$s')";
        Die Variable $s ist leer dies ist das Ergebnis der o.g. abfrage:

        Code:
        SQL-Befehl = SELECT namehost FROM dasi where namehost not in ('')
        So wie ich penizillin verstanden habe sollte in $s dann etwa so aussehen
        Code:
        SELECT namehost FROM dasi where namehost not in ('saf04002,b8-86892,........,.....,..')
        Warum kommt das bei mir nicht so raus . Wo ist mein Fehler?

        Kommentar


        • #19
          zeig mir mal das file, nur den Anfang der zu den zu den ersten beiden Einträgen führt (bzw. etwa die vier ersten Zeilen) , saf04002 und b8-86892

          Kommentar


          • #20
            $txt1[] = preg_split('/_/', $str, -1, PREG_SPLIT_DELIM_CAPTURE);

            ich glaube schon hier ist ein Haufen Unsinn. Verdächtig sind:
            []
            /_/
            PREG_SPLIT_DELIM_CAPTURE

            deswegen - was ist in $str drin? im Beispiel.
            Das heisst, verdächtig ist auch:
            $str
            weil noch nicht gesagt wurde wie es aufgebaut ist.
            Zu vermuten ist, dass es aaaaa_bbbbb_ccccc_ddddd enthält, wenn aaaaa usw. die Daten sind.
            Zuletzt geändert von h31ss; 24.07.2006, 14:10.

            Kommentar


            • #21
              Hier mal ein Auszug aus dem File:

              Code:
              06.07.2006  23:46        87.941.632 b8-86892_2.tib
              07.07.2006  23:46        45.726.208 b8-86892_3.tib
              08.07.2006  23:46        47.972.864 b8-86892_4.tib
              04.07.2006  16:23     2.923.172.864 b8-86892_.tib
              09.07.2006  23:46        30.006.272 b8-86892_5.tib
              Folgender Aufbau :

              Aus dieser Datei werden die einzelnen Zeilen ausgelesen. Diese werden zerlegt in einzelne Teile wie: Zeit, Datum und Namen. Der letztere wird dann an diese besagte Funktion ($str) übergeben. Somit kommt in die Funktion ein solcher Name "b8-86892_2.tib" .
              Preg_split kappt ab dem Unterschrich die Zeichen und übrig bleibt das was ich benötige "b8-86892".

              Das ganze hat bis auf das vergleichen der DB wunderbar funktioniert.

              Ich will es halt um diese Funktion erweitern.

              Dieser Name soll nun mit der Db verglichen werden, wobei die DB das Soll ist. Ausgabe sollen nur die Namen sein die nicht in der txt-Datei bzw. nicht übergeben werden.

              Kommentar


              • #22
                Re: Daten vergleichen db &lt;--&gt;txt-file

                Zurück auf Feld 1:

                Original geschrieben von speed(y)g

                Code:
                <?php
                
                        function vergleich($str)
                        {  
                         global $w;
                        $txt1 = preg_split('/_/', $str, -1, PREG_SPLIT_DELIM_CAPTURE);
                        echo "str =$str<br>";
                
                   print_r($txt1); //testausgabe
                
                //Hier die Daten zur Datenbankverbindung!
                    include ('C:/programme/xampp/htdocs/xxxxprog/func/db_connect.tpl.inc');
                          
                    $sql = "SELECT namehost FROM dasi"; // where namehost = '$txt1[0]'
                    $result = mysql_query($sql) or die(mysql_error());#
                
                    $w=0;
                    while(!$row = mysql_fetch_assoc($result))
                  
                            {
                            
                            {
                            echo "Dieser wurde nicht gesichert $txt1[0]<br>";
                            $w++;
                            break;
                            }
                         
                            }  
                         }     
                ?>
                Original geschrieben von speed(y)g
                Als Ergebnis kommt dann zur Zeit erster Eintrag wird nicht angezeigt , wenn erster Einttrag in der Db auch klk09002 ist.Dann aber 99 mal klk09002 ist nicht in der txt Datei.
                Als der erste Satz ist unmöglich, weil gar nichts verglichen wird. Es hat kein WENN oder IF .

                Der zweite Satz ist völlig verständlich, weil 99x echo "Dieser wurde nicht gesichert $txt1[0]<br>"; ausgegeben wird. das heisst pro Datenbankeintrag wird einmal $txt1[0] ausgegeben, völlig unterschiedslos.

                Du warst aber mit dem originalen Code näher an der Wahrheit als je einmal danach.

                Kommentar


                • #23
                  Ich habe nicht gefragt was im File drin war, sondern was in $str drin ist.

                  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


                  edit_frage: wird die Funktion pro File-Zeile einmal aufgerufen? dh für ein b8-86892_2.tib, oder für alle auf einmal?
                  nochmals geändert:
                  gibt das 5 Aufrufe, oder 1 Aufruf deiner Funktion?
                  Zuletzt geändert von h31ss; 24.07.2006, 14:26.

                  Kommentar


                  • #24
                    beachte die edits oben, zweimal

                    Kommentar


                    • #25
                      Also die Funktion wird pro Zeile einmal aufgerufen.

                      In $str steht pro aufruf z.b. : b8......

                      Ausgabe :
                      Code:
                      $str =b8-86892_17.tib 
                      SQL-Befehl = SELECT namehost FROM dasi where namehost not in ('')
                      
                      $str =saf04002_16.tib
                      SQL-Befehl = SELECT namehost FROM dasi where namehost not in ('')
                      Wie ich schon geschrieben habe vorher wird eine Funktion ausgeführt die Datum und Uhrzeit rausfiltert.

                      Es werden nur Datensätze mit Datum gestern übergeben.

                      Kommentar


                      • #26
                        warte mal 5 Minuten.

                        Kommentar


                        • #27
                          gerne

                          Kommentar


                          • #28
                            PHP-Code:
                            <?php

                                    
                            function vergleich($str)
                                     global 
                            $w// Zähler der nicht gesicherten:
                                    
                            {  
                                    
                            $txt1 preg_split('/_/'$str);
                                    echo 
                            "str =$str<br>";    //testausgabe
                                   
                            print_r($txt1);             //testausgabe

                            //Hier die Daten zur Datenbankverbindung!
                                
                            include ('C:/programme/xampp/htdocs/xxxxprog/func/db_connect.tpl.inc');

                                    [
                            edit //$w=0; Initialisierung muss ausserhalb sein]
                              
                                
                            $sql "SELECT namehost FROM dasi WHERE namehost = '$txt1[0]'";
                                
                            $result mysql_query($sql) or die(mysql_error());#

                                
                            if($mysql_num_rows($result)==0) {
                               
                                        echo 
                            "Dieser wurde nicht gesichert $txt1[0]<br>";
                                         
                            $w++; //Anzahl nicht gesicherte.
                                        
                            }  
                                     } 
                            ?> 

                            #that's all folks.
                            [edit Zähler $w der anzahl nicht gesicherten wieder ergänzt ]
                            Zuletzt geändert von h31ss; 24.07.2006, 14:50.

                            Kommentar


                            • #29
                              wenn ich frage:
                              gibt das 5 Aufrufe, oder 1 Aufruf deiner Funktion?

                              warum bekomme ich als Antwort:
                              Also die Funktion wird pro Zeile einmal aufgerufen.

                              anstatt die 5, oder die 1 ?

                              Kommentar


                              • #30
                                Na dann werd ich es mal testen

                                wenn ich frage:
                                gibt das 5 Aufrufe, oder 1 Aufruf deiner Funktion?

                                warum bekomme ich als Antwort:
                                Also die Funktion wird pro Zeile einmal aufgerufen.

                                anstatt die 5, oder die 1 ?


                                Näher definiert : Es wird pro Zeile also bei fünf Zeilen fünf mal, Bei 100 zeilen 100 mal

                                Kommentar

                                Lädt...
                                X