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!!
Daten vergleichen db <-->txt-file
Einklappen
X
-
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 andere mit in_array ist eine einzige Regel und sollte auch keinen Anlass zur "soviele regeln unfug" Bemerkung geben.
Kommentar
-
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);
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."',"; }
Code:$sql = "SELECT namehost FROM dasi where namehost not in ('$s')";
Code:SQL-Befehl = SELECT namehost FROM dasi where namehost not in ('')
Code:SELECT namehost FROM dasi where namehost not in ('saf04002,b8-86892,........,.....,..')
Kommentar
-
$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, 15:10.
Kommentar
-
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
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
-
Re: Daten vergleichen db <-->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.
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
-
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, 15:26.
Kommentar
-
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 ('')
Es werden nur Datensätze mit Datum gestern übergeben.
Kommentar
-
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.Zuletzt geändert von h31ss; 24.07.2006, 15:50.
Kommentar
-
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
Kommentar