php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 23.04.2010, 11:35  
Neuer Benutzer
 
Registriert seit: 23.04.2010
Beiträge: 2
PHP-Kenntnisse:
Fortgeschritten
subreal befindet sich auf einem aufstrebenden Ast
Standard Kategorisierte Abfrage

Guten Tag zusammen,

ich suche gerade nach einer Lösung für folgende Aufgabe:

Ich habe eine Tabelle mit Datensätzen, die nach Jahren sortiert ausgegeben werden soll.

Nehmen wir also an, dass es zwei felder gibt: id und jahr

SELECT * FROM tabelle order by jahr

soweit alles gut.


Nun ist es mir aber ein anliegen, dass man nicht einfach eine große Liste bekommt, sondern dass diese unterteilt nach Jahren ist.

So dass alle Einträge aus 2009 auch die Überschrift 2009 bekommen .


Weiß hier jemand eine Lösung ???

Liebe Grüße
Sub
subreal ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 23.04.2010, 11:53  
Erfahrener Benutzer
 
Registriert seit: 07.12.2009
Beiträge: 814
PHP-Kenntnisse:
Fortgeschritten
chorn befindet sich auf einem aufstrebenden Ast
Standard

Was meinst du mit "unterteilt" und "Überschriften"? Steckt da noch eine Applikation hinter? Dann gibst du das da halt aus, du hast doch pro Datensatz die Information über das Jahr. Wenn du das nur ein mal willst, merkst du dir immer das Jahr des vorherigen Eintrages und handelst entsprechend.
chorn ist offline  
Alt 23.04.2010, 12:07  
Neuer Benutzer
 
Registriert seit: 23.04.2010
Beiträge: 2
PHP-Kenntnisse:
Fortgeschritten
subreal befindet sich auf einem aufstrebenden Ast
Standard

Hi... ich mein das so:


2009
einträge...

2008
einträge

2007
einträge
subreal ist offline  
Alt 23.04.2010, 12:21  
Erfahrener Benutzer
 
Registriert seit: 07.12.2009
Beiträge: 814
PHP-Kenntnisse:
Fortgeschritten
chorn befindet sich auf einem aufstrebenden Ast
Standard

Dann kannst du ja jetzt direkt umsetzen was ich vorgeschlagen habe.
chorn ist offline  
Alt 23.04.2010, 13:37  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Gruppenbruch (Standardverfahren - PHP.de Wiki)
ChrisB ist offline  
Alt 21.07.2010, 20:52  
Neuer Benutzer
 
Registriert seit: 17.07.2010
Beiträge: 17
PHP-Kenntnisse:
Anfänger
alkusa befindet sich auf einem aufstrebenden Ast
Standard

Hallo allerseits
Der Gruppenbruch bringt mich noch zum Wahnsinn
Seit Tagen versuche ich das Umzusetzen was hier im Forum in etlichen Beiträgen gepostet wurde. Auch das Wiki hab ich x-mal durch gelesen, aber ich checks einfach nicht!! Ist definitiv zu hoch für mich, so trivial die Funktion auch sein mag.

Ich wäre der Forumsgemeinde wirklich sehr dankbar, wenn sie mir da in DAU-verständlicher Erklärung behilflich sein könnte.

Meine Abfrage sieht so aus:
PHP-Code:
<php?
mysql_select_db($database_braun$braun);
$query_query "SELECT f.Kategorie,         
                       f.ID,         
                       f.Marke,         
                       f.Modell,        
                       f.Jahrgang,         
                       f.KM,         
                       f.Farbe,         
                       f.Klima,         
                       f.Optionen,         
                       f.Bild,         
                       f.Preis 
                FROM vw_alleFZ f 
                WHERE (f.aktiv = 'Ja') 
                ORDER BY f.KatID ASC, f.Marke ASC"
;
$query mysql_query($query_query$braun) or die(mysql_error());
$row_query mysql_fetch_assoc($query);
$totalRows_query mysql_num_rows($query);
?> 
Die Ausgabe Im Moment noch so:
Code:
<body>
<table border="1" cellpadding="0" cellspacing="0">
  <tr>
    <td>Kategorie</td>
    <td>ID</td>
    <td>Marke</td>
    <td>Modell</td>
    <td>Jahrgang</td>
    <td>KM</td>
    <td>Farbe</td>
    <td>Klima</td>
    <td>Optionen</td>
    <td>Bild</td>
    <td>Preis</td>
  </tr>
  <?php do { ?>
    <tr>
      <td><?php echo $row_query['Kategorie']; ?></td>
      <td><?php echo $row_query['ID']; ?></td>
      <td><?php echo $row_query['Marke']; ?></td>
      <td><?php echo $row_query['Modell']; ?></td>
      <td><?php echo $row_query['Jahrgang']; ?></td>
      <td><?php echo $row_query['KM']; ?></td>
      <td><?php echo $row_query['Farbe']; ?></td>
      <td><?php echo $row_query['Klima']; ?></td>
      <td><?php echo $row_query['Optionen']; ?></td>
      <td><?php echo $row_query['Bild']; ?></td>
      <td><?php echo $row_query['Preis']; ?></td>
    </tr>
    <?php } while ($row_query = mysql_fetch_assoc($query)); ?>
</table>
</body>
</html>
<?php
mysql_free_result($query);
?>
Also eine einfache Tabelle mit allen Fahrzeugen, sortiert nach Kategorie und Marke.

Ich möchte aber, dass die Kategorie als Überschrift über den jeweiligen Fahrzeugen steht. ChrisB hat mich schon auf den Gruppenbruch hingewiesen und ich weiss, dass dies genau die Funktion wäre die ich brauche, aber wie gesagt: ICH KRIEGS NICHT HIN! Bitte um Hilfe, Danke
alkusa ist offline  
Alt 21.07.2010, 21:10  
Erfahrener Benutzer
 
Benutzerbild von lstegelitz
 
Registriert seit: 07.09.2009
Beiträge: 3.891
PHP-Kenntnisse:
Fortgeschritten
lstegelitz ist ein sehr geschätzer Menschlstegelitz ist ein sehr geschätzer Menschlstegelitz ist ein sehr geschätzer Menschlstegelitz ist ein sehr geschätzer Mensch
Standard

Fußgesteuerte Schleife ist ne schlechte Idee, du greifst schon auf das Ergebnis zu, bevor du es ermittelt hast -> while Schleife anstatt do-while.

Und womit genau hast du Probleme?

Für Gruppenbruch sollte deine Ergebnismenge entsprechend sortiert sein. Du beginnst beim ersten Datensatz und prüfst, ob die zuletzt ausgegebene Überschrift mit der des aktuellen übereinstimmt (Initialwert der letzten Überschrift ist null). Falls nicht, wird die Überschrift ausgegeben und gemerkt für den nächsten Schleifendurchlauf.
__________________
Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.
lstegelitz ist offline  
Alt 21.07.2010, 21:19  
Moderator
 
Registriert seit: 06.06.2008
Beiträge: 4.849
PHP-Kenntnisse:
Fortgeschritten
Wolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer Anblick
Wolla eine Nachricht über ICQ schicken
Standard

PHP-Code:
$jahr '9999';

$sql "SELECT jahr,daten FROM tbl ORDER BY jahr DESC";
$erg mysql_query($sql);

while ( 
$row mysql_fetch_assoc($erg) ){
  if (
$jahr != $row['jahr'] ) { 
    
$jahr $row['jahr'];
    echo 
$jahr;
  }
  echo 
$row['daten'];

__________________
Warum denkt mein Hund eigentlich immer dann, wenn es an der Tür klingelt, es sei für ihn?
Wolla ist offline  
Alt 21.07.2010, 22:08  
Neuer Benutzer
 
Registriert seit: 17.07.2010
Beiträge: 17
PHP-Kenntnisse:
Anfänger
alkusa befindet sich auf einem aufstrebenden Ast
Standard

ok, danke
Ich hab meinen Code nun folgendermassen angepasst:
PHP-Code:
<php?
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");
mysql_select_db($database_braun$braun);
$query_sql "SELECT f.Kategorie,         
                     f.ID,         
                     f.Marke,         
                     f.Modell,         
                     f.Jahrgang,         
                     f.KM,         
                     f.Farbe,         
                     f.Klima,         
                     f.Optionen,         
                     f.Bild,         
                     f.Preis 
              FROM vw_alleFZ f 
              WHERE (f.aktiv = 'Ja') 
              ORDER BY f.KatID ASC"
;
              
$sql mysql_query($query_sql$braun) or die(mysql_error());
$row_sql mysql_fetch_assoc($sql);
$totalRows_sql mysql_num_rows($sql);
$cat '';
$erg mysql_query($query_sql);

?> 
Und die Ausgabe so:
Code:
<body>
<table border="1" cellpadding="0" cellspacing="0">
  <tr>
    <td>Kategorie</td>
    <td>ID</td>
    <td>Marke</td>
    <td>Modell</td>
    <td>Jahrgang</td>
    <td>KM</td>
    <td>Farbe</td>
    <td>Klima</td>
    <td>Optionen</td>
    <td>Bild</td>
    <td>Preis</td>
  </tr>
  <?php while (	$row = mysql_fetch_assoc($erg) ){
	if ($cat != $row ['f.Kategorie'] ){
		$cat = $row['f.Kategorie'];
		echo $cat;
	}
} ?>
    <tr>
      <td><?php echo $row_sql['Kategorie']; ?></td>
      <td><?php echo $row_sql['Marke']; ?></td>
      <td><?php echo $row_sql['Modell']; ?></td>
      <td><?php echo $row_sql['Jahrgang']; ?></td>
      <td><?php echo $row_sql['KM']; ?></td>
      <td><?php echo $row_sql['Farbe']; ?></td>
      <td><?php echo $row_sql['Klima']; ?></td>
      <td><?php echo $row_sql['Optionen']; ?></td>
      <td><?php echo $row_sql['Bild']; ?></td>
      <td><?php echo $row_sql['Preis']; ?></td>
    </tr>
</table>
</body>
Das ergebnis ist jetz, dass ich nur noch eine Zeile erhalte mit dem ersten Fahrzeug. Und Überschrift ist auch keine da.

Was ist falsch? resp. was hab ich da falsch verstanden?
alkusa ist offline  
Alt 21.07.2010, 22:13  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Schau dir mal an, wo du den Anweisungsblock deiner While-Schleife wieder beendet hast ...


Und in einer Tabelle kannst du nicht irgendwo einfach Text ausgeben, da solltest du schon noch ein TR/TH o.ä. drum herum packen.
(Mag sein, dass das jetzt erst mal nur zum Test sein soll - aber es ist gut möglich, dass die Fehlerkorrektur des Browsers solchen Text gleich unterschlägt, und dann kannst du lange Testen, und siehst trotzdem nüscht.)
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB 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
Abfrage von einer Abfrage Datenbanken 5 27.01.2011 23:31
Problem mit Abfrage - join, inner join, distinct? Gachet01 Datenbanken 2 27.01.2011 06:49
result Variablen von SQL verbinden vci PHP Tipps 2010 15 05.02.2010 19:09
Abfrage des Benutzernamens Extremefall PHP Tipps 2010 5 30.01.2010 18:19
Scriptsuche [Erledigt] SQL- Abfrage über 2 tabellen ejim Scriptbörse 1 17.07.2009 21:10
SQL Abfrage ohne DESC langsam Thisi Datenbanken 5 07.01.2009 09:53
Wiemache ich eine Abfrage über 3 Tabellen??? djscaleo Datenbanken 8 05.01.2009 10:46
MySQL - Fehler in einfacher Abfrage oden Datenbanken 11 03.01.2009 20:03
mysql abfrage über 4 Tabelle - bis 3 geht, bei der 4. habert Datenbanken 2 08.09.2005 11:59
[Erledigt] IF() abfrage in variable packen PHP Tipps 2005 14 01.04.2005 17:23
Abfrage von Char-Feldern Datenbanken 9 04.02.2005 14:06
[Erledigt] SQL Abfrage funzt nicht Datenbanken 2 04.02.2005 11:09
[Erledigt] Mysql Abfrage Problem! PHP-Fortgeschrittene 5 27.11.2004 10:22
Abfrage funktioniert zwar, aber nicht korrekt Datenbanken 2 16.08.2004 09:10
Abfrage aus DB noch mal ausgeben und Abfrage aus mehrern Tab PHP Tipps 2004 4 12.07.2004 15:00

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
gruppenbruch do while, gruppenbruch php, php do while gruppenbruch, php gruppenbruch nach x, mysql

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