Verschachtelte IF Abfrage in While

Individuum

Mitglied
Hioh


Problem:
Es geht darum, ich bastle an ner Auswertung für eine Umfrage.
Mein Problem ist er wiederholt im Moment immer diesen Teil:
echo $table_header . $table_headline2 . $table_headline;
Obwohl ich das vorher eigentlich nur bei einer Neuen Frage oder einem neunen Durchlauf machen will. Weiter unten findet ihr wie es momentan auschaut und wie es eigentlich sollte.
Hoffe das war soweit verständlich.

Gruß und Danke im Vorraus euer Indi

Code:
PHP:
	while ($out = $sql->fetch())
	{		
		if (empty($last_frage)) $new_run = TRUE;
		
		if ($new_run == FALSE)
		if ($out['frage'] != $last_frage) $new_frage = TRUE; else $new_frage = FALSE; 
		
		if ($new_frage == TRUE || new_run == TRUE){
			if ($new_run == FALSE)
				echo $table_close;
			$table_headline2 = "<tr><td colspan=\"2\">Frage ". $out['frage'] ."</td></tr>"; 
			echo $table_header . $table_headline2 . $table_headline; }
			
		echo "<tr><td>". $antwort ."</td><td>". $out['ergebnis'] ."</td></tr>";
		
		$last_frage = $out['frage'];
	}

Soll:
Code:
<table width="500" border="0" cellspacing="0" cellpadding="0"> 
<tr> 
  <td colspan="2">Frage 1</td> 
</tr> 
<tr> 
  <td>Antwort</td> 
  <td>Anzahl</td> 
</tr> 
<tr>
  <td>2</td>
  <td>35</td>
</tr>
<tr>
  <td>3</td>
  <td>15</td>
</tr>
<tr>
  <td>4</td>
  <td>17</td>
</tr>
<tr>
  <td>8</td>
  <td>85</td>
</tr>
</table>
<table width="500" border="0" cellspacing="0" cellpadding="0"> 
<tr> 
  <td colspan="2">Frage 1</td> 
</tr> 
<tr> 
  <td>Antwort</td> 
  <td>Anzahl</td> 
</tr> 
<tr> 
  <td>1</td> 
  <td>25</td> 
</tr> 
<tr> 
  <td>2</td> 
  <td>40</td> 
</tr> 
  </table>

IST:
Code:
<table width="500" border="0" cellspacing="0" cellpadding="0"> 
<tr> 
  <td colspan="2">Frage 1</td> 
</tr> 
<tr> 
  <td>Antwort</td> 
  <td>Anzahl</td> 
</tr> 
<tr> 
  <td>4</td> 
  <td>2</td> 
</tr> 
<table width="500" border="0" cellspacing="0" cellpadding="0"> 
<tr> 
  <td colspan="2">Frage 1</td> 
</tr> 
<tr> 
  <td>Antwort</td> 
  <td>Anzahl</td> 
</tr> 
<tr> 
  <td>5</td> 
  <td>4</td> 
</tr> 
<table width="500" border="0" cellspacing="0" cellpadding="0"> 
<tr> 
  <td colspan="2">Frage 2</td> 
</tr> 
<tr> 
  <td>Antwort</td> 
  <td>Anzahl</td> 
</tr> 
<tr> 
  <td>Antwort Ungültig</td> 
  <td>7</td> 
</tr>
 
Ich hab zwar ehrlich gesagt keinen SChimmer, was du da machen willst und ich bin heute abend nicht mehr in der Lage dazu, deinen Code und deine Problembeschreibung komplett nachzuvollziehen, aber zwei Sachen fallen mir auf:

1. $ bei new_run vergessen:
PHP:
// aus
if ($new_frage == TRUE || new_run == TRUE){ 
// mach
if ($new_frage == TRUE || $new_run == TRUE){
2. Achte bitte mal auf eine ordentliche Klammersetzung und auch Einrückung bei den unterschiedlichen Code-Blöcken (Schleifen, Abfragen usw.):
PHP:
// Ich habe keine Ahnung, was du hier ausführen willst, wenn diese Bedingung zutrifft:
if ($new_run == FALSE)
 
@ Ludz thx, das hatte ich auch ganz übersehen.
2. Da soll er falls es nicht das 1. Mal is die zuvor "geöfnette" Tabelle schliessen.

Aber mein eigentliches Problem besteht immer noch. Er wiederhohlt die Kopfzeile nach jedem Datensatz und nicht dann wann er soll. Nämlich dann wenn er eine neue Frage ( Abschnitt) ausgibt.
 
PHP:
         if ($new_frage == TRUE || new_run == TRUE){ 
            if ($new_run == FALSE) 
                echo $table_close;

dort die Abfrage if ($new_run == FALSE) is glaube unnötig, da wenn es FALSE ist, dann würde er ja nicht dort rein kommen, da man ja nur rein kommt, wenn es TRUE ist.
 
Zurück