php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 31-05-2008, 06:38
Sawyer28
 Newbie
Links : Onlinestatus : Sawyer28 ist offline
Registriert seit: May 2008
Beiträge: 14
Sawyer28 ist zur Zeit noch ein unbeschriebenes Blatt
Standard Lösungsansatz um mysql tabelle gruppiert auszulesen ?

hallo jungs,

ich hänge gerade fest
leider hab ich im moment keinen besseren Threadtitel da wir ziemlich früh am morgen haben

folgendes problem/situation:

hab ne mysql tabelle mit folgendem inhalt

id | name | timestamp
-------------------------------
1 tobi 1234
2 mike 1235
3 marcel 2345
4 marco 2346
5 frank 3456
6 stefan 3457

soweit sogut (sorry für die schlechte formatierung)

jetzt möchte das gruppiert über den timestamp auslesen.
das soll heissen, das ich die einträge mit dem tag des eintrags gruppieren will und dabei soll die tabellenfarbe wechseln
ok ich hoffe das ist nicht zu umständlich geschrieben.. aber hier noch das beispiel was ich meine


//Ausgelesene Tabelle:

Name | Zeit
---------------
tobi | 29.05.2008 <--Tabellenfarbe hell
mike | 29.05.2008 <--Tabellenfarbe hell
marcel | 30.05.2008 <--Tabellenfarbe dunkel
marco | 30.05.2008 <--Tabellenfarbe dunkel
frank | 31.05.2008 <--Tabellenfarbe hell
stefan | 31.05.2008 <--Tabellenfarbe hell

ich hoffe das ihr mich versteht

der farbwechsel der tabelle soll also über den timestamp bestimmt werden.
im beispiel sind nur 2 einträge pro tag angegeben wobei es natürlich weitaus mehr sein können..

Ich hoffe Ihr könnt mir helfen, da ich echt vor einem rätsel stehe

schonmal vielen Dank für die hilfe

Sawyer
Mit Zitat antworten
  #2 (permalink)  
Alt 31-05-2008, 08:43
ModestLife
 Registrierter Benutzer
Links : Onlinestatus : ModestLife ist offline
Registriert seit: Sep 2007
Beiträge: 105
ModestLife ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Bei einer Datenbankabfrage heisst gruppieren zusammenfassen. Im Sinne von "einem statt viele".

Ich würde deine Gruppierung in einem Array speichern, mit dem Timestamp als Index.

PHP-Code:
$users = array();
foreach (
$rows as $row) {
    
$users[$row['timestamp']][] = $row;
}

var_dump($users); 

Was du auch machen kannst, ist einfach über die Einträge iterieren und gucken, ob der vorherige Timestamp noch der selbe ist der jetzige. Wenn nicht wechselst du die Farbe.

PHP-Code:
<style type="text/css">
    .
row-highlight-background-colorhell; }
    .
row-highlight-background-colordunkel; }
</
style>

...
$num 0;
$lastTS null;
foreach (
$rows as $row) {
    if (
$row['timestamp'] != $lastTS) {
        
$lastTS $row['timestamp'];
        
$num++;
    }
    echo 
'<tr class="row-highlight-' $num '"><td>...</td></tr>';
}
... 

Geändert von ModestLife (31-05-2008 um 08:49 Uhr)
Mit Zitat antworten
  #3 (permalink)  
Alt 31-05-2008, 15:34
Sawyer28
 Newbie
Links : Onlinestatus : Sawyer28 ist offline
Registriert seit: May 2008
Beiträge: 14
Sawyer28 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo ModestLife,

erstmal danke für die schnelle antwort..
aber leider brachte dein vorschlag nicht das gewünschte ergebniss

ich habe jetzt von jedem user 5 gleiche einträge untereinander stehen ??
und der farbwechsel ist im moment willkürlich jedenfalls erkenne ich kein muster

ich hab es über dein zweiten lösungsansatz probiert..

ich sollte evtl dazuschreiben, das ich die datenbank im moment ohne schnickschnack anspreche:

PHP-Code:
$query $db->query("SELECT * FROM users ORDER BY time DESC"); 
also hab jetzt nix gruppiert, liegt evtl. da der fehler ?

Danke
Sawyer

Geändert von Sawyer28 (31-05-2008 um 17:05 Uhr)
Mit Zitat antworten
  #4 (permalink)  
Alt 31-05-2008, 17:46
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

Also, wenn der Timestamp wirklich nur den Tag speichert (Ohne Uhrzeit), dann kommst du ganz einfach mit nem Gruppenwechsel zurecht.

Ansonsten musst du noch date("Ymd") (oder ein SQL-Seitiges Äquivalent) darauf anwenden und anhand dessen dann den Gruppenwechsel durchführen.

In beiden Fällen musst du der SQL-Query noch ein "ORDER BY tmestamp-Spalte" anhängen.
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!

Geändert von TobiaZ (29-06-2008 um 16:46 Uhr)
Mit Zitat antworten
  #5 (permalink)  
Alt 01-06-2008, 02:30
Sawyer28
 Newbie
Links : Onlinestatus : Sawyer28 ist offline
Registriert seit: May 2008
Beiträge: 14
Sawyer28 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

hi,

ich schwitze hier blut und wasser
steh aber leider noch immer vor einem rätsel...

das beispiel von ModestLife funktioniert definitiv nicht!
bevor TobiaZ geschrieben hat, bin ich auf eine simple idee gestoßen die mich erst hat hoffen lassen, aber dann wieder eiskalt enttäuscht hat

ich weiss das ich auf dem richtigen weg bin, aber mir gehen langsam die ideen aus, aber evtl. habt Ihr ja noch eine idee dazu.

folgendes habe ich gemacht:

PHP-Code:
$farbe = array('0' => "highlight0",
                
'1' => "highlight1",
                
'2' => "highlight0",
                
'3' => "highlight1",
                
'4' => "highlight0",
                
'5' => "highlight1",
                
'6' => "highlight0"); 
in der whileschleife hab ich mit getdate() den aktuellen tag rausgeholt
PHP-Code:
$datum  getdate($row['timestamp']); 
dann einfach die class variable belegt:

PHP-Code:
$class $farbe[$datum['wday']]; 
theoretisch funktioniert das auch wunderbar...
allderdings ist die praxis nicht so wunderbar
wenn sich z.b. am montag 1 user anmeldet und dann erst wieder einer am mittwoch, dann ist der hintergrund bei beiden "dunkel" weil bei dem array Montag => highlight1 ist und bei Mittwoch ist es genauso !!

somit war meine Idee wieder gestorben.
Dennoch bin ich mir sicher das es eine simple lösung gibt, und ich wäre um ein paar weitere denkanstösse evtl. mit kleinen beispielen sehr dankbar.

@TobiaZ
es mag an der Uhrzeit liegen, oder evtl. auch daran das ich den wald vor lauter bäumen nicht mehr sehe aber ich komme nicht drauf was du meinst bzw wie du es meinst ?
in meinem angehängten query ist doch eine "order by xxx" vorhanden ?

Sawyer
Mit Zitat antworten
  #6 (permalink)  
Alt 09-06-2008, 20:22
Sawyer28
 Newbie
Links : Onlinestatus : Sawyer28 ist offline
Registriert seit: May 2008
Beiträge: 14
Sawyer28 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hi,

sorry das ich den thread hier nochmal pushe, aber ich bin leider noch immer nicht weitergekommen

hat evtl. noch jemand ne idee ?
die bisherigen ansätze von hier haben mich leider noch nicht weitergebracht

Danke schonmal

Saywer
Mit Zitat antworten
  #7 (permalink)  
Alt 09-06-2008, 20:41
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

Was genau hast du den von meinen Ansätzen versucht umzusetzen und woran scheiterst du?
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

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 (permalink)  
Alt 09-06-2008, 21:25
Sawyer28
 Newbie
Links : Onlinestatus : Sawyer28 ist offline
Registriert seit: May 2008
Beiträge: 14
Sawyer28 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

also mit den ansätzen von "ModestLife" bekomme ich ein undefinierbares ergebniss..

die farben wechseln nach keinem bestimmten muster, deswegen kann ich dir auch nicht wirklich erklären woran ich da scheiter...

ja und dein lösungsansatz hab ich eigentlich nicht wirklich verstanden ?
was ich aber auch etwas weiter oben schon schrieb...
darauf kam aber keine antwort mehr. deswegen hab ich nicht weiter nachgefragt!

gruss

saywer
Mit Zitat antworten
  #9 (permalink)  
Alt 09-06-2008, 21:33
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

Na dann wollen wir mal schauen. Du wirst doch wenigstens Sagen können, welche Variante für dich überhaupt in Frage käme

Zitat:
Also, wenn der Timestamp wirklich nur den Tag speichert (Ohne Uhrzeit), dann kommst du ganz einfach mit nem Gruppenwechesl zurecht.

Ansonsten musst du noch date("Ymd") (oder ein SQL-Seitiges Äquivalent) darauf anwenden und anhand dessen dann den Gruppenwechsel durchführen.
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!

Geändert von TobiaZ (09-06-2008 um 21:39 Uhr)
Mit Zitat antworten
  #10 (permalink)  
Alt 09-06-2008, 21:54
Sawyer28
 Newbie
Links : Onlinestatus : Sawyer28 ist offline
Registriert seit: May 2008
Beiträge: 14
Sawyer28 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

hi,

also ich speicher den timestamp ohne format also quasi den reinen timestamp in der DB deswegen bin ich gerade unsicher welches deiner lösungsvorschläge in frage käme ?

Sawyer
Mit Zitat antworten
  #11 (permalink)  
Alt 09-06-2008, 21:56
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Ansonsten musst du noch date("Ymd") (oder ein SQL-Seitiges Äquivalent) darauf anwenden und anhand dessen dann den Gruppenwechsel durchführen.
Also trifft das hier zu.

Du könntest jetzt als erste mal FROMUNIXTIMESTAMP und dann DATEFORMAT anwenden. Ymd bzw. %Y%m% habe ich dir ja bereits gesagt.
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

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
  #12 (permalink)  
Alt 10-06-2008, 02:27
Sawyer28
 Newbie
Links : Onlinestatus : Sawyer28 ist offline
Registriert seit: May 2008
Beiträge: 14
Sawyer28 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

guten morgen,

erstmal sorry, aber ich musste leider nochmal weg...

sorry aber ich blick gerade garnicht was du mir sagen willst ich soll mit der php funktion date() in dem format date("Ymd") in die db schreiben anstelle des unixtimestamps ? ?

Sawyer
Mit Zitat antworten
  #13 (permalink)  
Alt 10-06-2008, 10:18
H2O
 PHP Junior
Links : Onlinestatus : H2O ist offline
Registriert seit: Jul 2007
Beiträge: 937
H2O ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ich habe jetzt hier nicht alles bis ins letzte Detail gelesen. Aber da haben wir wieder einmal jemanden, der Datum/Zeit als Integer in der Datenbank speichert, und damit freiwillig auf all die schönen Datum/Zeit-Funktionen von Mysql verzichtet. Wozu gibt es den die Datentypen DATE, TIME und DATETIME?
Da bleibt dir, wie von TobiaZ schon gesagt, wirklich nicht viel anderes übrig, als diesen mit FROM_UNIXTIME() umzuwandeln. Der Rest ist eine simple Gruppenbruchfunktion:
PHP-Code:
$sql "
    SELECT
        name,
        FROM_UNIXTIME(zeit, '%d.%m.%Y') datum
    FROM
        users
    ORDER BY
        zeit DESC"
;
$result db->query($sql) or exit("Fehler: " $db->error "<br />Abfrage: $sql<br />");

$cls = array('hell''dunkel');
$idx 1;
$datum_alt '';
echo 
"<table>\n";
while (
$row $result->fetch_assoc()){
    if (
$row['datum'] != $datum_alt)
        
$idx = ($idx 1) % 2;
        
$datum_alt $row['datum'];
    }
    echo 
"<tr class='$cls[$idx]'><td>" $row['name'] . "</td><td>" $row['datum'] . "</td></tr>\n";
}
echo 
"</table>\n"
Natürlich müssen die Klassen «hell» und «dunkel» im Stylesheet oder sonst wo definiert sein.
__________________
Gruss
H2O
Mit Zitat antworten
  #14 (permalink)  
Alt 16-06-2008, 17:11
Sawyer28
 Newbie
Links : Onlinestatus : Sawyer28 ist offline
Registriert seit: May 2008
Beiträge: 14
Sawyer28 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

hi H2O,

sorry das ich solange nicht online war, aber ich war beruflich unterwegs.

erstmal vielen Dank an euch, ich werde das gleich mal testen.


Danke
Sawyer
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

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 an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

ADSMAN V3 - Werbe-Manager ansehen ADSMAN V3 - Werbe-Manager

ADSMAN V3 - mehr als nur ein Bannermanager! Banner, Textanzeigen und PagePeel Manager! Mit ADSMAN PRO haben Sie die Marketinglösung für eine effektive und effiziente Werbeschaltung mit messbaren Ergebnissen. Unterstützt werden Bannerformate in beliebi

25.10.2018 virtualsystem | Kategorie: PHP/ Bannerverwaltung
PHP News und Artikel Script V2

News schreiben, verwalten, veröffentlichen. Dies ist jetzt mit dem neuen PHP News & Artikel System von virtualsystem.de noch einfacher. Die integrierte Multi-User-Funktion und der WYSIWYG-Editor (MS-Office ähnliche Bedienung) ermöglichen...

25.10.2018 virtualsystem | Kategorie: PHP/ News
Top-Side Guestbook

Gästebuch auf Textbasis (kein MySQL nötig) mit Smilies, Ip Sperre (Zeit selbst einstellbar), Spamschutz, Captcha (Code-Eingabe), BB-Code, Hitcounter, Löschfunktion, Editierfunktion, Kommentarfunktion, Kürzung langer Wörter, Seiten- bzw. Blätterfunktion, V

22.10.2018 webmaster10 | Kategorie: PHP/ Gaestebuch
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 23:04 Uhr.