SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Einführung in XHTML, CSS und Webdesign

Einführung in XHTML, CSS und Webdesign zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP Grundlagen

PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 28.10.2016, 13:13:49
fieliepae fieliepae ist offline
Anfänger
 
Registriert seit: Oct 2016
Alter: 38
Beiträge: 6
Differenz in Tagen in Tabelle ausgeben

Hallo,
ich bin absoluter Neuling, sowohl was das Programmieren angeht als auch das Posten in Foren (erster Beitrag!).
Es gibt diverse Beiträge zu meinem Problem aber keines hat mir bisher weitergeholfen...

Folgender IST Zustand:
Ich habe ein Formular erstellt mit dessen Hilfe sich Kunden vom Musikunterricht abmelden können.
Es gibt eine Spalte (Date) in der das Datum steht für welches sie sich abmelden und eine Spalte (Timestamp) in der der Zeitpunkt angegeben wird wann sie sich abgemeldet haben. Für die Buchhaltung wäre es jetzt enorm praktisch, eine weitere Spalte zu erhalten, in welcher die Differenz dieser beiden Spalten angegeben wird. In Tagen würde vollkommen ausreichen!

Frage:
1. Wann wird die Differenz berechnet - beim Eintragen in die Datenbank oder kann ich das auch nachträglich für die bereits bestehenden Einträge ändern?
2. Wie mach ich das? ;)

Bisher habe ich nur einen einfachen Code um die gesamte Datenbank abzurufen. Die Timestamp-Spalte habe ich per phpMyAdmin erstellt. Das Eintragen in die Datenbank erfolgt über ein E-Mail Formular von website x5 (daran kann ich womöglich nicht viel ändern). Es wäre also super, wenn ich was an der Abfrage ändern könnte oder bei PhpMyAdmin.

Ist das machbar?
Liebe Grüße und vielen Dank im Voraus für jede Idee!
Mit Zitat antworten
  #2  
Alt 30.10.2016, 19:39:11
Flavaslava Flavaslava ist offline
Anfänger
 
Registriert seit: Nov 2015
Alter: 32
Beiträge: 3
AW: Differenz in Tagen in Tabelle ausgeben

hey fieliepae,

klar selbstverständlich ist es möglich und zwar kannst du es dir bei der Tabellenansicht anzeigen lassen. Dafür einfach die grundlagen über Datumsberechnung von PHP anschauen. Dort solltest du fündig werden. Du berechnest den Timestamp und gibst die ausgabe aus.

Mfg
Flava
Mit Zitat antworten
  #3  
Alt 31.10.2016, 12:41:41
fieliepae fieliepae ist offline
Anfänger
 
Registriert seit: Oct 2016
Alter: 38
Beiträge: 6
AW: Differenz in Tagen in Tabelle ausgeben

Hi Flava,

danke für die Antwort! Hab nach einiger Recherche folgendes gefunden:

PHP-Code:
 function seDay($begin,$end,$format,$sep)
{    
    
    
$pos1    strpos($format'd');
    
$pos2    strpos($format'm');
    
$pos3    strpos($format'Y'); 
    
    
$begin    explode($sep,$begin);
    
$end        explode($sep,$end);
    
    
$first     GregorianToJD($end[$pos2],$end[$pos1],$end[$pos3]);
    
$second    GregorianToJD($begin[$pos2],$begin[$pos1],$begin[$pos3]);
    
    if(
$first $second)
        return 
$first $second;
    else
        return 
$second $first;
    
}

$timeA    'Datum_Abmeldung';  //Spalte für das Datum, für das sich der Kunde abgemeldet hat 
$timeB    'Zeit';  // Spalte mit dem Zeitpunkt der Abmeldung (Timestamp)

$diff seDay($timeA,$timeB,"dmY",".");
echo 
'Die Differenz betraegt ' $diff ' Tage';

echo 
"<br>\n"
Ich erhalte nun als Überschrift der Tabelle die Ausgabe " Die Differenz beträgt 0 Tage".
Wie kann ich es nun schaffen, dass diese Funktion für jede Zeile verwendet wird und am Ende jeder Zeile die Differenz ausgegeben wird?
Bin ich mit der Funktion überhaupt grundsätzlich auf dem richtigen Weg?

Liebe Grüße
Mit Zitat antworten
  #4  
Alt 31.10.2016, 14:58:10
Benutzerbild von vt1816
vt1816 vt1816 ist offline
Administrator
 
Registriert seit: Jul 2004
Beiträge: 3.707
AW: Differenz in Tagen in Tabelle ausgeben

Hallo und willkommen hier im Forum.

Zitat:
Zitat von fieliepae Beitrag anzeigen
Ist das machbar?
Ja.
Zeig uns bitte was Du bereits hast. Dazu gehört unter anderem die Struktur Deiner Datenbanktabelle und 3-5 aussagekräftige Datensätze.
__________________
Gruss vt1816
Erwarte nicht, dass sich jemand mehr Mühe mit der Antwort gibt als Du Dir mit der Frage.
. . . . . Feedback wäre wünschenswert

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.
Ansosnten gilt: Hilfe ausserhalb dieses Thread (PN, WhatsApp, Skype, Mail, ICQ, etc...) nur per Barzahlung oder Vorauskasse!

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #5  
Alt 31.10.2016, 17:05:36
sysop sysop ist offline
Member
 
Registriert seit: Mar 2004
Ort: wien
Beiträge: 512
AW: Differenz in Tagen in Tabelle ausgeben

Einmal Date und einemal Timestamp?

einen Timestamp kann man mit mktime erstellen, ich würde also das Datum in einen Timestamp umrechnen und dann so vorgehen

PHP-Code:

// Datum aus der Datenbank
$datum1 mktime(0,0,0,$mon,$tag,$jahr);

// Timestamp aus der Datenbank
$datum2 DEIN_TIMESTAMP

// Tage Differenz berechnen
$diff = (($datum2 $datum1) / 3600 24);

echo 
number_format($diff,0,",","."); 
__________________
Gruss sys ;-)
Ich möchte wie mein Grossvater sterben, lächelnd und schlafend, nicht schreiend und weinend, wie sein Beifahrer.
Mit Zitat antworten
  #6  
Alt 31.10.2016, 19:11:36
fieliepae fieliepae ist offline
Anfänger
 
Registriert seit: Oct 2016
Alter: 38
Beiträge: 6
AW: Differenz in Tagen in Tabelle ausgeben

Erstmal vielen Dank für eure Zeit und Hilfe!

Genau, einmal Date für die Datumsangabe (liegt in der Zukunft) die der Kunde macht, damit die Tabelle sortiert werden kann und einmal ein Timestamp der automatisch eingefügt wird sobald die Abmeldung abgeschickt wurde, damit die Buchhaltung weiß ob die Abmeldung fristgerecht erfolgte.

Also hier der bisherige Code:
Der Fairness halber, ich habe den Code von einem "Andreas Gruber" welcher ihn zum kostenfreien Download auf seiner Homepage zur Verfügung gestellt hat. Ich verstehe ihn zu ca. 75% (z.B. weiß ich bis heute nicht was "feldcontainer bedeutet...) und habe hier und da noch etwas verändert. Die Bemerkungen sind von mir, damit ich den Code einigermaßen verstehe und den Überblick behalte ;)

PHP-Code:
/** Überschrift Timestamp**/
<?php
date_default_timezone_set
("Europe/Berlin");
$timestamp time();
?>
<?php
$datum 
date("d.m.Y",$timestamp);
$uhrzeit date("H:i",$timestamp);
echo 
$datum," - ",$uhrzeit," Uhr";

 
define(TABLENAME"XXXXX");
 

 
$con mysql_connect("XXXXXXXXXX","XXXXXXXX","XXXXXX");
 if (!
$con)die('Keine Verbindung zur Datenbank' mysql_error());
 
 
mysql_select_db("XXXXXXX") or die("Datenbank nicht vorhanden");

/** Umlaute**/
 
mysql_query("SET NAMES 'utf8'");
 
mysql_query("SET CHARACTER SET 'utf8'");
 
/** Tabelle erstellen und auswählen**/
 
 
echo "<table border='1'><tr>";
 
 
$sortBy = (isset($_GET["sortBy"])) ? $_GET["sortBy"] : mysql_field_name(mysql_query("SELECT * FROM " TABLENAME), 0);
 
$direction = (isset($_GET["direction"])) ? $_GET["direction"] : "DESC";
 
  
$sql "SELECT * FROM " TABLENAME .  " ORDER BY " $sortBy " " $direction;
 
$query mysql_query($sql);
 
$feldcontainer = array();
 
/** Differenz berechnen**/

  
function seDay($begin,$end,$format,$sep)  //Hab ich heute eingefügt
{    
    
    
$pos1    strpos($format'd');
    
$pos2    strpos($format'm');
    
$pos3    strpos($format'Y'); 
    
    
$begin    explode($sep,$begin);
    
$end        explode($sep,$end);
    
    
$first     GregorianToJD($end[$pos2],$end[$pos1],$end[$pos3]);
    
$second    GregorianToJD($begin[$pos2],$begin[$pos1],$begin[$pos3]);
    
    if(
$first $second)
        return 
$first $second;
    else
        return 
$second $first;
    
}

$timeA    'Datum_Abmeldung';
$timeB    'Zeit';

$diff seDay($timeA,$timeB,"dmY",".");
echo 
'Die Differenz betraegt ' $diff ' Tage';

echo 
"<br>\n";

 
/** Spalten **/

 
echo "<tr>";
 
 for(
$i 0; @$feld mysql_field_name($query$i); $i++):
 
 echo 
"<td align='center'><strong>" $feld " <a href='?sortBy=$feld&direction=ASC'>&uarr;</a> &nbsp; <a href='?sortBy=$feld&direction=DESC'>&darr;</a>" "</strong></td>";
 
 
$feldcontainer[$i] = $feld;
 
 endfor;
 
 echo 
"</tr>";
 
 
/** Zeilen **/
 
if(mysql_num_rows($query)):
 
 while(
$row mysql_fetch_object($query)):
 
 echo 
"<tr>";
 
 foreach(
$feldcontainer AS $key => $value):
 
 
/** $key und nächstes if werden nur für die Spaltenfarbe benötigt **/
 
 
if($key == null): $col "#ffffff"; else: $col "#EEEEFF"; endif;
 
 echo 
"<td bgcolor='$col'>" $row->$value "</td>";
 
 endforeach;
 
 echo 
"</tr>";
 
 endwhile;
 
else: echo 
"<tr><td colspan='" count($feldcontainer) ."'>Es befinden sich keine Eintr&auml;ge in der Datenbank</td></tr>";
 
endif;
?>
In der Ausgabe sieht das dann aus wie hier. Das mit der Differenz ist natürlich neu.
Die Tabelle ist leider zu breit um sie mit einem Screenshot einzufangen, aber ich glaube es wird klar worum es geht?! Ganz rechts hätte ich nun gerne die Differenz aus "Datum_Abmeldung" und "Zeit" in Tagen stehen...

Für Tipps und Ideen bin ich sehr dankbar!

Liebe Grüße
Mit Zitat antworten
  #7  
Alt 01.11.2016, 14:48:56
Benutzerbild von vt1816
vt1816 vt1816 ist offline
Administrator
 
Registriert seit: Jul 2004
Beiträge: 3.707
AW: Differenz in Tagen in Tabelle ausgeben

Die Anzeige 'Die Differenz betraegt 0 Tage' beruht auf diesem Fehler

PHP-Code:
$timeA    'Datum_Abmeldung';
$timeB    'Zeit';

$diff seDay($timeA,$timeB,"dmY",".");
echo 
'Die Differenz betraegt ' $diff ' Tage'
Wie soll hier eine Differenz errechnet werden wenn Du Text in die Variablen schreibst?

Wenn - auf Grund der noch immer geheimgehaltenen Datenbanktabellenstruktur - ich Dich aber dennoch richtig verstanden habe, gibt es (noch) keine Spalte für die Differenz in Tagen.

Daher füge eine weitere Spalte in den (Anzeige-)Tabellenaufbau ein und fülle das so neu gewonnene Feld mit der Berechnung aus 'Datum_Abmeldung' und 'Zeit'.


PS: $feldcontainer[$i] ist eine Variable (Array) in dem die Feldnamen Deiner Datenbanktabelle gesammelt werden, um weiter unten im Code den Inhalt des jeweiligen Feldes in der (Anzeige-)Tabelle darstellen zu können.
__________________
Gruss vt1816
Erwarte nicht, dass sich jemand mehr Mühe mit der Antwort gibt als Du Dir mit der Frage.
. . . . . Feedback wäre wünschenswert

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.
Ansosnten gilt: Hilfe ausserhalb dieses Thread (PN, WhatsApp, Skype, Mail, ICQ, etc...) nur per Barzahlung oder Vorauskasse!

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #8  
Alt 01.11.2016, 17:12:20
fieliepae fieliepae ist offline
Anfänger
 
Registriert seit: Oct 2016
Alter: 38
Beiträge: 6
AW: Differenz in Tagen in Tabelle ausgeben

Es sind eigentlich alles Textfelder außer den zwei Datumspalten und der id Spalte.

Hier die Struktur.

Die letzte Spalte soll der Berechnung der Differenz dienen, nur leider weiß ich nicht wo bzw. wie ich genau dieser Spalte die Berechnung zuordnen kann... Geht das mit phpMyAdmin?

Vielen Dank schon mal für den Tipp, ich probiere ein bisschen rum!
Mit Zitat antworten
  #9  
Alt 01.11.2016, 17:19:33
Benutzerbild von vt1816
vt1816 vt1816 ist offline
Administrator
 
Registriert seit: Jul 2004
Beiträge: 3.707
AW: Differenz in Tagen in Tabelle ausgeben

Wieso ist das Feld Differenz-Datum ein Text-Feld? Was steht zzt. bei der Anzeige der Tabelle im Feld Differenz_Datum?

Wie sieht Dein INSERT-Statment aus (alte Werte lassen sich nachtragen, neue gleich beim Speichern berechnen - dann ersparst Du Dir den unnötigen Anzeigekram)? Für gleichen Inhalt sollten auch die gleiche Art von Feldtypen benutzt werden.

In diesem Zusammenhang noch: benutze zukünftig mysqli - mysql ist veraltet.
__________________
Gruss vt1816
Erwarte nicht, dass sich jemand mehr Mühe mit der Antwort gibt als Du Dir mit der Frage.
. . . . . Feedback wäre wünschenswert

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.
Ansosnten gilt: Hilfe ausserhalb dieses Thread (PN, WhatsApp, Skype, Mail, ICQ, etc...) nur per Barzahlung oder Vorauskasse!

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #10  
Alt 01.11.2016, 17:40:52
fieliepae fieliepae ist offline
Anfänger
 
Registriert seit: Oct 2016
Alter: 38
Beiträge: 6
AW: Differenz in Tagen in Tabelle ausgeben

Oh, das war ursprünglich mal ein DATE Feld... Da hatte ich nur was ausprobiert. Deshalb steht da im Moment: 0000-00-00 00:00:00 Sollte ich die Datumsfelder lieber alle auf TIMESTAMP stellen?

Zum Eintragen benutze ich ein E-Mail Formular von website x5.... An den Code komme ich nicht ran. Ich kann für jede Spalte "Namen des Felds in der Datenbank" sowie "Attribut <name>" angeben. Mehr leider nicht...
Mit Zitat antworten
Antwort

Stichworte
datum, differenz, php, tabelle, tage


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

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

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Inner join zweimal mit der gleichen Tabelle basementmedia MySQLi/PDO/(MySQL) 11 28.02.2015 14:24:57
Tabelle drehen und ausgeben TylonHH MySQLi/PDO/(MySQL) 6 07.04.2014 18:36:39
HTML Tabelle mit Formular durchsuchen und Ergebnisse als Tabelle ausgeben duese1990 PHP Grundlagen 3 01.09.2011 00:55:34
DB als Tabelle ausgeben, aber mehrere Seiten AlexD MySQLi/PDO/(MySQL) 4 27.07.2004 13:03:16
SQL ABfrage in Tabelle ausgeben. Shape24 PHP für Fortgeschrittene und Experten 13 17.05.2003 11:33:30


Alle Zeitangaben in WEZ +2. Es ist jetzt 16:42:08 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt