Werte aus Datenbank an Array übergeben

Hallo PHP-Experten!

Ich baue grade eine Turnierseite für unsere Liga und brauche eure Hilfe. Bis jetzt habe ich die angemeldeten Spieler in ein Array eingegeben und sie den Tischen über das nachstehende Script zugewiesen:

$spieler = array (Chrissie, Gabi, Feli, Alex, Toni, Micha, Dani, Petra, Suse, Janine, Marcel, Sepp);
$anzahl = count ($spieler);

Hier ist noch der Code für die Tischzuweisung:

$tcounter = 1;
define (tisch,4);
$zaehler = 0;
$nummer = 1;
while (tisch \* $tcounter ";
 echo "Tisch ".$tcounter."";
 while ($zaehler";
 echo "".$spieler[$zaehler].""; 
 echo "".$nummer."";
 $zaehler++;
 $nummer++;
 echo "";
 }
 echo "";
 $tcounter++;
 }

Um das Ganze flexibler zu gestalten, würde ich gerne das Array über eine Datenbank-Abfrage füllen. Die zugehörige Tabelle anmeldungen hat die Struktur ID - Teilnehmer

Diese Abfrage funktioniert leider nicht, obwohl sie an anderer Stelle (sie wird für den selben Zweck benutzt) funktioniert:

$sql = "SELECT `id`, `teilnehmer`
 FROM `anmeldungen` order by teilnehmer ASC" . $where . "
 LIMIT " . ($start - 1) . ", " . $limit;

Vielen Dank für eure Hilfe sagt

Alex

Moin,

Diese Abfrage funktioniert leider nicht, obwohl sie an anderer
Stelle (sie wird für den selben Zweck benutzt) funktioniert:

Und was macht man als erstes, wenn eine Datenbankabfrage nicht funktioniert? Insbesondere, wenn man diese erst aus Variablen aufbaut?

Richtig! Man lässt sie sich einfach mal ausgeben!

$sql = „SELECT id, teilnehmer
FROM anmeldungen order by teilnehmer ASC“ . $where . "
LIMIT " . ($start - 1) . ", " . $limit;

$where ist nicht gesetzt (macht keinen Unterschied), aber $start ist auch nicht gesetzt. Ich würde wetten, dass das Subtrahieren einer nicht existenten Variable einen Output erzeugt, der nicht ins Statement passt.

Außerdem steht dann dahinter ein Komma und dann kommt nichts mehr, weil nämlich auch $limit nicht existiert.

Vielen Dank für eure Hilfe sagt

Richtig Programmieren lernen heißt auch richtig Debuggen lernen.
(Ist keine klugscheißerische Weisheit, sondern ein guter Rat).

Liebe Grüße,
-Efchen

Hallo Efchen!

Danke für deine Antwort, sie hat mir sehr geholfen.

Mein Code für die Ausgabe aller Teilnehmer schaut nun so aus:

$query = "Select teilnehmer from anmeldungen";
 $result = mysql\_query($query) /\* resource \*/
 or die ("MySQL-Error: " . mysql\_error());

 echo "

Teilnehmer
\n";
while($row = mysql_fetch_array($result))
{
echo „“ . $row[‚teilnehmer‘] . „“;
}
echo „“;

Damit krieg ich alle schön in eine Tabelle. Mein Hauptproblem ist aber, dass ich die Teilnehmer in Vierergruppen aufteilen muss. Wie krieg ich das denn hin?

Fragt Alex

Hallo

Damit krieg ich alle schön in eine Tabelle. Mein Hauptproblem
ist aber, dass ich die Teilnehmer in Vierergruppen aufteilen
muss. Wie krieg ich das denn hin?

Also ein rückgabe von vielen reihen hast du ja schon rausbekommen .
aber , bei dir sind die nur für die ausgabe vorhanden . du musst aber jede reihe einsammeln .

z.b.

function getArraySQL($sql) {
$aEntry = array();
if ( !$res=mysql_query($sql)) {
echo "Error -> ".$sql;
exit;
}
while ($row = mysql_fetch_array($res,MYSQL_ASSOC)) {
array_push($aEntry,$row);
}
return $aEntry;
}$myPlayers = getArraySQL('SELECT Teilnehmer,Gruppe FROM Tabelle ');

nun hast du ein array deiner spieler

$myPlayers = array(
array(‚Teilnehmer‘=>‚Erster‘,‚Gruppe‘=>‚1‘),
array(‚Teilnehmer‘=>‚Zweiter‘,‚Gruppe‘=>‚1‘),
array(‚Teilnehmer‘=>‚Dritter‘,‚Gruppe‘=>‚2‘)
)

deine gruppen aufteilung solltest du also in der datenbank festhalten .

wenn du nun nach gruppen ausgeben willst kannst du das z.b. mit foreach machen und je nach gruppenwert es in extra variablen für die html ausgabe packen .

z.b.
$gruppen = array(’ Gruppe 1 ‚,‘ Gruppe 2 ‚,‘ Gruppe 3 ‚,‘ Gruppe 4 ');
/* listenstarttag */
foreach($gruppen as &$gruppe) { $gruppe.="
"; }
/* liste */
foreach ($myPlayers as $aplyer) {
$gruppen[($aplyer[‚Gruppe‘]-1)] .= „- „.$aplyer[‚Teilnehmer‘].“
„;
}
/* listenendtag */
foreach($gruppen as &$gruppe) { $gruppe.=““; }

/* ausgabe gruppen */
foreach($gruppen as $gruppe) { echo $gruppe; }