php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2010

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 03.02.2010, 14:23  
Neuer Benutzer
 
Registriert seit: 02.02.2010
Beiträge: 8
PHP-Kenntnisse:
Anfänger
Nicole_85 befindet sich auf einem aufstrebenden Ast
Standard SQL Befehl um 2 Datensätze in einer DB zu bekommen + berechnung

Hallo liebe leute,

ich bin an meinem projekt dran, und brauche jetzt eine Lösung um in meiner Datenbank 2 Zeilen auszulesen (wo sich die Uhrzeit befindet) und eine Berechnung für die Arbeitszeit.

PHP-Code:
$ausgabe 'SELECT DISTINCT transponder, datum FROM terminal_data WHERE abgearbeitet = "1"';
$db_erg mysql_query($ausgabe);

echo 
'<table border="1">';
while (
$zeile mysql_fetch_array$db_ergMYSQL_ASSOC))
{

echo 
"<tr><td><p><b> Transponder</b>: ".$zeile['transponder']."  ".$zeile['datum']."</td></tr>";
//echo "<tr><td><p><b> Datum / Uhrzeit</b>: ".$zeile['datum']."</td></tr>";

  
}
echo 
"</table>" 
Ich habe es schon geschafft die Transponder Nummer + Uhrzeit auszugeben.
Jetz weiß ich nicht wie es funktioniert, dass es mir nur 1 mal die transpondernummer angibt (sind immer 2 gleiche transpondernummern in der DB) und es mir die Differenz der 2 Uhrzeiten ausrechnet.. ??
Nicole_85 ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 03.02.2010, 14:39  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 5.240
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

Derzeit sehe ich nur ein Datum. Eine Differenz legt ja nahe, dass du zwei Uhrzeiten hast. Oder willst du die Differenz aus genau diesen beiden Datensätzen berechnen? Gib mal bitte ein konkretes Beispiel, was in der Tabelle steht, welche Datensätze geliefert werden und was du am Ende wie berechnen willst.
__________________
www.php-maven.org PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks
Twitter @ https://twitter.com/#!/mepeisen und Facebook @ http://t.co/DZnKSUih
mepeisen ist offline  
Alt 03.02.2010, 14:48  
Neuer Benutzer
 
Registriert seit: 02.02.2010
Beiträge: 8
PHP-Kenntnisse:
Anfänger
Nicole_85 befindet sich auf einem aufstrebenden Ast
Standard

ja ich bekomme mit der Ausgabe schon 2 Uhrzeiten geliefert.. ausgegeben in eben mit echo in einer tabelle.

Es geht um das, dass pro Transpondernummer in der Datenbank 2 Uhrzeiten abgespeichert werden (gekommen, gegangen). Diese liegen in der DB untereinander.

Jetz sollte ich eine Ausgabe haben, die mir sagt, diese Transpondernummer hat gearbeitet von ..... bis .... = anzahl der stunden + minuten.
Nicole_85 ist offline  
Alt 03.02.2010, 14:48  
Erfahrener Benutzer
 
Registriert seit: 07.01.2010
Beiträge: 141
PHP-Kenntnisse:
Anfänger
Philipp6020 befindet sich auf einem aufstrebenden Ast
Philipp6020 eine Nachricht über MSN schicken
Standard

ich weiss ehrlich gesagt auch net genau was und wie du das jz machen willst
Philipp6020 ist offline  
Alt 03.02.2010, 18:43  
Erfahrener Benutzer
 
Registriert seit: 09.01.2010
Beiträge: 185
PHP-Kenntnisse:
Fortgeschritten
php2go befindet sich auf einem aufstrebenden Ast
Standard

Hallo Nicole!

Wenn ich dich richtig verstanden habe, dann könntest du es mal mit GROUP BY versuchen. Hier relativ ausführlich beschrieben: GROUP BY und Aggregatfunktionen zum Auswerten von Daten

DISTINCT funktioniert in diesem Zusammenhang nicht, da du ja Unterschiede suchst, die zwischen zwei Transpondern und Datums (-> Daten) vorliegen. Würdest du nur SELECT DISTINCT transponder .... verwenden, dann würden dir alle verschiedenen Transponder ausgegeben werden. Dann könntest du diese in ein Array speichern und danach eine zweite Abfrage mit SELECT datum FROM..WHERE transponder = $xyz . Denn bei dir sind zwar Transpondernummern gleich, aber die Daten sind ja immer unterschiedlich, also wirst du alle Datensätze rausbekommen. DISTINCT -> hier keinen Sinn.

Aber wie gesagt: einfachere Methode GROUP BY!


Hoffe, habe dich richtig verstanden!
Gruß php2go
php2go ist offline  
Alt 03.02.2010, 18:48  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 5.240
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

Nein, bitte keine zweite Abfrage dafür. Bitte nicht. Wenn schon, dann das Ergebnis im PHP in einer Variable merken und dann auswerten. Die Aggregat-Funktionen lassen im übrigen keine Differenzen zu bzw. bieten nichts für Differenzen.

Habe ich dich richtig verstanden, dass es quasi wie bei uns bei der Stempeluhr einfach nru Uhrzeiten sind? Also jede Datenbankzeile ist einmal Stempeln? Dann ist das Kommen die kleinere Uhrzeit des Tages und das Gehen die größere Uhrzeit.
__________________
www.php-maven.org PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks
Twitter @ https://twitter.com/#!/mepeisen und Facebook @ http://t.co/DZnKSUih
mepeisen ist offline  
Alt 03.02.2010, 22:31  
Neuer Benutzer
 
Registriert seit: 02.02.2010
Beiträge: 8
PHP-Kenntnisse:
Anfänger
Nicole_85 befindet sich auf einem aufstrebenden Ast
Standard

danke php2go.. macht mir schonmal mehr sinn..

@ mepeisen.
ja es ist wie bei einer stempeluhr, nur das wir es mit chip & terminal verfahren haben.
der erste datensatz in der spalte DAtum/Zeit in der DB ist wann die Person gekommen ist,
und in der Zeile darunter steht wann die person gegangen ist.
exakt wie du sagst, kommen kleinere uhrzeit - gehen größere!

aus diesen 2 datensätzen (vorerst, kommen dan noch mehr) brauche ich jetz eine tolle berechnung um die gearbeitetn stunden auszurechnen ..
Nicole_85 ist offline  
Alt 04.02.2010, 02:20  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.990
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Gibt es Transpondernummern datenbankweit nur 2 mal oder pro Tag 2 mal?
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline  
Alt 04.02.2010, 08:13  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 5.240
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

Wir verfahren ja auch mit Chip&Terminal&SAP. Aber nennen tun wirs trotzdem stempeln und Stempeluhr

Wie gesagt. Speichere die beiden Ergebnisse in einer Zwischenvariable. Beispielsweise:
PHP-Code:
$ereignis_nummer 0;
$uhrzeiten = array();
while (
$zeile mysql_fetch_array$db_ergMYSQL_ASSOC)) 

    
$uhrzeiten[$ereignis_nummer] = $zeile['datum'];
    
$ereignis_nummer++;
}

switch (
count($uhrzeiten))
{
    case 
2:
        echo 
'Stundenzahl: '.($uhrzeiten[1] - $uhrzeiten[0]); // spätere Zeit - frühere Zeit
        
break;
    default:
        echo 
'Stempelfehler :)';
        break;

__________________
www.php-maven.org PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks
Twitter @ https://twitter.com/#!/mepeisen und Facebook @ http://t.co/DZnKSUih
mepeisen ist offline  
Alt 04.02.2010, 10:19  
Neuer Benutzer
 
Registriert seit: 02.02.2010
Beiträge: 8
PHP-Kenntnisse:
Anfänger
Nicole_85 befindet sich auf einem aufstrebenden Ast
Standard

hej mepeisen.. ok er übernimmt mir jetz die Uhrzeiten aus der Datenbank, gibt sie mir auch aus.. aber bei Stundenzahl = steht dan '0'..

check ich nich..

ich geb dir hier mal mein komplexer code für die seite 'datenauslesen.php'

PHP-Code:
<?php
error_reporting
(E_ALL);
ini_set('display_errors',1);

//echo $file_array[$zeile].'<br>test</br>';

    
$server "localhost";
    
$user "root";
    
$pw "";
    
$db_name "timedec";
    
    
$db mysql_connect($server$user$pw);
    
mysql_select_db($db_name);

if (
mysqli_connect_errno()) {
    die(
'Konnte keine Verbindung zu Datenbank aufbauen, MySQL meldete: '.mysqli_connect_error());
    }
//    els

//$thisFileContent = file("Datensatz.txt");  
//for($i=0; $i<40; $i++.'<br> test</br>'){ 
   //echo $thisFileContent[$i].'<br> </br>'; 
   
   //_---------------------
   

// Pfad zum Verzeichnis (Hier ist es ein Unterverzeichnis)
$verzeichnis "Daten/";
$handle openDir($verzeichnis); // Verzeichnis öffnen
while ($datei readDir($handle)) { // Verzeichnis auslesen
 // Verzeichnisse filtern
 
if ($datei != "." && $datei != ".." && !is_dir($datei)) {
  
// Nur Txt-datei 
  
if (strstr($datei".txt")) {
 
   
// Pfad zur aktuellen Datei
   
$verzeichnis_datei $verzeichnis $datei;
   echo 
"$verzeichnis_datei\"".'<br></br>';

  
$thisFileContent file("$verzeichnis_datei");  

for(
$i=0$i<count($thisFileContent); $i++.'<br></br>'){ // weiter ARBEITEEEEN

// Versuch nur Bereiche auszulesen
//$ausgabe = substr($thisFileContent, 0, 10);
//echo $ausgabe;  
 
 
 // DIESER FUNKTIONIERT
$sText $thisFileContent[$i];
$aText explode(chr(9),$sText);

//$sTerminalSnr = substr($sText, 0, 20).'<br> </br>';
//$sTransponder = substr($sText, 21, 31);
//$sDatum = substr($sText, 30,40);
//$sStatus = substr($sText, 40,50);
//echo $sTerminalSnr.$sTransponder.'<br></br>';  
//echo $aText[1].'<br></br>';

$dats split('[\.|:| ]'$aText[2]);
$tStamp mktime($dats[3], $dats[4],0$dats[1], $dats[0], $dats[2]);

$sql "INSERT INTO terminal_data (terminal_snr_id,datennr,datum,arbeitsstatus) VALUES ("."'".$aText[0]."'".","."'".$aText[1]."'".","."'".date('Y-m-d H:i:s',$tStamp)."'".",".$aText[3].")";

//echo $sql;
mysql_query($sql)or die(mysql_error());




// Berechnung für Arbeitszeit
//$sql1 = 'SELECT spalte1 + spalte2  as ergebnis FROM terminal_data ORDER BY ergebnis DESC');
//echo $sql1;





// UPADATE BEFEHL

//UPDATE "terminal_data"
//SET "Spalte1" = [Wert]
//WHERE {Bedingung}

//$text = 'Hallo...';
//$erstes_zeichen = $text{0};
//echo $thisFileContent[$i].'<br> </br>'; 
   
}
   
   
// Bildinfos ermitteln (Breite, Höhe)
  // $info = getImageSize($verzeichnis_datei);
   // Bild anzeigen
   //echo " width=\"$info[0]\" height=\"$info[1]\"> <br>\n";


   // LÖSCHEN der aktuellen Datei
 
 
  
}
 }
}
closeDir($handle); // Verzeichnis schließen

// Wählt alle Transponder die nicht abgearbeitt sind !!!

$ausgabe 'SELECT DISTINCT datennr FROM terminal_data WHERE abgearbeitet = "1"';
$db_erg mysql_query($ausgabe);

echo 
'<table border="1">';
while (
$zeile mysql_fetch_array$db_ergMYSQL_ASSOC))
{
$sql2 'SELECT datum, arbeitsstatus FROM terminal_data WHERE datennr = "'.$zeile['datennr'].'" ORDER BY datum ASC';
$db_erg1 mysql_query($sql2);
    
//while ($zeile2 = mysql_fetch_assoc($db_erg1))
//{
////echo $zeile2[0];
//foreach($zeile2 as $puffer)
//
//echo $puffer.'<br></br>';


$ereignis_nummer 0;
$uhrzeiten = array();
while (
$zeile mysql_fetch_array$db_erg1MYSQL_ASSOC)) 

    
$uhrzeiten[$ereignis_nummer] = $zeile['datum'];
    
$ereignis_nummer++;
}

switch (
count($uhrzeiten))
{
    case 
2:
    echo 
$uhrzeiten[0]. '<br></br>'$uhrzeiten[1];
    
    
    
    

echo 
'<br></br> Stundenzahl   = '.($uhrzeiten[1] - $uhrzeiten[0]). '<br></br>'

        break;
//          
    
default:
        echo 
'Stempelfehler :)';
        break;
}  

//$dauer = floor((strtotime($zeile2[0])-strtotime($zeile2[1]) / 864000);
//echo $dauer;

}

    
//echo "<tr><td><p><b> Transponder</b>: ".$zeile['datennr']."  ".$zeile['datum']."</td></tr>";

echo "<tr><td><p><b> Datum / Uhrzeit</b>: ".$sql2."</td></tr>";

  

echo 
"</table>"

// Uhrzeit von gemeinsamen Transponder ausgeben
//$sql2 = 'SELECT datum FROM terminal_data WHERE transponder = "140013DF6B"';
//$db_erg = mysql_query($ausgabe);
//echo $sql2;

// Ausrechnen der Arbeitszeit
//$sql3 ='DAY_MINUTE('$sql2', INTERVAL ‘30′ SECOND) FROM terminal_data';
//echo $sql3;



//
     
//-------------------------------
// Variablen  
//$ftp_server = "ftp.hwi5.hugu.cc";
//$benutzername = "felixhwi";
//$passwort = "hwi5ftp";
//
//// Verbindung Herstellen
//$connection_id = ftp_connection($ftp_server);
//
//// Mit Benutzer und Name anmelden
//
//$login_result = ftp_login($connection_id, $benutertname, $passwort);
//
//// überprüfen ob ales geklappt hat
//
//if ((!$connection_id) || (!$login_result)) 
//{
//    echo "<H1> FTP-Verbindung nicht hergeestellt ! <H1>";
//    echo "<P> Verbindung mit ftp_server als Benutzer $benutzername nicht möglich! </P>";
//    die;
//}
//else
//{
//    echo "<P> Verbunden mit ftp_server als Benutzer $benutzername </P>";
//}
//
//// Die aus dem Formular umgebenen Daten abfragen ???
//$zieldatei = $_POST['zieldatei'];
//$lokale_datei = $_POST['lokale_datei'];
//
//
//// Hochladen der Datei
////$upload = ftp_put($connection_id, $zieldatei, $lokale_datei, FTP_ASCII);
//
////Upload - Status überprüfen
//
//$upload = ftp_put($connection_id, $zieldatei, $lokale_datei, FTP_ASCII);
//if (!$upload)
//{
//echo "<P> FTP upload war fehlerhaft!</P>";
//}
//
//else
//{
//    echo "<P> Datei $slokale_datei auf $host als $zieldatei geschreiben </P>";
//}
//
//// Schließen der Verbindung
//ftp_quit($connection_id);
//
//
//
//
//
//
////$zeile = 0;
////if (isset($_GET['zeile']))
////$zeile = $_GET['zeile'];
////$file_array = file("Datensatz.txt");
////echo $file_array[$zeile].'<br>test</br>';
//
//
////---------------------------------------------
//// Einzelne Zeile auslesen
////$array = file($datei); // Datei in ein Array einlesen
//// Zeile 6 wird ausgegeben
////
////echo $array[5];
////
////$datei=fopen("Datensatz.txt","r+"); 
////while(!feof($datei)) 
////{ 
////$zeile = fgets($datei,1000); 
////echo $zeile."<br>"; 
////} 
////fclose($datei);  

?>
Nicole_85 ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Datensätze aus Datenbank in Flash auflisten beta02 JavaScript, Ajax und mehr 5 23.06.2009 16:03
Datensätze sind auf einmal weg web4free Datenbanken 17 15.08.2008 20:57
[Erledigt] Fehlende Datensätze bei Ausgabe... Ramona86 Datenbanken 8 04.07.2008 12:12
mehrere datensätze mit mehreren submits ändern kladotti PHP Tipps 2008 2 27.04.2008 21:43
Blättern mit LIMIT Befehl bobfi PHP Tipps 2008 4 26.02.2008 17:57
Mehrere Datensätze in Datenbank updaten PHP-Fortgeschrittene 9 23.10.2005 11:04
Warning: filesize(): SAFE MODE Restriction in effect. nicobischof PHP Tipps 2005-2 9 17.08.2005 19:05
include Befehl! PHP Tipps 2005-2 0 05.08.2005 10:10
include Befehl! PHP Tipps 2005-2 0 05.08.2005 10:06
include Befehl! PHP Tipps 2005-2 0 05.08.2005 10:05
include Befehl! PHP Tipps 2005-2 0 05.08.2005 10:05
include Befehl! PHP Tipps 2005-2 0 05.08.2005 10:04
berechnung im select für eine andere berechnung benutzen Datenbanken 4 13.05.2005 11:29
Befehl erst nach Bestimmter Zeit ausführen? PHP Tipps 2005 21 28.02.2005 00:13
Datensätze kampfnickel PHP Tipps 2005 4 17.01.2005 13:41

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
http://www.php.de/php-einsteiger/64139-sql-befehl-um-2-datensaetze-einer-db-zu-bekommen-berechnung.html, sql differenz berechnen, sql befehle übersicht, sql mehrere datensätze berechnen, sql 2 where, sql datensatz berechnen, sql 2 datensätze, sql befehl rechnen, sql befehl differenz, sql select mehrere datensätze, sql zweiter datensatz, sql befehl nur einen datensatz, alle.hwi@hugu.cc, sql befehle rechnen, sql differenz zwischen zwei datensätzen, differenz befehl sql, sql stunden berechnen, $thisfilecontent, sql befehle differenz, sql arbeitszeit berechnen

Alle Zeitangaben in WEZ +2. Es ist jetzt 21:22 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum