Frage zu SQL Abfrage in PHP

Harmomix

Mitglied
Hallo liebe User dieses Forums ich habe eine Frage !!!

mein jetziger PHP Code

PHP:
$sql = "SELECT
        *
      FROM
          mhdl_liga
        WHERE
            liga = 'c1' AND runde = 1 AND saison = ".SAISON."
      ORDER BY
          runde ASC";
  $result = mysql_query($sql) or die("Fehler: ".mysql_error());
$sql1 = "SELECT
         *
      FROM
          mhdl_liga
        WHERE
            liga = 'c1' AND runde = 2 AND saison = ".SAISON."
      ORDER BY
          runde ASC";
  $result1 = mysql_query($sql1) or die("Fehler: ".mysql_error());

echo "<h2><center>Spielplan Liga C1</h2>";
echo "<h3><center>Spieltag 1</h3>";
  echo("<center><table border=\"1\">\n");
  echo "<tr class=colorGrey><th>Spieltag</th><th>Heimteam</th><th>Auswärtsteam</th><th>Spielort</th><th>Spieltag</th><th>Anwurf</th><th>Verlegt</th></tr>";

  if(mysql_num_rows($result)) {
      while ($row = mysql_fetch_assoc($result)) {
          echo "</td><td>".$row['runde']."</td><td>".$row['teamheim']."</td><td>".$row['teamaus']."</td><td>".$row['lokal']."</td><td>".$row['datum']."</td><td>".$row['time']."</td><td>".$row['verlegt']."</td></tr>";
      }
  
  } else {
    echo "Noch kein Spielplan für Liga C1 vorhanden!";
  }

  echo "</table>";

echo "<h3><center>Spieltag 2</h3>";
  echo("<center><table border=\"1\">\n");
  echo "<tr class=colorGrey><th>Spieltag</th><th>Heimteam</th><th>Auswärtsteam</th><th>Spielort</th><th>Spieltag</th><th>Anwurf</th><th>Verlegt</th></tr>";

  if(mysql_num_rows($result1)) {
      while ($row = mysql_fetch_assoc($result1)) {
          echo "</td><td>".$row['runde']."</td><td>".$row['teamheim']."</td><td>".$row['teamaus']."</td><td>".$row['lokal']."</td><td>".$row['datum']."</td><td>".$row['time']."</td><td>".$row['verlegt']."</td></tr>";
      }
  
  } else {
    echo "Noch kein Spielplan für Liga C1 vorhanden!";
  }

  echo "</table>";

meine Frage hierzu ist es möglich nur eine SQL abfrage zu tätigen und dann die Ausgabe zu machen nach den Spieltagen (in der Tabelle das Feld runden)? Hoffe ihr versteht was ich meine sollte sich ja vom Code her erklären.

Danke schon einmal für Euere hilfe
 
Zuletzt bearbeitet:
Hi

zuerst einmal sollest du ganz schnell die mysql_* - Funktionen loswerden.
Die Art, von PHP aus auf DBs zuzugreifen, existiert in neuen PHP-Versionen überhaupt nicht mehr (und funktioniert daher eben auch nicht) (Für die Funktionen selbst gibt es seit über 10 Jahren einen besseren Ersatz).
Siehe Mysqli (genug Beispielcodes im Internet, und ziemlich ähnlich zur alten Variante).

Zum Problem selbst: Ist es wichtig, wirklich nur eine Abfrage zur DB zu senden, oder geht es eher darum, nicht den ganzen Code zweimal zu haben? Ersteres wäre nämlich etwas umständlicher statt einfacher.
 
Es geht mir darum das ganze zu verkürzen denn bei zum beispiel 12 Teams ergibt das ganze 20 Spieltage heißt das es bei diesem Code die SQL 20 mal gemacht werden müsste und ich das ganze jede Saison umbauen muss da nicht immer 12 Teams pro Liga sind auch weniger oder mehr . damit auch mehr oder weniger Spieltage.,

Fazit: hätte es gerne Variabel aber Ausgabe pro Spieltag .......

mysqli wollte ich versuchen um zu bauen jetzt in meinem Urlaub tue mich da aber sehr schwer mit 50J. lernt mann nicht mehr so leicht muss ich eingestehen.Und es ist ja nicht nur das eine hier sondern es handelt sich um eine HP mit einer kompletten Liga Verwaltung die ich vor 3 Jahren angefangen hab zu Programieren.

Hab es mal auf mysqli umgebaut

PHP:
$db_link = mysqli_connect (
                     MYSQL_HOST, 
                     MYSQL_BENUTZER, 
                     MYSQL_KENNWORT, 
                     MYSQL_DATENBANK
                    );
$sql = "SELECT
        *
      FROM
          mhdl_liga
        WHERE
            liga = 'c1' AND runde = 1 AND saison = ".SAISON."
      ORDER BY
          runde ASC"; 
 $db_erg = mysqli_query( $db_link, $sql );
if ( ! $db_erg )
{
  die('Ungültige Abfrage: ' . mysqli_error());
}
 echo "<h2><center>Spielplan Liga C1</h2>";
echo "<h3><center>Spieltag 1</h3>";
  echo("<center><table border=\"1\">\n");
  echo "<tr class=colorGrey><th>Spieltag</th><th>Heimteam</th><th>Auswärtsteam</th><th>Spielort</th><th>Spieltag</th><th>Anwurf</th><th>Verlegt</th></tr>";

while ($zeile = mysqli_fetch_array( $db_erg, MYSQL_ASSOC))
{
  echo "<tr>";
  echo "<td>". $zeile['runde'] . "</td>";
  echo "<td>". $zeile['teamheim'] . "</td>";
  echo "<td>". $zeile['teamaus'] . "</td>";
  echo "<td>". $zeile['lokal'] . "</td>";
  echo "<td>". $zeile['datum'] . "</td>";
  echo "<td>". $zeile['time'] . "</td>";
  echo "<td>". $zeile['verlegt'] . "</td>";
  echo "</tr>";
}
echo "</table>";

mysqli_free_result( $db_erg ); 
$sql1 = "SELECT
        *
      FROM
          mhdl_liga
        WHERE
            liga = 'c1' AND runde = 2 AND saison = ".SAISON."
      ORDER BY
          runde ASC"; 
 $db_erg = mysqli_query( $db_link, $sql1 );
if ( ! $db_erg )
{
  die('Ungültige Abfrage: ' . mysqli_error());
}
echo "<h3><center>Spieltag 2</h3>";
  echo("<center><table border=\"1\">\n");
  echo "<tr class=colorGrey><th>Spieltag</th><th>Heimteam</th><th>Auswärtsteam</th><th>Spielort</th><th>Spieltag</th><th>Anwurf</th><th>Verlegt</th></tr>";

while ($zeile = mysqli_fetch_array( $db_erg, MYSQL_ASSOC))
{
  echo "<tr>";
  echo "<td>". $zeile['runde'] . "</td>";
  echo "<td>". $zeile['teamheim'] . "</td>";
  echo "<td>". $zeile['teamaus'] . "</td>";
  echo "<td>". $zeile['lokal'] . "</td>";
  echo "<td>". $zeile['datum'] . "</td>";
  echo "<td>". $zeile['time'] . "</td>";
  echo "<td>". $zeile['verlegt'] . "</td>";
  echo "</tr>";
}
echo "</table>";

mysqli_free_result( $db_erg );
 
Zuletzt bearbeitet:
Zuerst alles in ein Array mit der Runde als Key, dann diesen abarbeiten
PHP:
$sql = "
    select *
    from mhdl_liga
    where liga = 'c1' and saison = ".SAISON."
    order by runde asc";

$rs = mysqli_query($db_link, $sql);

//Array mit allen Runden => Spiele definieren
$runden = array();
while ($zeile = mysqli_fetch_array( $rs, MYSQL_ASSOC)){
    $runden[$zeile['runde']] = $zeile;
}

//Und dann den Rundenarray ausgeben
foreach($runden as $runde => $spiel){
    echo "<h3><center>Spieltag {$runde}</h3>";
    echo("<center><table border=\"1\">\n");
    echo "<tr class=colorGrey><th>Spieltag</th><th>Heimteam</th><th>Auswärtsteam</th><th>Spielort</th><th>Spieltag</th><th>Anwurf</th><th>Verlegt</th></tr>";
     
    while ($zeile = mysqli_fetch_array( $db_erg, MYSQL_ASSOC))
    {
      echo "<tr>";
      echo "<td>{$spiel['runde']}</td>";
      echo "<td>{$spiel['teamheim']}</td>";
      echo "<td>{$spiel['teamaus']}</td>";
      echo "<td>{$spiel['lokal']}</td>";
      echo "<td>{$spiel['datum']}</td>";
      echo "<td>{$spiel['time']}</td>";
      echo "<td>{$spiel['verlegt']}</td>";
      echo "</tr>";
    }
    echo "</table>";
}
 
Zuerst alles in ein Array mit der Runde als Key, dann diesen abarbeiten
PHP:
$sql = "
    select *
    from mhdl_liga
    where liga = 'c1' and saison = ".SAISON."
    order by runde asc";

$rs = mysqli_query($db_link, $sql);

//Array mit allen Runden => Spiele definieren
$runden = array();
while ($zeile = mysqli_fetch_array( $rs, MYSQL_ASSOC)){
    $runden[$zeile['runde']] = $zeile;
}

//Und dann den Rundenarray ausgeben
foreach($runden as $runde => $spiel){
    echo "<h3><center>Spieltag {$runde}</h3>";
    echo("<center><table border=\"1\">\n");
    echo "<tr class=colorGrey><th>Spieltag</th><th>Heimteam</th><th>Auswärtsteam</th><th>Spielort</th><th>Spieltag</th><th>Anwurf</th><th>Verlegt</th></tr>";
   
    while ($zeile = mysqli_fetch_array( $db_erg, MYSQL_ASSOC))
    {
      echo "<tr>";
      echo "<td>{$spiel['runde']}</td>";
      echo "<td>{$spiel['teamheim']}</td>";
      echo "<td>{$spiel['teamaus']}</td>";
      echo "<td>{$spiel['lokal']}</td>";
      echo "<td>{$spiel['datum']}</td>";
      echo "<td>{$spiel['time']}</td>";
      echo "<td>{$spiel['verlegt']}</td>";
      echo "</tr>";
    }
    echo "</table>";
}
Danke für die Antwort irgendwo muss ein Fehler sein er gibt mir nun die Tabellen aus in der menge der Spieltage aber ohne die Daten while ($zeile = mysqli_fetch_array( $db_erg, MYSQL_ASSOC))"; scheint falsch zu sein da die Variable $db_erg nirgends vorkommt oder ?
 
Zuletzt bearbeitet:
Ups, da waren gleich mehrere Fehler drin.
PHP:
$sql = "
    select *
    from mhdl_liga
    where liga = 'c1' and saison = ".SAISON."
    order by runde asc";

$rs = mysqli_query($db_link, $sql);

//Array mit allen Runden => Spiele definieren
$runden = array();
while ($spiel = mysqli_fetch_array( $rs, MYSQL_ASSOC)){
    $runden[$zeile['runde']][] = $spiel;
}

//Und dann den Rundenarray ausgeben
foreach($runden as $runde => $spiele){
    echo "<h3><center>Spieltag {$runde}</h3>";
    echo("<center><table border=\"1\">\n");
    echo "<tr class=colorGrey><th>Spieltag</th><th>Heimteam</th><th>Auswärtsteam</th><th>Spielort</th><th>Spieltag</th><th>Anwurf</th><th>Verlegt</th></tr>";
     
    foreach($spiele as $spiel){
      echo "<tr>";
      echo "<td>{$spiel['runde']}</td>";
      echo "<td>{$spiel['teamheim']}</td>";
      echo "<td>{$spiel['teamaus']}</td>";
      echo "<td>{$spiel['lokal']}</td>";
      echo "<td>{$spiel['datum']}</td>";
      echo "<td>{$spiel['time']}</td>";
      echo "<td>{$spiel['verlegt']}</td>";
      echo "</tr>";
    }
    echo "</table>";
}
 
Ups, da waren gleich mehrere Fehler drin.
PHP:
$sql = "
    select *
    from mhdl_liga
    where liga = 'c1' and saison = ".SAISON."
    order by runde asc";
$rs = mysqli_query($db_link, $sql);

//Array mit allen Runden => Spiele definieren
$runden = array();
while ($spiel = mysqli_fetch_array( $rs, MYSQL_ASSOC)){
    $runden[$zeile['runde']][] = $spiel;
}

//Und dann den Rundenarray ausgeben
foreach($runden as $runde => $spiele){
    echo "<h3><center>Spieltag {$runde}</h3>";
    echo("<center><table border=\"1\">\n");
    echo "<tr class=colorGrey><th>Spieltag</th><th>Heimteam</th><th>Auswärtsteam</th><th>Spielort</th><th>Spieltag</th><th>Anwurf</th><th>Verlegt</th></tr>";
  
    foreach($spiele as $spiel){
      echo "<tr>";
      echo "<td>{$spiel['runde']}</td>";
      echo "<td>{$spiel['teamheim']}</td>";
      echo "<td>{$spiel['teamaus']}</td>";
      echo "<td>{$spiel['lokal']}</td>";
      echo "<td>{$spiel['datum']}</td>";
      echo "<td>{$spiel['time']}</td>";
      echo "<td>{$spiel['verlegt']}</td>";
      echo "</tr>";
    }
    echo "</table>";
}
Dieser Code ergibt die 2 Version der erste code ergibt Version 1
1Version
bild1.PNG
2.Version
bild2.PNG
wenn die ausgabe so wäre wie bei bild 1 wäre es das was ich möchte nicht wie bei bild 2 sondender das alle spiele von runde 1 bei Spieltag 1 stehen auf bild 1 und dann runde 2 bei Spieltag 2 usw.
 
Zuletzt bearbeitet:
So hab es hinbekommen ^^

PHP:
$sql = "
   select *
   from mhdl_liga
   where liga = 'c1' and saison = ".SAISON."
   order by runde asc";

$rs = mysqli_query($db_link, $sql);

//Array mit allen Runden => Spiele definieren
$runden = array();
while ($zeile = mysqli_fetch_array( $rs, MYSQL_ASSOC)){
    $runden[$zeile['runde']][] = $zeile;
}

//Und dann den Rundenarray ausgeben
foreach($runden as $runde => $spiel){
    echo "<h3><center>Spieltag {$runde}</h3>";
    echo("<center><table border=\"1\">\n");
    echo "<tr class=colorGrey><th>Spieltag</th><th>Heimteam</th><th>Auswärtsteam</th><th>Spielort</th><th>Spieltag</th><th>Anwurf</th><th>Verlegt</th></tr>";
     
    foreach($spiel as $spiele){
      echo "<tr>";
      echo "<td>{$spiele['runde']}</td>";
      echo "<td>{$spiele['teamheim']}</td>";
      echo "<td>{$spiele['teamaus']}</td>";
      echo "<td>{$spiele['lokal']}</td>";
      echo "<td>{$spiele['datum']}</td>";
      echo "<td>{$spiele['time']}</td>";
      echo "<td>{$spiele['verlegt']}</td>";
      echo "</tr>";
    }
    echo "</table>";
}

Danke für die hilfe an alle
 

Neue Beiträge

Zurück