php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 12.08.2008, 12:03  
Neuer Benutzer
 
Registriert seit: 23.07.2008
Beiträge: 13
nopileos
Standard [Erledigt] Mehrfach vorkommender Wert in Ausgabeschleife nur einmal darstellen

Hallo zusammen,

ich habe folgende Frage.

In einer Datenbanktabelle habe ich u.a. folgende Spalten.
1. Artikel
2. Lieferschein Nr.
3. Menge

Ein Artikel kann mehrmals in der Tabelle vorkommen.

PHP-Code:
$sql="SELECT artikel, lieferschein, menge FROM tabelle WHERE datum = '".$_POST['datum']."'";
$res=odbc_exec($dbcon,$sql);
while(
odbc_fetch_into($res,$data)) {
     echo 
"Artikel: " $data[0] . " LSNr. " $data[1] . " Menge: " $data[2] . "<br>\n";

Wenn ich nun eine Abfrage erstelle und die Ergebnisse in einer while Schleife ausgeben lasse, wo z.B der gleiche Artikel 5 mal vorkommt, möchte ich den Artikel nur einmal ausgeben und die dazugehörigen Lieferscheine und Mengen in der darunterliefenden Zeile. Das könnte z.B. so aussehen.

PHP-Code:
Pos 1. ArtikelNrxxxxxx
           LSNr
12345 Menge100
           LSNr
12346 Menge150
           LSNr
12347 Menge125

Pos
2 ArtikelNryyyyyy
           LSNr
12348 Menge80
           LSNr
12349 Menge75 
wie muß ich dann die while Schleife programmieren das ich das hinbekomme

Vielen Dank für Eure Hilfe

Gruß
nopileos
nopileos ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 12.08.2008, 12:10  
Erfahrener Benutzer
 
Registriert seit: 05.04.2005
Beiträge: 1.333
Freeaak ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Am einfachsten wäre es, in der Schleife erstmal ein Zwischen-Array zu füllen, das zu bearbeiten und dann auszugeben.
__________________
"Wenn du nicht weißt, was du tust: Machs mit Eleganz!"

(Murphy's Gesetze)
Freeaak ist offline  
Alt 12.08.2008, 12:32  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.988
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

- In Query gleich nach gleichen DS sortieren.
- Bei der Ausgabe auf Ungleichheit testen (z.B. eine ID)
__________________
--
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 gerade online  
Alt 12.08.2008, 12:37  
Neuer Benutzer
 
Registriert seit: 23.07.2008
Beiträge: 13
nopileos
Standard

Hi,

danke für den Hinweis. Nur wie mach das?

Gruß
nopileos
nopileos ist offline  
Alt 12.08.2008, 12:38  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.988
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

Was genau kannst Du nicht? Fang doch erstmal an.
__________________
--
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 gerade online  
Alt 12.08.2008, 13:09  
Neuer Benutzer
 
Registriert seit: 23.07.2008
Beiträge: 13
nopileos
Standard

Hi,

danke für Deine Geduld,

so, ich habe meine Testabfrage gruppiert, so dass die Ausgabezeilen sortiert ankommen. Hast Du das in Deinem ersten Punkt gemeint?

PHP-Code:
$sql="SELECT artikel, lieferschein, menge FROM testtabelle
      GROUP BY artikel, lieferschein, menge
      ORDER BY artikel, lieferschein, menge"

Zitat:
- Bei der Ausgabe auf Ungleichheit testen (z.B. eine ID)
Da weis wie ich nicht wie ich es anstellen soll.

Gruß
nopileos
nopileos ist offline  
Alt 12.08.2008, 13:22  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

GROUP BY bringt in dem Fall gar nichts, aber das ORDER BY ist nötig. Des weiteren handelt es sich hier um ein klassisches Gruppenbruchproblem und hat wenig mit MySQL zu tun. Pseudocode:
PHP-Code:
$alter_artikel null;
while (
Einträge gefunden){
    if (
$artikel != $alter_artikel){
        
artikel_ausgeben();
        
$alter_artikel $artikel;
    }
    
restliche Daten ausgeben();

__________________
Gruss
L
lazydog ist offline  
Alt 12.08.2008, 13:40  
Neuer Benutzer
 
Registriert seit: 23.07.2008
Beiträge: 13
nopileos
Standard [erledigt] Mehrfach vorkommender Wert in Ausgabeschleife nur einmal darstellen Auf

Hi lazydog,

vielen Dank. Dank Deiner Beschreibung hat es mit folgendem Testscript funktioniert.

PHP-Code:
$sql="SELECT artikel, lieferschein, menge FROM testtabelle
      ORDER BY artikel"
;
$res=odbc_exec($dbcon,$sql );

$alter_artikel null;
while(
odbc_fetch_into($res,$data)) {
    if (
$data[0] != $alter_artikel){

        echo 
"Artikel " $data[0] . "<br>";
        
$alter_artikel $data[0];
    }
    echo 
"Lieferschein " $data[1] . " Menge " $data[2] . "<br>";


Gruß
nopileos
nopileos ist offline  
Alt 12.08.2008, 13:52  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.988
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

Supi. Ich verschieb das mal in den PHP Bereich.

Btw: Der Begriff 'Gruppenbruch' taucht jetzt schon das zweite mal die letzten Tage auf. War mir für diese Lösung bisher auch noch nicht geläufig. Mußte ich neulich direkt die Boardsuche benutzen, um zu wissen, wovon die Rede ist.

[MOD: verschoben]
__________________
--
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 gerade online  
Alt 12.08.2008, 14:35  
Neuer Benutzer
 
Registriert seit: 23.07.2008
Beiträge: 13
nopileos
Standard

Hi,

hat jetzt nichts mehr mit meiner Frage zu tun.
Ich habe gesehen das die Beiträge, die erleidigt sind, auch als solche zu erkennen sind. Dies wollte ich bei diesem Beitrag auch machen, indem ich den Titel von meiner letzten Antowort bearbeitet habe und ein [erledigt] als Prefix vorangestellt habe. Hat aber nicht funktioniert, sieht man nur in dem Beitrag, nicht aber in der Übersicht. In meinem Eröffnungsbeitrag kann ich aber den Titel nicht ändern.
Wie kann man den kompletten Beitrag als erledigt Kennzeichnen?

Gruß
nopileos
nopileos 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
nach grösstem (unbekannten) Wert suchen lindner Datenbanken 2 20.08.2006 22:13
array verarbeitung (schlag auf den hinterkopf) PHP Tipps 2007 9 16.11.2005 11:37
kleinsten und größten wert ermitteln niffi PHP Tipps 2005 14 26.04.2005 12:42
[Erledigt] Problem: per klick auf Button Wert erhöhen/verringern HTML, Usability und Barrierefreiheit 7 07.10.2004 08:31

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
http://www.php.de/php-tipps-2008/46657-erledigt-mehrfach-vorkommender-wert-ausgabeschleife-nur-einmal-darstellen.html, mysql eintrag nur einmal zeigen, excel mehrmals vorkommende werte nur einmal anzeigen, excel alle mehrfach vorkommenden werte einmal darstellen, mysql nur einmal vorkommen, my sql query vorkommende unterschiedliche daten, ausgabe in schleife nur einmal, php ausgabe nur einmal, sql schleife eine spalte nur einmal ausgeben, html schleife die nur einen wert ausgibt, php mehrfch gleichen wert nur einmal wählen, php mysql ausgabe einfach anzeigen, mysql while wert einmal, php while nur 1 wert ausgeben, sql 2000 mehrfacher gleiche reihe nur einmal, sql anzahl werte, die mehr als einmal vorkommen, mysql ausgabe gleicher wert nur 1 mal, for schleife einmal ausgeben, php spaltenüberschrift in schleife einmal ausgeben, mysql ausgabe mehrfach nur einmal

Alle Zeitangaben in WEZ +2. Es ist jetzt 16:51 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