Ankündigung

Einklappen
Keine Ankündigung bisher.

Tabelle speichern/drucken?

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Tabelle speichern/drucken?

    Hallo Forum,
    Ich brauche unbedingt ein wenig Starthilfe!
    Ich habe für eine Ligaverwaltung ein Spielplan-Script geschrieben, das baut aus den Teams und den verfügbaren Spielwochen den Plan auf, der so aussieht wie auf dem Bild.
    Jetzt muss der Sportwart in der Tabelle Spieltage verschieben können, das funktioniert auch.
    Aber irgendwann ist er fertig und möchte den Plan drucken/speichern. Da hapert es gerade.
    Wie bekomme ich die "aktuell angezeigten Daten" der Tabelle in ein array oder in eine db und kann man daraus ein pdf generieren?
    Hier mein bisheriger Code
    screenshot.71.jpg

    PHP-Code:
    <?php
        session_start
    ();
        
    $GLOBALS['SCRIPTNAME'] = basename(__FILE__);
        include(
    "header.php");
        
    $user check_user();
    #ScreenOut($_POST);
        
    if(isset($_POST['LIGA']) AND $_POST['LIGA']!="")
        {
            if (
    $_POST['LIGA']=="A")
            {
                
    $SQL_saison "SELECT NAME,START,ENDE,KW_AUSWAHL_A AS KW_AUSWAHL,RUNDEA AS RUNDE FROM saison WHERE STATE='1'";
                
    $SQL_teams="SELECT TEAMNAME FROM teams WHERE GEMELDET='1' AND LIGA='A' ORDER BY TEAMNAME";
            }    
            if (
    $_POST['LIGA']=="B")
            {
                
    $SQL_saison "SELECT NAME,START,ENDE,KW_AUSWAHL_B AS KW_AUSWAHL,RUNDEB AS RUNDE FROM saison WHERE STATE='1'";
                
    $SQL_teams="SELECT TEAMNAME FROM teams WHERE GEMELDET='1' AND LIGA='B' ORDER BY TEAMNAME";        
            }    
            if (
    $_POST['LIGA']=="C")
            {
                
    $SQL_saison "SELECT NAME,START,ENDE,KW_AUSWAHL_C AS KW_AUSWAHL,RUNDEC AS RUNDE FROM saison WHERE STATE='1'";
                
    $SQL_teams="SELECT TEAMNAME FROM teams WHERE GEMELDET='1' AND LIGA='C' ORDER BY TEAMNAME";        
            }    

        }
        if(isset(
    $GLOBALS['saison']))
        {
    #saisondaten holen        

            
    if(!$result $db->query($SQL_saison))
            { die(
    'Es ist ein Fehler aufgetreten!/n[' $db->error ' ]'); }
            else
            {
                while(
    $row $result->fetch_assoc())
                { 
    $saison $row; }
            }
            
    mysqli_free_result($result);
    #Teams holen        

            
    if(!$result $db->query($SQL_teams))
            { die(
    'Es ist ein Fehler aufgetreten!/n[' $db->error ' ]'); }
            else
            {    
                while(
    $row $result->fetch_assoc())
                { 
    $teams[] = $row['TEAMNAME']; }
            }
            
    mysqli_free_result($result);
    #spielpaarungen erstellen
            
    $arr1 spielplan($teams);
            if(
    $saison['RUNDE']==2)
            { 
                
    $arr2 spielplan($teams);
                
    $arrspiele array_merge_recursive($arr1,$arr2);
            }
            else{ 
    $arrspiele array_values($arr1); }
    #saison start/ende
            
    $saison_ende DateTime::createFromFormat('Y-m-d',$saison['ENDE']);
            
    $saison_start DateTime::createFromFormat('Y-m-d',$saison['START']);
    #spielfreie wochen    
            
    if ($saison['KW_AUSWAHL'] != "")
            { 
    $kwauswahl explode(";",$saison['KW_AUSWAHL']); }
            else { 
    $kwauswahl = array(); }
        }
        else
        {
            
    ?>
            <div class="test" style="text-align:center; color:red; margin-top:0;">
            <h3 style="color:red; text-align:center;">Fehler!<br>
            Es ist keine aktive Saison vorhanden!</h3>
            <a href= "index.php">weiter</a><br><br>
            <?php
                
    include("footer.php");
                
    ?>
            </div>
            <?php
            
    exit;
        }
    ?>
    <!-- ############################################################ -->
    <!-- inhalt bereich -->
    <!-- ############################################################ -->
     <div class="inhalt" id="pagestart">
        <div class="inhaltbox-a">
        <h2>Spielplan Gruppe <?php echo $_POST['LIGA']; ?> für die Saison <?php echo $saison['NAME']; ?></h2>
        <main role="main" class="container-fluid">
        <table class="table table-striped table-hover">
            <thead class="thead-dark">
                <tr>
                    <th>Spielwoche</th>
                    <th>Heim-Team</th>
                    <th>Auswärts-Team</th>
                </tr>
            </thead>
            <tbody>
    <?php
            
    for($i=0$i<count($arrspiele); $i++)
            {
                if(
    in_array($saison_start->format('o-W'),$kwauswahl))
                {
                    echo 
    '<tr><td><strong>KW ' $saison_start->format('o-W') . '</strong>&nbsp;&nbsp;(' KW_aufloesen($saison_start->format('o-W')) . ')</td><td colspan="2">Spielfrei</td></tr>';
                    
    $i--;
                }
                else
                {    
                    echo 
    '<tr><td><strong>KW ' $saison_start->format('o-W') . '</strong>&nbsp;&nbsp;(' KW_aufloesen($saison_start->format('o-W')) . ')</td><td>&nbsp;</td><td>&nbsp;</td></tr>';
                    foreach(
    $arrspiele[$i] as $spiel)
                    {
                        echo 
    '<tr><td>&nbsp;</td><td>'.$spiel['H'].'</td><td>'.$spiel['G'].'</td></tr>';
                    }
                }
                
    $saison_start->add(new DateInterval('P7D'));
            }
    ?>
            </tbody>
        </table>
        </main><!-- /.container -->
        <script type="text/javascript">
            $('tbody').sortable();
        </script>

        </div>
    </div>
    <?php
        
    include("footer.php");
    ?>
    </div>
    Wäre supertoll, wenn mir jemand einen Weg zeigen könnte, wie ich da weiterkomme
    LG Micha


  • #2
    Da die Tabelle clientseitig verschoben wird, könntest Du ein PrintCSS erstellen, mit dem Du dann bequem nur die Tabelle auf Deiner Seite drucken kannst.

    Btw. verzichte auf $GLOBALS und beachte den Kontextwechsel.
    Die Datenbank erscheint mir auch optimierungsfähig.
    Competence-Center -> Enjoy the Informatrix
    PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

    Kommentar


    • #3
      https://stackoverflow.com/questions/...nto-a-database

      https://api.jqueryui.com/sortable/#method-serialize

      Kommentar


      • #4
        Danke für Eure Hinweise, ich werde mich mal ransetzen, das abzuarbeiten.
        Die jquery-Geschichte ist in den Beispielen nur auf Listen bezogen, kann ich das auch so für Tabellen anwenden? Auf die <tr> Elemente?
        Und @arne: das PrintCss formatiert mir ja die Elemente für den Ausdruck. Werden dabei auch die aktuell verschobenen Tabelleneinträge berücksichtigt? Denn im Quellcode der Seite steht ja nach x-Verschiebungen immer noch die Originalversion drin...

        Kommentar


        • #5
          Das müsstest du ausprobieren, sollte aber eigentlich schon gehen. Die <tr> müssten aber eine id haben, die wird mit .serialize verwendet.

          Wenn du etwas googlest findest du da sicher etwas. Ich hab das bisher nur mit Listen verwendet.

          Kommentar


          • #6
            Zitat von Arne Drews Beitrag anzeigen
            Da die Tabelle clientseitig verschoben wird, könntest Du ein PrintCSS erstellen, mit dem Du dann bequem nur die Tabelle auf Deiner Seite drucken kannst.

            Btw. verzichte auf $GLOBALS und beachte den Kontextwechsel.
            Die Datenbank erscheint mir auch optimierungsfähig.
            Hallo Arne, das funktioniert schon super, toller tipp. Ich hab nur ein Problemchen damit:
            PHP-Code:
            if(in_array($saison_start->format('o-W'),$kwauswahl))
            {
            echo 
            '<tr><td id="subt"><strong>KW ' $saison_start->format('o-W') . '</strong>&nbsp;&nbsp;(' KW_aufloesen($saison_start->format('o-W')) . ')</td><td colspan="2">Spielfrei</td></tr>';
            $i--;
            }
            else
            {
            echo 
            '<tr><td id="subt" colspan="3"><strong>KW ' $saison_start->format('o-W') . '</strong>&nbsp;&nbsp;(' KW_aufloesen($saison_start->format('o-W')) . ')</td></tr>';
            foreach(
            $arrspiele[$i] as $spiel)
            {
            echo 
            '<tr><td>&nbsp;</td><td>'.$spiel['H'].'</td><td>'.$spiel['G'].'</td></tr>';
            }

            Ich würde gerne, dass innerhalb dieses Blocks oben kein Seitenumbruch druchgeführt wird. Geht sowas? Ich hab schon mit page-break: void probiert, aber das hat alles nicht geklappt.

            Kommentar


            • #7
              Zitat von doofi Beitrag anzeigen
              das PrintCss formatiert mir ja die Elemente für den Ausdruck. Werden dabei auch die aktuell verschobenen Tabelleneinträge berücksichtigt?
              Ja, werden sie. Und alles was du siehst wird auch gedruckt.
              Zitat von doofi Beitrag anzeigen
              Denn im Quellcode der Seite steht ja nach x-Verschiebungen immer noch die Originalversion drin...
              Das ist richtig so, denn der Quellcode ist derjenige der vom Server heruntergeladen wurde. Verwende die Browserwerkzeuge um Änderungen im Code zu sehen. Taste F12.

              Wenn du nur eine Seite haben willst dann musst du dein Print CSS anpassen. blende aus was du nicht haben willst, das musst du aber ausprobieren.
              Du kannst ja mal deine Seite mit print CSS zeigen, dan kann mal drüberschauen ob alles richtig umgesetzt wurde.

              Kommentar

              Lädt...
              X