Eine Ausgabe zuviel

Hillary

Mitglied
Hallo zusammen, hoffentlich kann mich jemand von meiner leidigen Fehlersuche befreien.

Aus einer Mysql DB frage ich aus mehreren Tabellen DS ab. Dabei sortiere ich die DS mit gleicher Spielnr aus, und zeige die Übrigen in generierten Tabellen an.

10 Tabellen werden so erzeugt. Alles klappt, jedoch wird am Anfang eine 11te (und somit erste) Tabelle mit leerem Inhalt erzeugt. Ich vermute es liegt an der $table = $table."... Verbindung.

der auf das Problem gekürzte Code:

PHP:
$sql1 = "SELECT ID, selbst, stats, spielnr, datum, ort, gegner, framesg, framesv, gewonnen, unent, verloren, elo
FROM kpl_$spielerklein1
WHERE Spielnr != '0'
UNION ALL
SELECT ID, selbst, stats, spielnr, datum, ort, gegner, framesg, framesv, gewonnen, unent, verloren, elo
FROM kpl_$spielerklein2
WHERE Spielnr != '0'
UNION ALL.......
";

$sql2 = $sql1."ORDER BY spielnr DESC LIMIT 20";
$ergebnis2= mysql_query($sql2);

$testvar=""; 
do { 
if($testvar == "" || $testvar != $row['spielnr']) 
{ 
        $testvar = $row['spielnr']; 

     // ein paar Rechnungen....und dann:
     if($zahl == 0)
     {
          $tr1 = "<tr>";
          $tr2 = "";
          $zahl = 1;
     }
     else
     {
          $tr1 = "";
          $tr2 = "</tr>";
          $zahl = 0;
     }
     $table = $table."$tr1
                           <td><div align='center'>
                           //........Tabellenstruktur etc.............
                            </div></td>
	               $tr2";

     if($row['spielnr']>0)
     {
                 $table2 = $table;
     }
} 
} 
while ($row=mysql_fetch_array($ergebnis2));
						
$tableganz ="<table width='620 border='0' cellspacing='0' cellpadding='0'>
		            $table2
	      </table>";
							
echo $tableganz;

Tja, und irgendwo wird zu allererst eine leere Tabelle erzeugt. Als ob es beim ersten mal ohne "füllen" durchläuft. Vielen Dank an euch im voraus
 
Hi,
so spontan fällt mir auf:
if($testvar == "" || $testvar != $row['spielnr']) <--- (|| $testvar != $row['spielnr']) ist überflüssig, da $testvar vorher genullt wird
{
$testvar = $row['spielnr'];

// ein paar Rechnungen....und dann:
if($zahl == 0) < --- hier liegt denk ich das "Datensatzproblem", da $zahl keinen Wert hat und in die else Bedingung läuft, schau mal was passiert, wenn du vor der Fußgesteuerten Schleife $zahl auf 0 setzt...
{
$tr1 = "<tr>";
$tr2 = "";
$zahl = 1;
}
else
{
$tr1 = "";
$tr2 = "</tr>";
$zahl = 0;
}

Mfg
Andi
 
Danke für Deine Antwort. Ich bin mittlerweile nicht mehr an meinem Rechner
und kann es daher nicht überprüfen. Bin mir aber zu 95-99% sicher noch vor der Datenbankanfrage (sql1) $zahl genullt zu haben ( $zahl = 0; ). Nur beim Übertrag ins Forum hab ich diese Zeile vergessen.
 
Die 3 Felder verloren, gewonnen, unent werden nicht unbedingt benötigt. Die anderen jedoch schon. Im Prinzip funktionert ja alles. Die Probleme sind enstanden, als ich die Auflistung der 10 Ausgaben nicht nur untereinander vornehmen wollte, sondern in 2 Spalten

01 - 02
03 - 04
05 - 06
07 - 08
09 - 10

Und da war es geschehen:

00 - 01
02 - 03
04 - 05
06 - 07
08 - 09
10

Die 00 ist der ungefüllte generierte Tabellenteil
 
ersetze deine
do {...} while ($row=mysql_fetch_array($ergebnis2);

Schleife durch eine

While ($row=mysql_fetch_array($ergebnis2)
{....}

Schleife
 
Danke melmager.

Hat nicht ganz funtioniert. Vieleicht noch zu früh heute ;-)
Allerdings hab ich erfolgreich improvisiert (Bitte nicht schlagen):
Ich habe einen weiteren Zähler eingebaut ($zahl2) und die Schleife
PHP:
if($zahl2<=1)
{
$table ="";
}

ergibt folglich:
01
02 - 03
04 - 05
06 - 07
08 - 09
10

Nun noch $zahl den Anfangswert 1 zuorden = fertig.

Dank auch noch an Dich, Andi1982
 
Zurück