Hihi :) mit php eine txt und sql abfrage basteln
Hi Folks,
ich will mir die Arbeit ein wenig erleichtern (versuche es zumindest)
soo die Frage :
nehmen wir an es gibt 10 Mitarbeiter die verschieden schnell sind beim Akten abarbeiten m1 m2 m3 ... m10 und die geben jeden Tag an wieviele Akten sie abgearbeitet haben.
das schaut dann in der mysqldb so aus für m1
monat für monat
doch zur Zeit der Grippewelle gehen manche in den Krankenstand und lassen die Akten im Luftfall zurück
dann schaut das so aus bei Bsp. m1 alias 1
wo ist der Eintrag für 2014-10-03???
ich habe jetzt eine m.txt Datei wo drinen (untereinander) m1 m2 m3 (also die aktiven Mitarbeiter ) stehen und selecte in mitarbeiter wo m1 und datum 2014-10-01, 2014-10-02 03 04 05 06 usw.
will diese Arbeit per php abhacken welches mir die Datumslücken anzeigt
also suche in m.txt m1 raus dann schau in mysql ob m1 von datum 1 bis 31 jeden Tag aktiv ist und dann weiter zu m2, also alle die in der txt vorhanden sind
ich hoffe ich habe es ein bischen spannender gemacht da das auch verständlicher ist
Danke euch
Grüße dax
ich will mir die Arbeit ein wenig erleichtern (versuche es zumindest)
soo die Frage :
nehmen wir an es gibt 10 Mitarbeiter die verschieden schnell sind beim Akten abarbeiten m1 m2 m3 ... m10 und die geben jeden Tag an wieviele Akten sie abgearbeitet haben.
das schaut dann in der mysqldb so aus für m1
mitarbeiter,datum,spalte3, spalte4
1,2014-10-01,123,456
1,2014-10-02,224,557
1,2014-10-03,333,357
monat für monat
doch zur Zeit der Grippewelle gehen manche in den Krankenstand und lassen die Akten im Luftfall zurück
dann schaut das so aus bei Bsp. m1 alias 1
table: mitarbeiter
1,2014-10-01,123,456
1,2014-10-02,224,557
1,2014-10-04,123,456
1,2014-10-05,224,557
1,2014-10-06,333,357
ich habe jetzt eine m.txt Datei wo drinen (untereinander) m1 m2 m3 (also die aktiven Mitarbeiter ) stehen und selecte in mitarbeiter wo m1 und datum 2014-10-01, 2014-10-02 03 04 05 06 usw.
will diese Arbeit per php abhacken welches mir die Datumslücken anzeigt
also suche in m.txt m1 raus dann schau in mysql ob m1 von datum 1 bis 31 jeden Tag aktiv ist und dann weiter zu m2, also alle die in der txt vorhanden sind
ich hoffe ich habe es ein bischen spannender gemacht da das auch verständlicher ist
Danke euch
Grüße dax
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 250835
Url: https://administrator.de/forum/hihi-mit-php-eine-txt-und-sql-abfrage-basteln-250835.html
Ausgedruckt am: 23.12.2024 um 15:12 Uhr
7 Kommentare
Neuester Kommentar
Moin moin!
Tja,,, ich habe mir im lager die rechte hand gequetscht.
auch wenn die filmreihe etwas anderes darstellt - den kampf: mensch gegen maschine, verliert der mensch.
stahl ist einfach härter als knochen.
wird aber wieder !
So.
um den ganzen monat zu erhalten brauchst du bloß das datum auf den monat reduzieren.
aus '2014-10-06'
wird '2014-10' und
dann warst du mit deinem query schon auf dem richtigen weg. also das SELECT ... LIKE '2014-10%'.
darüber bekämst du dann alle einträge deren datum mit '2014-10' beginnt und das wären alle des passenden monats.
lediglich das datum musst du auch auslesen, sonst kannst du hinterher nicht mehr erkennen welche tage dabei waren und welche nicht.
natürlich wäre daduch die auswertung aufwendiger geworden. denn nun muss nicht nur geprüft werden ob der mitarbeiter dabei war, sondern auch ob alle tage dabei sind.
die tage die dann fehlen schieben wir samt namen in ein array und "spucken" es am ende einfach auf das display.
du hast schon ein wenig glück das ich die kaputte hand habe, denn ich kann kaum etwas anderes mache so das ich mir die zeit irgendwie vertreiben muss ...laaangweilig... und dabei kommt dann sowas herraus.
allerdings habe ich das nur getippt, mit einer hand und mit links !
~Arano
Tja,,, ich habe mir im lager die rechte hand gequetscht.
auch wenn die filmreihe etwas anderes darstellt - den kampf: mensch gegen maschine, verliert der mensch.
stahl ist einfach härter als knochen.
wird aber wieder !
So.
um den ganzen monat zu erhalten brauchst du bloß das datum auf den monat reduzieren.
aus '2014-10-06'
wird '2014-10' und
dann warst du mit deinem query schon auf dem richtigen weg. also das SELECT ... LIKE '2014-10%'.
darüber bekämst du dann alle einträge deren datum mit '2014-10' beginnt und das wären alle des passenden monats.
lediglich das datum musst du auch auslesen, sonst kannst du hinterher nicht mehr erkennen welche tage dabei waren und welche nicht.
natürlich wäre daduch die auswertung aufwendiger geworden. denn nun muss nicht nur geprüft werden ob der mitarbeiter dabei war, sondern auch ob alle tage dabei sind.
die tage die dann fehlen schieben wir samt namen in ein array und "spucken" es am ende einfach auf das display.
du hast schon ein wenig glück das ich die kaputte hand habe, denn ich kann kaum etwas anderes mache so das ich mir die zeit irgendwie vertreiben muss ...laaangweilig... und dabei kommt dann sowas herraus.
allerdings habe ich das nur getippt, mit einer hand und mit links !
~Arano
<?php
$strDateYM = date("Y-m"); // = '2014-10'
/* DATEN ERMITTELN */
/* mysql */
$strQuerySelectAllThisMonth = "SELECT `mitarbeitername`,`datumdeseintrags`
FROM `mitarbeiter_tbl`
WHERE `datumdeseintrags` LIKE '".$strDateYM."%'
ORDER BY `mitarbeitername` ASC,
`datumdeseintrags` ASC";
$myretAllThisMonth = mysql_query( $strQuerySelectAllThisMonth );
// ...vernünftige fehlerbehandlung...
/* file / mitarbeiterliste */
$arrMAs = file('m.txt'); // = array('ma1','ma2','ma3', ...)
// ...vernünftige fehlerbehandlung...
/* DATEN AUFBEREITEN */
// data array initzialisieren
$arrData = array();
foreach( $arrMAs as $strMa )
$arrData[$strMa] = array();
// z.B $arrData = array(
// 'ma1' => array(),
// 'ma2' => array()
// );
// db daten in data array
while( $arrDbData=mysql_fetch_assoc($myretAllThisMonth) )
$arrData[$arrDbData['mitarbeitername']] = $arrDbData['datumdeseintrags'];
// z.B $arrData = array(
// 'ma1' => array(0=>'2014-10-01',1=>'2014-10-02',2=>'2014-10-03',3=>'2014-10-05', 4=>... ), // beachte das der 04. fehlt !
// 'ma2' => array(0=>'2014-10-01',1=>'2014-10-02',2=>'2014-10-03',3=>'2014-10-04', 4=>... ) // hier ist alles okay
// );
// leeres fehlen array
$arrNotExist = array(); // leeres array bedeutet das keine "fehler" gefundwen wurden bzw. die db ist vollständig.
/* DATEN AUSWERTEN */
// prüfe für jeden MA...
foreach( $arrMAs as $strMa )
{
// ...jedes datum ACHTUNG ACHTUNG: wochenende, urlaub, krank, feiertage, sozialtage, "andereaufgaben", monatsende30/31, februar/28, schaltjahre, ......
// ...jedes datum ACHTUNG ACHTUNG: wochenende, urlaub, krank, feiertage, sozialtage, "andereaufgaben", monatsende30/31, februar/28, schaltjahre, ......
for( $intDay=1; $intDay<=31; $intDay++ )
{
// einstellig zu zweistellig (1=>01 / int zu str)
$strDay = $intDay<10 ? '0'.$intDay : $intDay;
if( !in_array($strDateYM.'-'.$strDay,$arrData[$strMa]) )
{
// dieses datum fehlt in der liste des mitarbeiters
$arrNotExist = $strMa.' - '.$strDateYM.'-'.$strDay;
}
}
}
/* DATEN AUSGEBEN */
if( !empty($arrNotExist) )
{
echo 'Fü die folgenden Einträge wurden keine Daten in der Datenbank gefunden !';
foreach( $arrNotExist as $strMaAm )
echo $strMaAm.'<br>'; // = "name - datum<br>"
}
else
{
echo 'Alles ist sauber.';
}
?>
Hallo,
Danke! Danke!
Joar, ansich geht es meiner Hand ganz gut, die Ärztin ist mit dem Heilungsprozess mehr als zufrieden. Wie du siehst kann ich auch schon wieder Tippen bzw. ich bin die Gipsschine für die ganze Hand los. Habe jetzt nur noch eine am Finger Wiki-Stacksche-Schine (allerdings nicht wegen der Sehne sondern wegen der Nagelkranzfrakturen (und was anderem))
Ich fang mal "hinten" an.
Das die Mitarbeiter unterm Strich "nur anders heißen" sollte keine Rolle spielen.
Ich nehme mal an das du mit
Nein, das Leerzeichen hat keine Funktion bzw. es sollte gar nicht da sein !
Ich weiss aber auch schon wo es her kommt !
Wenn die MA-Datei mit der Funktion
Aber das können wir mit dem entsprechendem Flag unterbinden.
Das entspricht dann quasi dem
Hey, dann wird das bei euch in den nächsten Tagen ja richtig schön, freue mich für Euch !
Wünsche euch ein schönes Wochenende
~Arano
Danke! Danke!
Joar, ansich geht es meiner Hand ganz gut, die Ärztin ist mit dem Heilungsprozess mehr als zufrieden. Wie du siehst kann ich auch schon wieder Tippen bzw. ich bin die Gipsschine für die ganze Hand los. Habe jetzt nur noch eine am Finger Wiki-Stacksche-Schine (allerdings nicht wegen der Sehne sondern wegen der Nagelkranzfrakturen (und was anderem))
Den Terminator Satz fand ich Super face-smile
"I'll be BACK !" wird dann mein erster Satz wenn ich wieder auf der Arbeit bin *gg*Ich fang mal "hinten" an.
Das die Mitarbeiter unterm Strich "nur anders heißen" sollte keine Rolle spielen.
Ich nehme mal an das du mit
var_dump()
die Variabel $arrMAs
ausgegeben hast !?Nein, das Leerzeichen hat keine Funktion bzw. es sollte gar nicht da sein !
Ich weiss aber auch schon wo es her kommt !
Wenn die MA-Datei mit der Funktion
file()
eingelesen wird, landet auch der Zeilenumbruch in dem Array-Element (\n | \r\n | \r Linux | Windows | Mac).Aber das können wir mit dem entsprechendem Flag unterbinden.
$arrMAs = file( 'm.txt', FILE_IGNORE_NEW_LINES ); // = array('ma1','ma2','ma3', ...)
trim()
das du verwendet hattest.Hey, dann wird das bei euch in den nächsten Tagen ja richtig schön, freue mich für Euch !
Wünsche euch ein schönes Wochenende
~Arano