Problem Zeilentrennung / Zwischensummen

xitam

Mitglied
Hallo Leute habe mir folgenden Code zusammengeschrieben:

PHP:
$abfrage = "SELECT did, tknmr, kennz, datum, zeit, produkt, ltr, ltr_preis_brutto, ltr_preis_netto, kost_ohne_abzug_netto, rabatt_dette_netto, dette_netto_preis, rabatt_ut_netto, ut_netto_preis, dett_netto_gewinn, firma FROM tank_daten  WHERE  datum >= '$fromdate' AND datum <= '$todate' AND firma = '$re_firma'  ORDER BY tknmr ASC, kennz ASC, datum ASC ";
  $ergebnis = mysql_query($abfrage);
  while($bookid = mysql_fetch_object($ergebnis))	

    {	
	
	$bookid->datum = date_mysql2german($bookid->datum);
	
	
?>
	
	

	<table border="1" cellpadding="1" cellspacing="1"  > 		
        <tr> 	
				<?php  $kennzcopy = $bookid->kennz;
						
						IF ($schalter == 1)	{$kennzcopy1 = $bookid->kennz;}?>
						
				<?php IF ($kennzcopy == $kennzcopy1)
						{$zws = $zws + $bookid->ut_netto_preis;	
						 $zws_liter = $zws_liter + $bookid->ltr;
						 
						 IF ($bookid->produkt == "Adblue")
								{
								$zws_liter_blue = $zws_liter_blue + $bookid->ltr;						
								}
									ELSE
										{
										$zws_liter_diesel = $zws_liter_diesel + $bookid->ltr;
										}
								
								
							
							
						 $schalter = 0;}
						 
							ELSE
								{
								
								echo "GesamtLiter: $zws_liter  <>";
								echo "  LKW-ZwischenSumme: $zws  <>";
								echo "  Davon Diesel: $zws_liter_diesel  <>";
								echo "  Davon Adblue: $zws_liter_blue  ";
								echo "<br>";
								echo "<br>";
								$zws_liter = 0;
								$zws_liter_diesel = 0;
								$zws_liter_blue = 0;
								$zws = 0;
								$zws_liter = $bookid->ltr;
								
						 
						 IF ($bookid->produkt == "Adblue")
								{
								$zws_liter_blue = $bookid->ltr;						
								}
									ELSE
										{
										$zws_liter_diesel = $bookid->ltr;
										}
										
								$zws = $bookid->ut_netto_preis;
								$schalter = 1;								
								}
						 ?>	
			<td width="100"	align="center"	><b><?php echo($bookid->datum);?></b></td> 
            <td width="100"	align="center"	><b><?php echo($bookid->kennz);?></b></td> 
            <td width="70" align="center"  ><?php echo($bookid->tknmr); ?></td> 
			<td width="80"	align="center"	><b><?php echo($bookid->produkt);?></b></td> 
			<td width="70"	align="center"	><b><?php echo($bookid->ltr);?></b></td> 
			<td width="80"	align="center"	><b><?php echo($bookid->ltr_preis_netto);?></b></td>
			<td width="100"	align="center"	><b><?php IF ($bookid->produkt == "Adblue") { $rut = 0.00; } ELSE {$rut = rabatt_ut; } echo $rut;  ?></b></td>
			<td width="100"	align="center"	><b><?php echo($bookid->ut_netto_preis);?></b></td>
			
			
			
			
			
			<!-- 	----------------- Betrag zähler unternehmer netto preis			-->
			<?php $betrag_ut = $betrag_ut + $bookid->ut_netto_preis;			?>
		

	
        </tr>        		
	</table> 

<?php

    }

Zur info es werden Rechnungsdaten ausgelesen.

Damit Gruppiere ich eben gleiche Kennzeichen und wenn ein neues Kennzeichen kommt wird eine Zwischensumme ausgegeben...!

Soweit funktioniert das ganze auch so wie ich das will NUR wenn in dem Zeitraum ein LKW nur eine "Aktion" ausgelöst hat sprich er nur einmal vorkommt, dann wird mir das ganze nicht getrennt und keine Zwischensumme ausgegeben...!
Ich weis langsam nicht mehr weiter...?!
 
Hi habe das ganze jetzt mal ein bisschen aufgeräumt!
Aber immer noch das selbe Problem.
Ab 2 Datensätzen macht er mir eine Trennung!
Wenn nur 1 Datensatz da ist macht er keine -_-

PHP:
  $abfrage = "SELECT did, tknmr, kennz, datum, zeit, produkt, ltr, ltr_preis_brutto, ltr_preis_netto, kost_ohne_abzug_netto, rabatt_dette_netto, dette_netto_preis, rabatt_ut_netto, ut_netto_preis, dett_netto_gewinn, firma FROM tank_daten  WHERE  datum >= '$fromdate' AND datum <= '$todate' AND firma = '$re_firma'  ORDER BY tknmr ASC, kennz ASC, datum ASC ";
  $ergebnis = mysql_query($abfrage);
  
   WHILE ($bookid = mysql_fetch_object($ergebnis))	

    {	
	
	$bookid->datum = date_mysql2german($bookid->datum);
	
	IF ($schalter == 1)	{$kennzcopy1 = $bookid->kennz;}

	IF ($bookid->kennz == $kennzcopy1) {$schalter = 0;}						 

	ELSE {$schalter = 1;}					
	


	echo "<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\"  >";
	IF ($schalter == 1)
	{
	echo "<tr>";
	echo "Trennung";
	echo "</tr>";
	}	


	echo "<tr>";	
	echo "<td width=\"100\"	align=\"center\"><b>$bookid->datum</b></td>";
	echo "<td width=\"100\"	align=\"center\"><b>$bookid->kennz</b></td>";
    echo "<td width=\"70\" align=\"center\"><b>$bookid->tknmr</td>" ;
	echo "<td width=\"80\"	align=\"center\"><b>$bookid->produkt</b></td>" ;
	echo "<td width=\"70\"	align=\"center\"><b>$bookid->ltr</b></td>";
	echo "<td width=\"80\"	align=\"center\"><b>$bookid->ltr_preis_netto</b></td>";
	echo "</tr>"; 
	echo "</table>";
}
 
Prüfe doch mal den Inhalt der Variablen durch Testausgaben, ob die IF Statements auch passen.

Beispiel:

PHP:
WHILE ($bookid = mysql_fetch_object($ergebnis))     
{     
echo "<br/><br/>WHILE, run nr: ".($c++)."<br/>";
    $bookid->datum = date_mysql2german($bookid->datum);      
echo "Debug 1: SCHALTER: ".$schalter."<br/>";
    IF ($schalter == 1)    {
           $kennzcopy1 = $bookid->kennz;
           echo "Debug 1.1: KENNZCOPY1: ".$kennzcopy1.", BOOKID->KENNZ: ".$bookid->kennz."<br/>";
    } 
echo "Debug 2: SCHALTER: ".$schalter."<br/>";
    IF ($bookid->kennz == $kennzcopy1) {
        echo "Debug 2.1, IF true, Werte: BOOKID->KENNZ: ".$bookid->kennz.", KENNZCOPY1: ".$kennzcopy1."<br/>";
        $schalter = 0;
        echo "Debug 2.2, Schalter set to 0<br/>";
    }                          
    ELSE {
                echo "Debug 2.3, IF false, Werte: BOOKID->KENNZ: ".$bookid->kennz.", KENNZCOPY1: ".$kennzcopy1."<br/>";
        $schalter = 1;
        echo "Debug 2.2, Schalter set to 1<br/>";
   }  
echo "Debug 3: SCHALTER: ".$schalter."<br/>";   
   IF($schalter == 1) {
        echo "Debug 4: Schlter == 1, write Trennung<br/>";
   }
// weitere scriptzeilen
}
Dann musst du dir die Ausgabe mal anschauen und ein wenig die Programmverfolgung durchgehen. Es empfiehlt sich den eigentlichen erzeugten HTML Code aus zu kommentieren, damit man nur die Debug ausgaben hat und diese schon untereinander stehen.

Möglich ist, das ein Wert aus der Datenbank nicht vorhanden ist und damit ein $kennzcopy1 == $books->kennz nicht wie erwartet TRUE liefert oder sowas.
Ich würds so machen, bevor man gar nicht mehr weiter kommt.

Gruss

Edit: Sieht ein bischen wirr aus durch die Formatierung hier im Forum. Wenn alles wieder korrekt eingerückt ist, wirkt es gar nicht so schlimm ;)
 
Hi erstmal danke das du mir hilfst ;)
Also hab das mal von dir laufen lassen:

WHILE, run nr: 10
Debug 1: SCHALTER: 0
Debug 2: SCHALTER: 0
Debug 2.1, IF true, Werte: BOOKID->KENNZ: NR949CA, KENNZCOPY1: NR949CA
Debug 2.2, Schalter set to 0
Debug 3: SCHALTER: 0


WHILE, run nr: 11
Debug 1: SCHALTER: 0
Debug 2: SCHALTER: 0
Debug 2.3, IF false, Werte: BOOKID->KENNZ: NR954DS, KENNZCOPY1: NR949CA
Debug 2.2, Schalter set to 1
Debug 3: SCHALTER: 1
Debug 4: Schlter == 1, write Trennung


WHILE, run nr: 12
Debug 1: SCHALTER: 1
Debug 1.1: KENNZCOPY1: NR292BS, BOOKID->KENNZ: NR292BS
Debug 2: SCHALTER: 1
Debug 2.1, IF true, Werte: BOOKID->KENNZ: NR292BS, KENNZCOPY1: NR292BS
Debug 2.2, Schalter set to 0
Debug 3: SCHALTER: 0

Aeh ja also bei 12 müssten die schalter auf 1 sei damit er die trennung schreibt sind sie aber nicht -_-!
Wie bekomm ich das nur hin ?
 
Zuletzt bearbeitet:
Gute Frage...

Das einzige was mir jetzt noch einfällt ist, das durch den HTML Code die Anzeige der Trennung nicht möglich ist. Die Trennung wird nur mit "tr" ohne "td" und "colspan" ausgegeben.
Aber ob es das ist? Ich meine jeder Browser müsste eigentlich trotzdem das Wort Trennung anzeigen.
Ein versuch ist es allerdings Wert

PHP:
IF ($schalter == 1) 
    { 
    echo "<tr>"; 
    echo "<td colspan=\"6\">Trennung</td>"; 
    echo "</tr>"; 
    }

Ansonsten müsste man sich mal den generierten HTML Code anschauen. Eventuell dadruch kann man den Fehler entdecken, aber spontan sehe ich da nichts.
 
ähm ja falscher alarm

WHILE, run nr: 11
Debug 1: SCHALTER: 0
Debug 2: SCHALTER: 0
Debug 2.3, IF false, Werte: BOOKID->KENNZ: NR954DS, KENNZCOPY1: NR949CA
Debug 2.2, Schalter set to 1
Debug 3: SCHALTER: 1
Debug 4: Schlter == 1, write Trennung


WHILE, run nr: 12
Debug 1: SCHALTER: 1
Debug 1.1: KENNZCOPY1: NR292BS, BOOKID->KENNZ: NR292BS
Debug 2: SCHALTER: 1
Debug 2.1, IF true, Werte: BOOKID->KENNZ: NR292BS, KENNZCOPY1: NR292BS
Debug 2.2, Schalter set to 0
Debug 3: SCHALTER: 0

bei 12 müsste er eine Trennung machen.
Macht er aber nicht weil der schalter ja auf 0 steht.
Ich weiß nur nicht wie ich das jetzt lösen soll ?
Ist echt nur immer wenn es nur ein Datensatz ist :/

Gibts da evtl nicht auch einfach gleich nen besseren weg ?
mfg xitam
 
also ich komm nicht weiter evtl müsste man das ja nu mit nem weiteren schalter oder so machen aber ich weis echt nicht wie..!

Oder gibts evtl auch noch nen andren weg ?
Kann doch nicht so schwer sein das man da so ein Paar daten in gruppen darstellt `:/
plz Help
mfg xitam
 
Kannst du die genaue Tabellenstruktur posten und dann ein Beispiel wie das ganz ausgegeben werden soll (also aufgemalt *g* ).
Dann kann man da sicher etwas basteln.
 
Zurück