php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2005-2

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 26.10.2005, 15:07  
Erfahrener Benutzer
 
Registriert seit: 23.08.2004
Beiträge: 175
tekknotrip
Standard Totale Blockade im Kopf :-) Einfache Augabevariante

Hallo Leute,
habe eine Tabelle mit Daten:
Start, End, Title, Text

nun möchte ich bei der Ausgabe folgendes machen:

Januar:
Start - End
Title
Text


Februar:
Start - End
Title
Text


März:
Start - End
Title
Text

usw....

Die Struktur soll sich aber dynamisch aufbauen anhand der vorhandenen Datensätze (Start).

Bsp (wenn nur 3 Datensätze vorhanden sind mit start Feb, März 06 und einer mit Aug. 07):

Februar 2006
Start - End
Title
Text

März 2006
Start - End
Title
Text

August 2007:
Start - End
Title
Text


Mir fehlt dazu ein Lösungsansatz bei der Ausgabe (Monat und Jahr bestimme ich im Select mit date_format() )

Hat mir dazu einer eine kleine Hilfestellung?
Wäre dankbar, gruss, Micha
tekknotrip ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 26.10.2005, 15:24  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Lösungsansatz?

Daten sortiert aus der Datenbank holen & mit PHP in das gewünscht Format printen?
Zergling-new ist offline  
Alt 26.10.2005, 15:44  
Gast
 
Beiträge: n/a
Standard

du holst alle db-einträge aus der tabelle in einen array.
gibt dafür verschiedene möglichkeiten, wie zb: mysql_fetch_array().

dann lässt du den array mit foreach() durchlaufen. je nach anweisung in "foreach" baut php dir die struktur auf.


http://www.php.net/manual/de/control...es.foreach.php
http://www.php.net/manual/de/functio...etch-array.php
 
Alt 26.10.2005, 15:45  
Erfahrener Benutzer
 
Registriert seit: 23.08.2004
Beiträge: 175
tekknotrip
Standard

@Zergling

Ja, soweit war ich schon

Mein Problem worüber ich mir den kopf zerbreche ist die dynamische Monatsaufteilung:

V = Veranstaltung

Januar 2005:
V - 1
V - 2
V - 3


März 2005:
V - 4
V - 5

Februar 2006:
V - 6
V - 8


Ich bekomms nicht gebacken die beschreibenden Monate über die Veranstaltungen zu setzen.
tekknotrip ist offline  
Alt 26.10.2005, 15:47  
Erfahrener Benutzer
 
Registriert seit: 23.08.2004
Beiträge: 175
tekknotrip
Standard

@embee
oder mit while
tekknotrip ist offline  
Alt 26.10.2005, 15:50  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Erläuter mal nochmal dein Problem, ich glaube ich verstehe es nicht so ganz. Warum schaffst du es nicht, es darüber zu setzen??
Zergling-new ist offline  
Alt 26.10.2005, 15:50  
Gast
 
Beiträge: n/a
Standard

kannste nicht mal einen auszug aus deinem script zeigen, dann ist das wesentlich einfacher...

du kannst dir allerdings auch ne klasse bauen, und diese dann immer aufrufen.
weisst du wie ich meine?

kannste dann schön einfach aufrufen, beispielsweise:
$objekt->date;
$objekt->jear;
$objekt->event;
$objekt->end;...
 
Alt 26.10.2005, 15:58  
Erfahrener Benutzer
 
Registriert seit: 23.08.2004
Beiträge: 175
tekknotrip
Standard

Also Script technisch gibt es noch nicht so viel, da ich erst noch bei der Logik bin

Aber ein Beispiel - nicht repräsentativ:

PHP-Code:
<?php
while ($row = @ mysql_fetch_array($result)) {
        if (
$row['start_month'] == 05) {
        echo 
"veranstaltungen im Mai 2005
"
;
        echo 
$row['start_date']."
"
.
                        
$row['title']."
"
.
                        
$row['text'];
    }
}

?>
Ergibt:
Zitat:
veranstaltungen im Mai 2005
29.05.2005
blablabl
blablabla

veranstaltungen im Mai 2005
30.05.2005
blablabl
blablabla

veranstaltungen im Mai 2005
31.05.2005
blablabl
blablabla
ich möchte aber gerne:
Zitat:
Veranstaltungen im mai 2005
29.05.2005
blablabl
blablabla

30.05.2005
blablabl
blablabla

31.05.2005
blablabl
blablabla
haben
tekknotrip ist offline  
Alt 26.10.2005, 16:08  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Achso, dann wäre mein Vorschlag:
PHP-Code:
<?php
while ($row mysql_fetch_assoc($result)) { // am besten ohne @ und mit _assoc
  
$rows[$row['start_month']][] = $row;
}
for (
$m 1$m <= 12$m++) { // Monate
  
if (isset($rows[$m])) {
    print 
'Monat ' $m '
'
;
    for (
$i 0$i count($rows[$m]); $i++) {
      
// Ausgabe des Events
    
}
  }
}
?>
Edit, achso du hast Events nach Tagen (logisch). Dann mußt du einfach dein Array erweitern.
1. Dimension = Monat
2. Dimension = Tag
3. Dimension = Event
und eben dementsprechend die Schleifen schachteln und die Arrays schreiben&lesen.
Zergling-new ist offline  
Alt 26.10.2005, 16:19  
Gast
 
Beiträge: n/a
Standard

Wie wäre es, einfach bei jedem Schleifendurchlauf zu prüfen, ob der Monat ein Neuer ist?

PHP-Code:
<?php
$oldmonth
=0;
while (
$row = @ mysql_fetch_array($result)) { 
      if (
$row['start_month'] != $oldmonth) { 
          echo 
"veranstaltungen im ".$row['start_month']."2005
"

          
$oldmonth=$row['start_month'] ;
      }
      echo 
$row['start_date']."
"

                        
$row['title']."
"

                        
$row['text']; 
   } 

?>
 
 


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

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
kopf blockade, totale blockade

Alle Zeitangaben in WEZ +1. Es ist jetzt 19:06 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

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.